-
Notifications
You must be signed in to change notification settings - Fork 132
api
Using painlessMesh is painless!
First include the library and create an painlessMesh object like this…
#include <painlessMesh.h>
painlessMesh mesh;
void painlessMesh::init(String ssid, String password, uint16_t port = 5555, enum nodeMode connectMode = STA_AP, _auth_mode authmode = AUTH_WPA2_PSK, uint8_t channel = 1, phy_mode_t phymode = PHY_MODE_11G, uint8_t maxtpw = 82, uint8_t hidden = 0, uint8_t maxconn = 4)
Add this to your setup() function. Initialize the mesh network. This routine does the following things.
- Starts a wifi network
- Begins searching for other wifi networks that are part of the mesh
- Logs on to the best mesh network node it finds… if it doesn’t find anything, it starts a new search in 5 seconds.
ssid
= the name of your mesh. All nodes share same AP ssid. They are distinguished by BSSID.
password
= wifi password to your mesh.
port
= the TCP port that you want the mesh server to run on. Defaults to 5555 if not specified.
connectMode
= switch between AP_ONLY, STA_ONLY and STA_AP (default) mode
Add this to your loop() function This routine runs various maintainance tasks... Not super interesting, but things don't work without it.
Set a callback routine for any messages that are addressed to this node. Callback routine has the following structure.
void receivedCallback( uint32_t from, String &msg )
Every time this node receives a message, this callback routine will the called. “from” is the id of the original sender of the message, and “msg” is a string that contains the message. The message can be anything. A JSON, some other text string, or binary data.
This fires every time the local node makes a new connection. The callback has the following structure.
void newConnectionCallback( uint32_t nodeId )
nodeId
is new connected node ID in the mesh.
This fires every time there is a change in mesh topology. Callback has the following structure.
void onChangedConnections()
There are no parameters passed. This is a signal only.
Returns if a given node is currently connected to the mesh.
nodeId
is node ID that the request refers to.
This fires every time local time is adjusted to synchronize it with mesh time. Callback has the following structure.
void onNodeTimeAdjusted(int32_t offset)
offset
is the adjustment delta that has benn calculated and applied to local clock.
This fires when a time delay masurement response is received, after a request was sent. Callback has the following structure.
void onNodeDelayReceived(uint32_t nodeId, int32_t delay)
nodeId
The node that originated response.
delay
One way network trip delay in nanoseconds.
Sends msg to every node on the entire mesh network.
returns true if everything works, false if not. Prints an error message to Serial.print, if there is a failure.
Sends msg to the node with Id == dest.
returns true if everything works, false if not. Prints an error message to Serial.print, if there is a failure.
Returns mesh topology in JSON format.
Get a list of all known nodes. This includes nodes that are both directly and indirectly connected to the current node.
Return the chipId of the node that we are running on.
Returns the mesh timebase microsecond counter. Rolls over 71 minutes from startup of the first node.
Nodes try to keep a common time base synchronizing to each other using an SNTP based protocol
Sends a node a packet to measure network trip delay to that node. Returns true if nodeId is connected to the mesh, false otherwise. After calling this function, user program have to wait to the response in the form of a callback specified by void painlessMesh::onNodeDelayReceived(nodeDelayCallback_t onDelayReceived)
.
nodeDelayCallback_t is a funtion in the form of void (uint32_t nodeId, int32_t delay)
.