Code cleanup

Clean up code for version 1.0.9
This commit is contained in:
Robert Strouse 2023-02-02 14:17:02 -08:00
parent 92ea0f6c99
commit 0ab2444104
7 changed files with 35 additions and 16 deletions

View file

@ -48,10 +48,9 @@ void Network::loop() {
} }
void Network::emitSockets() { void Network::emitSockets() {
if(WiFi.status() == WL_CONNECTED) { if(WiFi.status() == WL_CONNECTED) {
if(abs(abs(WiFi.RSSI()) - abs(this->lastRSSI)) > 2 || WiFi.channel() != this->lastChannel) { if(abs(abs(WiFi.RSSI()) - abs(this->lastRSSI)) > 2 || WiFi.channel() != this->lastChannel) {
char buf[128]; 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); sockEmit.sendToClients("wifiStrength", buf);
this->lastRSSI = WiFi.RSSI(); this->lastRSSI = WiFi.RSSI();
this->lastChannel = WiFi.channel(); this->lastChannel = WiFi.channel();

View file

@ -16,7 +16,7 @@ char g_buffer[1024];
* ClientSocketEvent class members * ClientSocketEvent class members
********************************************************************/ ********************************************************************/
void ClientSocketEvent::prepareMessage(const char *evt, const char *payload) { 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() { void SocketEmitter::loop() {
sockServer.loop(); sockServer.loop();
} }
/*
bool SocketEmitter::sendToClients(const char *evt, JsonObject &obj) { bool SocketEmitter::sendToClients(const char *evt, JsonObject &obj) {
serializeJson(obj, g_buffer, sizeof(g_buffer)); serializeJson(obj, g_buffer, sizeof(g_buffer));
return this->sendToClients(evt, 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)); serializeJson(obj, g_buffer, sizeof(g_buffer));
return this->sendToClient(num, evt, g_buffer); return this->sendToClient(num, evt, g_buffer);
} }
*/
bool SocketEmitter::sendToClients(const char *evt, const char *payload) { bool SocketEmitter::sendToClients(const char *evt, const char *payload) {
if(settings.status == DS_FWUPDATE) return true; if(settings.status == DS_FWUPDATE) return true;
this->evt.prepareMessage(evt, payload); 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); 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); 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"); sockServer.sendTXT(num, "Connected");
settings.emitSockets(); settings.emitSockets();
somfy.emitState(num); 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 // send message to client
// sockServer.sendBIN(num, payload, length); // sockServer.sendBIN(num, payload, length);
break; break;
case WStype_PING:
Serial.printf("Ping from %u\n", num);
break;
} }
} }

View file

@ -17,8 +17,8 @@ class SocketEmitter {
void disconnect(); void disconnect();
bool sendToClients(const char *evt, const char *data); bool sendToClients(const char *evt, const char *data);
bool sendToClient(uint8_t num, 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 sendToClients(const char *evt, JsonObject &obj);
bool sendToClient(uint8_t num, 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); static void wsEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t length);
}; };
#endif #endif

View file

@ -604,7 +604,8 @@ void SomfyShade::moveToTarget(uint8_t target) {
Serial.print("% using "); Serial.print("% using ");
Serial.println(translateSomfyCommand(cmd)); Serial.println(translateSomfyCommand(cmd));
this->target = target; this->target = target;
this->seekingPos = true; if(target > 0 && target != 100) this->seekingPos = true;
else this->seekingPos = false;
SomfyRemote::sendCommand(cmd); SomfyRemote::sendCommand(cmd);
} }

Binary file not shown.

Binary file not shown.

View file

