diff --git a/Network.cpp b/Network.cpp index e54c2af..f855179 100644 --- a/Network.cpp +++ b/Network.cpp @@ -48,10 +48,9 @@ void Network::loop() { } void Network::emitSockets() { if(WiFi.status() == WL_CONNECTED) { - if(abs(abs(WiFi.RSSI()) - abs(this->lastRSSI)) > 2 || WiFi.channel() != this->lastChannel) { char buf[128]; - sprintf(buf, "{\"ssid\":\"%s\",\"strength\":%d,\"channel\":%d}", WiFi.SSID(), WiFi.RSSI(), WiFi.channel()); + snprintf(buf, sizeof(buf), "{\"ssid\":\"%s\",\"strength\":%d,\"channel\":%d}", WiFi.SSID(), WiFi.RSSI(), WiFi.channel()); sockEmit.sendToClients("wifiStrength", buf); this->lastRSSI = WiFi.RSSI(); this->lastChannel = WiFi.channel(); diff --git a/Sockets.cpp b/Sockets.cpp index 1f9b5ef..2b35aad 100644 --- a/Sockets.cpp +++ b/Sockets.cpp @@ -16,7 +16,7 @@ char g_buffer[1024]; * ClientSocketEvent class members ********************************************************************/ void ClientSocketEvent::prepareMessage(const char *evt, const char *payload) { - sprintf(this->msg, "42[%s,%s]", evt, payload); + snprintf(this->msg, sizeof(this->msg), "42[%s,%s]", evt, payload); } @@ -33,6 +33,7 @@ void SocketEmitter::begin() { void SocketEmitter::loop() { sockServer.loop(); } +/* bool SocketEmitter::sendToClients(const char *evt, JsonObject &obj) { serializeJson(obj, g_buffer, sizeof(g_buffer)); return this->sendToClients(evt, g_buffer); @@ -41,6 +42,7 @@ bool SocketEmitter::sendToClient(uint8_t num, const char *evt, JsonObject &obj) serializeJson(obj, g_buffer, sizeof(g_buffer)); return this->sendToClient(num, evt, g_buffer); } +*/ bool SocketEmitter::sendToClients(const char *evt, const char *payload) { if(settings.status == DS_FWUPDATE) return true; this->evt.prepareMessage(evt, payload); @@ -62,7 +64,7 @@ void SocketEmitter::wsEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t { IPAddress ip = sockServer.remoteIP(num); Serial.printf("Socket [%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload); - // Send all the current Sensor readings to the client. + // Send all the current shade settings to the client. sockServer.sendTXT(num, "Connected"); settings.emitSockets(); somfy.emitState(num); @@ -84,5 +86,9 @@ void SocketEmitter::wsEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t // send message to client // sockServer.sendBIN(num, payload, length); break; + case WStype_PING: + Serial.printf("Ping from %u\n", num); + break; + } } diff --git a/Sockets.h b/Sockets.h index 53389b7..2c1310c 100644 --- a/Sockets.h +++ b/Sockets.h @@ -17,8 +17,8 @@ class SocketEmitter { void disconnect(); bool sendToClients(const char *evt, const char *data); bool sendToClient(uint8_t num, const char *evt, const char *data); - bool sendToClients(const char *evt, JsonObject &obj); - bool sendToClient(uint8_t num, const char *evt, JsonObject &obj); + //bool sendToClients(const char *evt, JsonObject &obj); + //bool sendToClient(uint8_t num, const char *evt, JsonObject &obj); static void wsEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t length); }; #endif diff --git a/Somfy.cpp b/Somfy.cpp index f005282..6fe533a 100644 --- a/Somfy.cpp +++ b/Somfy.cpp @@ -604,7 +604,8 @@ void SomfyShade::moveToTarget(uint8_t target) { Serial.print("% using "); Serial.println(translateSomfyCommand(cmd)); this->target = target; - this->seekingPos = true; + if(target > 0 && target != 100) this->seekingPos = true; + else this->seekingPos = false; SomfyRemote::sendCommand(cmd); } diff --git a/SomfyController.ino.esp32.bin b/SomfyController.ino.esp32.bin index b025b17..11f4815 100644 Binary files a/SomfyController.ino.esp32.bin and b/SomfyController.ino.esp32.bin differ diff --git a/SomfyController.littlefs.bin b/SomfyController.littlefs.bin index 1bed716..6ed296c 100644 Binary files a/SomfyController.littlefs.bin and b/SomfyController.littlefs.bin differ diff --git a/data/index.html b/data/index.html index 54db206..43705be 100644 --- a/data/index.html +++ b/data/index.html @@ -6,6 +6,7 @@ @@ -1645,7 +1657,8 @@ }); }); - initSockets(); + (async () => { await initSockets(); })(); + //initSockets();