Files
mixly3-server/arduino-libs/arduino-cli/libraries/painlessMesh-master/test/wifi/wifi.ino

89 lines
2.8 KiB
C++

//************************************************************
// this is a simple example that uses the easyMesh library
//
// 1. blinks led once for every node on the mesh
// 2. blink cycle repeats every BLINK_PERIOD
// 3. sends a silly message to every node on the mesh at a random time between 1
// and 5 seconds
// 4. prints anything it receives to Serial.print
//
//
//************************************************************
#include "painlessmesh/configuration.hpp"
#include "painlessMeshConnection.h"
#include "painlessmesh/mesh.hpp"
#include "painlessmesh/tcp.hpp"
#include "plugin/performance.hpp"
using namespace painlessmesh;
using namespace logger;
painlessmesh::Mesh<MeshConnection> mesh;
std::shared_ptr<AsyncServer> pServer;
WiFiEventId_t eventSTADisconnectedHandler;
WiFiEventId_t eventSTAGotIPHandler;
void setup() {
Serial.begin(115200);
Log.setLogLevel(ERROR | CONNECTION | DEBUG);
uint8_t mac[] = {0, 0, 0, 0, 0, 0};
/*auto _apIp = IPAddress(10, (nodeId & 0xFF00) >> 8, (nodeId & 0xFF), 1);
IPAddress netmask(255, 255, 255, 0);
WiFi.softAPConfig(_apIp, _apIp, netmask);*/
WiFi.softAP("otatest", "somethingSneaky", 6);
if (WiFi.softAPmacAddress(mac) == 0) {
Log(ERROR, "init(): WiFi.softAPmacAddress(MAC) failed.\n");
}
auto nodeId = painlessmesh::tcp::encodeNodeId(mac);
if (nodeId == 0) Log(ERROR, "NodeId set to 0\n");
Log(ERROR, "Bla %u\n", nodeId);
mesh.init(nodeId);
mesh.setRoot(true);
plugin::performance::begin(mesh);
pServer = std::make_shared<AsyncServer>(5555);
painlessmesh::tcp::initServer<MeshConnection>((*pServer), mesh);
eventSTAGotIPHandler = WiFi.onEvent(
[&](WiFiEvent_t event, WiFiEventInfo_t info) {
// if (this->semaphoreTake()) {
Log(CONNECTION, "eventSTAGotIPHandler: SYSTEM_EVENT_STA_GOT_IP\n");
AsyncClient *pConn = new AsyncClient();
painlessmesh::tcp::connect<MeshConnection>(
(*pConn), IPAddress(192, 168, 1, 69), 5555, mesh);
// this->tcpConnect(); // Connect to TCP port
// this->semaphoreGive();
//}
},
WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP);
eventSTADisconnectedHandler = WiFi.onEvent(
[](WiFiEvent_t event, WiFiEventInfo_t info) {
//if (this->semaphoreTake()) {
Log(CONNECTION,
"eventSTADisconnectedHandler: SYSTEM_EVENT_STA_DISCONNECTED\n");
// WiFi.disconnect();
// Search for APs and connect to the best one
//this->stationScan.connectToAP();
//this->semaphoreGive();
//}
},
WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED);
WiFi.setAutoConnect(true);
WiFi.begin("BigBird", "eendolleman");
Log(CONNECTION, "Beginning\n");
mesh.addTask(TASK_SECOND, TASK_FOREVER, []() {
Log(CONNECTION, "Connected? %d\n", WiFi.status() == WL_CONNECTED);
});
}
void loop() { mesh.update(); }