//************************************************************ // this is a simple example that uses the painlessMesh library to // connect to a another network and broadcast message from a webpage to the edges of the mesh network. // This sketch can be extended further using all the abilities of the AsyncWebserver library (WS, events, ...) // for more details // https://gitlab.com/painlessMesh/painlessMesh/wikis/bridge-between-mesh-and-another-network // for more details about my version // https://gitlab.com/Assassynv__V/painlessMesh // and for more details about the AsyncWebserver library // https://github.com/me-no-dev/ESPAsyncWebServer //************************************************************ #include "IPAddress.h" #include "painlessMesh.h" #ifdef ESP8266 #include "Hash.h" #include #else #include #endif #include #define MESH_PREFIX "whateverYouLike" #define MESH_PASSWORD "somethingSneaky" #define MESH_PORT 5555 #define STATION_SSID "mySSID" #define STATION_PASSWORD "myPASSWORD" #define HOSTNAME "HTTP_BRIDGE" // Prototype void receivedCallback( const uint32_t &from, const String &msg ); IPAddress getlocalIP(); painlessMesh mesh; AsyncWebServer server(80); IPAddress myIP(0,0,0,0); IPAddress myAPIP(0,0,0,0); void setup() { Serial.begin(115200); mesh.setDebugMsgTypes( ERROR | STARTUP | CONNECTION ); // set before init() so that you can see startup messages // Channel set to 6. Make sure to use the same channel for your mesh and for you other // network (STATION_SSID) mesh.init( MESH_PREFIX, MESH_PASSWORD, MESH_PORT, WIFI_AP_STA, 6 ); mesh.onReceive(&receivedCallback); mesh.stationManual(STATION_SSID, STATION_PASSWORD); mesh.setHostname(HOSTNAME); // Bridge node, should (in most cases) be a root node. See [the wiki](https://gitlab.com/painlessMesh/painlessMesh/wikis/Possible-challenges-in-mesh-formation) for some background mesh.setRoot(true); // This node and all other nodes should ideally know the mesh contains a root, so call this on all nodes mesh.setContainsRoot(true); myAPIP = IPAddress(mesh.getAPIP()); Serial.println("My AP IP is " + myAPIP.toString()); //Async webserver server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/html", "
Text to Broadcast


"); if (request->hasArg("BROADCAST")){ String msg = request->arg("BROADCAST"); mesh.sendBroadcast(msg); } }); server.begin(); } void loop() { mesh.update(); if(myIP != getlocalIP()){ myIP = getlocalIP(); Serial.println("My IP is " + myIP.toString()); } } void receivedCallback( const uint32_t &from, const String &msg ) { Serial.printf("bridge: Received from %u msg=%s\n", from, msg.c_str()); } IPAddress getlocalIP() { return IPAddress(mesh.getStationIP()); }