diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz index 8c7bb6f3..910785a1 100644 Binary files a/data_svelte/build/bundle.css.gz and b/data_svelte/build/bundle.css.gz differ diff --git a/data_svelte/build/bundle.js.gz b/data_svelte/build/bundle.js.gz index 0db852d1..2d726583 100644 Binary files a/data_svelte/build/bundle.js.gz and b/data_svelte/build/bundle.js.gz differ diff --git a/data_svelte/index.html b/data_svelte/index.html index ffbfd6f5..4a70048b 100644 --- a/data_svelte/index.html +++ b/data_svelte/index.html @@ -4,12 +4,12 @@ - IoT Manager 4.4.5 + IoT Manager 4.4.6 - + - + diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp index 250af529..32620625 100644 --- a/src/DeviceList.cpp +++ b/src/DeviceList.cpp @@ -37,10 +37,10 @@ void addThisDeviceToList() { AsyncUDP asyncUdp; void udpListningInit() { - // если был включен автоматический поиск устройств - if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { - if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 4210)) { - asyncUdp.onPacket([](AsyncUDPPacket packet) { + if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 4210)) { + asyncUdp.onPacket([](AsyncUDPPacket packet) { + // если был включен автоматический поиск устройств то начнем запись в оперативную память + if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { // Serial.print("UDP Packet Type: "); // Serial.println(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast"); // Serial.print("From: "); @@ -55,8 +55,8 @@ void udpListningInit() { // Serial.print(packet.length()); // Serial.print(", Data: "); // Serial.write(packet.data(), packet.length()); - // String data = {packet.data(), packet.length()}; // для ESP32 подходит как замена uint8tToString, но 8266 не переваривает + String data = uint8tToString(packet.data(), packet.length()); String remoteWorkgroup = ""; data.replace("[", ""); @@ -67,21 +67,25 @@ void udpListningInit() { if (remoteWorkgroup == loacalWorkgroup) { SerialPrint("i", F("UDP"), "IP: " + packet.remoteIP().toString() + ":" + String(packet.remotePort())); jsonMergeArrays(devListHeapJson, data); + // эксперементальный вариант отправки нового списка сразу по приходу + // sendStringToWs("devlis", devListHeapJson, -1); } } else { SerialPrint("E", F("UDP"), F("Udp packet invalid")); } + // reply to the client // String ip = WiFi.localIP().toString(); // asyncUdp.broadcastTo(ip.c_str(), packet.remotePort()); // packet.printf(ip.c_str(), packet.length()); - }); - } - SerialPrint("i", F("UDP"), F("Udp listning inited")); - } else { - devListHeapJson = ""; + } else { + devListHeapJson = ""; + } + }); } + + SerialPrint("i", F("UDP"), F("Udp listning inited")); } void udpBroadcastInit() { diff --git a/src/WsServer.cpp b/src/WsServer.cpp index aa7cd24f..822dc881 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -428,10 +428,11 @@ void sendStringToWs(const String& header, String& payload, int client_id) { void sendDeviceList(uint8_t num) { if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { // если включен автопоиск то отдаем список из оперативной памяти - SerialPrint("E", "FS", devListHeapJson); + SerialPrint("i", "FS", "heap list"); sendStringToWs("devlis", devListHeapJson, num); } else { // если выключен автопоиск то отдаем список из флешь памяти sendFileToWsByFrames("/devlist.json", "devlis", "", num, WEB_SOCKETS_FRAME_SIZE); + SerialPrint("i", "FS", "flash list"); } }