@ -6,6 +6,7 @@
<link rel="stylesheet" href="main.css" type="text/css" /> <link rel="stylesheet" href="main.css" type="text/css" />
<link rel="stylesheet" href="icons.css" type="text/css" /> <link rel="stylesheet" href="icons.css" type="text/css" />
<script> <script>
//{"ssid":"Casa Del Mar Resort and Spa 2.4","strength":-53,"channel":2}
/******* SPRING TYPE BLUE ********/ /******* SPRING TYPE BLUE ********/
/******** E07-M1101D-SMA *********/ /******** E07-M1101D-SMA *********/
// 1 Black: GND // 1 Black: GND
@ -1238,7 +1239,8 @@
var tConnect = null; var tConnect = null;
var sockIsOpen = false; var sockIsOpen = false;
var connecting = false; var connecting = false;
function initSockets() { var connects = 0;
async function initSockets() {
if (connecting) return; if (connecting) return;
console.log('Connecting to socket...'); console.log('Connecting to socket...');
connecting = true; connecting = true;
@ -1250,7 +1252,6 @@
} }
waitMessage(document.getElementById('divContainer')).classList.add('socket-wait'); waitMessage(document.getElementById('divContainer')).classList.add('socket-wait');
try { try {
console.log(location);
socket = new WebSocket(`ws://${window.location.hostname}:8080/`); socket = new WebSocket(`ws://${window.location.hostname}:8080/`);
socket.onmessage = (evt) => { socket.onmessage = (evt) => {
if (evt.data.startsWith('42')) { if (evt.data.startsWith('42')) {
@ -1298,22 +1299,33 @@
console.log({ msg: 'open', evt: evt }); console.log({ msg: 'open', evt: evt });
sockIsOpen = true; sockIsOpen = true;
connecting = false; connecting = false;
connects++;
let wms = document.getElementsByClassName('socket-wait'); let wms = document.getElementsByClassName('socket-wait');
for (let i = 0; i < wms.length; i++) { for (let i = 0; i < wms.length; i++) {
wms[i].remove(); wms[i].remove();
} }
}; };
socket.onclose = (evt) => { socket.onclose = (evt) => {
waitMessage(document.getElementById('divContainer')).classList.add('socket-wait'); if(document.getElementsByClassName('socket-wait') === 0)
waitMessage(document.getElementById('divContainer')).classList.add('socket-wait');
if (evt.wasClean) { if (evt.wasClean) {
console.log({ msg: 'close-clean', evt: evt }); console.log({ msg: 'close-clean', evt: evt });
tConnect = setTimeout(() => { reopenSocket(); }, 10000); tConnect = setTimeout(async () => { await reopenSocket(); }, 10000);
console.log('Reconnecting socket in 10 seconds'); console.log('Reconnecting socket in 10 seconds');
} }
else { else {
console.log({ msg: 'close-died', reason: evt.reason, evt: evt, sock: socket }); console.log({ msg: 'close-died', reason: evt.reason, evt: evt, sock: socket });
tConnect = setTimeout(() => { reopenSocket(); }, 3000); if (connects > 0) {
console.log('Reconnecting socket in 3 seconds');
tConnect = setTimeout(async () => { await reopenSocket(); }, 3000);
}
else {
console.log('Connecting socket in .5 seconds');
tConnect = setTimeout(async () => { await reopenSocket(); }, 500);
}
} }
connecting = false;
}; };
socket.onerror = (evt) => { socket.onerror = (evt) => {
console.log({ msg: 'socket error', evt: evt, sock: socket }); console.log({ msg: 'socket error', evt: evt, sock: socket });
@ -1322,13 +1334,13 @@
console.log({ console.log({
msg: 'Websocket connection error', err: err msg: 'Websocket connection error', err: err
}); });
tConnect = setTimeout(() => { reopenSocket(); }, 5000); tConnect = setTimeout(async () => { await reopenSocket(); }, 5000);
} }
} }
function reopenSocket() { async function reopenSocket() {
if (tConnect) clearTimeout(tConnect); if (tConnect) clearTimeout(tConnect);
tConnect = null; tConnect = null;
initSockets(); await initSockets();
} }
</script> </script>
</head> </head>
@ -1645,7 +1657,8 @@
}); });
}); });
initSockets(); (async () => { await initSockets(); })();
//initSockets();
</script> </script>
</body> </body>
</html> </html>