79 lines
2.4 KiB
C++
79 lines
2.4 KiB
C++
//************************************************************
|
|
// this is a simple example that uses the painlessMesh library to
|
|
// setup a single node (this node) as a logging node
|
|
// The logClient example shows how to configure the other nodes
|
|
// to log to this server
|
|
//************************************************************
|
|
#include "painlessMesh.h"
|
|
|
|
#define MESH_PREFIX "whateverYouLike"
|
|
#define MESH_PASSWORD "somethingSneaky"
|
|
#define MESH_PORT 5555
|
|
|
|
Scheduler userScheduler; // to control your personal task
|
|
painlessMesh mesh;
|
|
// Prototype
|
|
void receivedCallback( uint32_t from, String &msg );
|
|
|
|
|
|
// Send my ID every 10 seconds to inform others
|
|
Task logServerTask(10000, TASK_FOREVER, []() {
|
|
#if ARDUINOJSON_VERSION_MAJOR==6
|
|
DynamicJsonDocument jsonBuffer(1024);
|
|
JsonObject msg = jsonBuffer.to<JsonObject>();
|
|
#else
|
|
DynamicJsonBuffer jsonBuffer;
|
|
JsonObject& msg = jsonBuffer.createObject();
|
|
#endif
|
|
msg["topic"] = "logServer";
|
|
msg["nodeId"] = mesh.getNodeId();
|
|
|
|
String str;
|
|
#if ARDUINOJSON_VERSION_MAJOR==6
|
|
serializeJson(msg, str);
|
|
#else
|
|
msg.printTo(str);
|
|
#endif
|
|
mesh.sendBroadcast(str);
|
|
|
|
// log to serial
|
|
#if ARDUINOJSON_VERSION_MAJOR==6
|
|
serializeJson(msg, Serial);
|
|
#else
|
|
msg.printTo(Serial);
|
|
#endif
|
|
Serial.printf("\n");
|
|
});
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
|
|
//mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE | DEBUG ); // all types on
|
|
//mesh.setDebugMsgTypes( ERROR | CONNECTION | SYNC | S_TIME ); // set before init() so that you can see startup messages
|
|
mesh.setDebugMsgTypes( ERROR | CONNECTION | S_TIME ); // set before init() so that you can see startup messages
|
|
|
|
mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT, WIFI_AP_STA, 6 );
|
|
mesh.onReceive(&receivedCallback);
|
|
|
|
mesh.onNewConnection([](size_t nodeId) {
|
|
Serial.printf("New Connection %u\n", nodeId);
|
|
});
|
|
|
|
mesh.onDroppedConnection([](size_t nodeId) {
|
|
Serial.printf("Dropped Connection %u\n", nodeId);
|
|
});
|
|
|
|
// Add the task to the your scheduler
|
|
userScheduler.addTask(logServerTask);
|
|
logServerTask.enable();
|
|
}
|
|
|
|
void loop() {
|
|
// it will run the user scheduler as well
|
|
mesh.update();
|
|
}
|
|
|
|
void receivedCallback( uint32_t from, String &msg ) {
|
|
Serial.printf("logServer: Received from %u msg=%s\n", from, msg.c_str());
|
|
}
|