Я создаю ячеистую сеть с использованием ESP8266, здесь я использую два ESP-01 в качестве клиентов и nodemcu в качестве сервера.
Я использую библиотеку painlessMesh для того же.Он работает нормально, я получаю значения на сервер в виде JSON.Но проблема в том, что теперь я должен подключиться к локальному WiFi-соединению, чтобы опубликовать эти данные для пользователей.безболезненная сетка может создать мост mqtt для передачи этих данных клиенту mqtt, но он должен быть в том же канале, что и маршрутизатор WiFi.Я пробовал это, но это кажется немного сложным.
Есть ли какой-нибудь способ, которым мы можем завершить вышеуказанную задачу сетки и подключиться к Интернету, используя библиотеку Wi-Fi Arduino.
// Prototype for the msg received from other nodes
void receivedCallback( uint32_t from, String &msg );
// create a task instance to send msg to client nodes
Task logServerTask(10000, TASK_FOREVER, []() {
DynamicJsonBuffer jsonBuffer;
JsonObject& msg = jsonBuffer.createObject();
msg["server"] = "logServer";
msg["nodeId"] = mesh.getNodeId();
String str;
msg.printTo(str);
mesh.sendBroadcast(str);
Serial.printf("\n");
});
void setup() {
Serial.begin(115200);
mesh.setDebugMsgTypes( ERROR | CONNECTION | S_TIME ); // set before
init()
//initialise the mesh
mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT,
WIFI_AP_STA, 6 );
mesh.onReceive(&receivedCallback);
mesh.stationManual(STATION_SSID, STATION_PASSWORD);
mesh.setHostname(HOSTNAME);
client.setClient(wifiClient);
client.setServer(mqtt_server,1883);
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() {
userScheduler.execute(); // it will run mesh scheduler as well
mesh.update();
client.loop();
while(!client.connected()){
if(client.connect("ESP8266Client123456789")){
client.subscribe("thermalValues");
client.subscribe("thermalValues1");
}
else{
Serial.print("failed,rc=");
Serial.println(client.state());
delay(500);
}
}
}
//callback to the received messages from different nodes
void receivedCallback( uint32_t from, String &msg ) {
//callback received
}