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");
}
}