diff --git a/Arduino/BTCDieselHeater/BTCWebServer.cpp b/Arduino/BTCDieselHeater/BTCWebServer.cpp index 3881845..e2b4817 100644 --- a/Arduino/BTCDieselHeater/BTCWebServer.cpp +++ b/Arduino/BTCDieselHeater/BTCWebServer.cpp @@ -27,6 +27,7 @@ #include "helpers.h" #include "pins.h" #include "Index.h" +#include extern void Command_Interpret(const char* pLine); // decodes received command lines, implemented in main .ino file! @@ -35,6 +36,8 @@ WebSocketsServer webSocket = WebSocketsServer(81); bool bRxWebData = false; bool bTxWebData = false; +DynamicJsonBuffer jsonBuffer(512); // create a JSON buffer on the heap + const int led = 13; void handleRoot() { @@ -60,6 +63,7 @@ void handleNotFound() { } void initWebServer(void) { + if (MDNS.begin("BTCHeater")) { DebugPort.println("MDNS responder started"); @@ -72,6 +76,7 @@ void initWebServer(void) { webSocket.begin(); webSocket.onEvent(webSocketEvent); DebugPort.println("HTTP server started"); + } unsigned char cVal; @@ -83,14 +88,24 @@ bool doWebServer(void) { if(numClients) { if(millis() > lastTx) { // moderate the delivery of new messages - we simply cannot send every pass of the main loop! lastTx = millis() + 1000; - char msg[16]; + + JsonObject& root = jsonBuffer.createObject(); + root["CurrentTemp"] = getActualTemperature(); + root["RunState"] = getHeaterInfo().getRunState(); + root["DesiredTemp"] = getHeaterInfo().getTemperature_Desired(); + + String jsonToSend; + root.printTo(jsonToSend); + webSocket.broadcastTXT(jsonToSend); + +/* char msg[16]; sprintf(msg, "CurrentTemp,%d",getActualTemperature()); webSocket.broadcastTXT(msg); bTxWebData = true; sprintf(msg, "PowerState,%i",getHeaterInfo().getRunState()); webSocket.broadcastTXT(msg); sprintf(msg, "TempDesired,%i",getHeaterInfo().getTemperature_Desired()); - webSocket.broadcastTXT(msg); + webSocket.broadcastTXT(msg);*/ } return true; } diff --git a/Arduino/BTCDieselHeater/mainpage.cpp b/Arduino/BTCDieselHeater/mainpage.cpp index 2b6a80f..9da8192 100644 --- a/Arduino/BTCDieselHeater/mainpage.cpp +++ b/Arduino/BTCDieselHeater/mainpage.cpp @@ -11,33 +11,41 @@ const char* MAIN_PAGE PROGMEM = R"=====( Socket.onmessage = function(event){ console.log("msg rec", event.data); - var msgArray = event.data.split(","); // split message by delimiter into a string array - console.log("msgArray", msgArray[0]); - console.log("msgArray", msgArray[1]); - console.log("msgArray", msgArray[2]); - console.log("msgArray", msgArray[3]); - var indicator = msgArray[1]; // the first element in the message array is the ID of the object to update - console.log("indicator", indicator); - if (indicator) // if an object by the name of the message exists, update its value or its attributes - { - switch (msgArray[0]) - { - case "CurrentTemp": - document.getElementById("TempCurrent").innerHTML = msgArray[1]; - break; - case "PowerState": - if (msgArray[1] == 0){ - document.getElementById("myonoffswitch").checked = false; - break; - } else { - document.getElementById("myonoffswitch").checked = true; - break; - } - case "TempDesired": - document.getElementById("slide").value = msgArray[1]; - break; - } - } + var heater = JSON.parse(event.data); + console.log("JSON current temp", heater.CurrentTemp); + console.log("JSON run state", heater.RunState); + console.log("JSON desired temp", heater.DesiredTemp); + document.getElementById("TempCurrent").innerHTML = heater.CurrentTemp; + document.getElementById("RunState").innerHTML = heater.CurrentTemp; + document.getElementById("TempDesired").innerHTML = heater.DesiredTemp; + +// var msgArray = event.data.split(","); // split message by delimiter into a string array +// console.log("msgArray", msgArray[0]); +// console.log("msgArray", msgArray[1]); +// console.log("msgArray", msgArray[2]); +// console.log("msgArray", msgArray[3]); +// var indicator = msgArray[1]; // the first element in the message array is the ID of the object to update +// console.log("indicator", indicator); +// if (indicator) // if an object by the name of the message exists, update its value or its attributes +// { +// switch (msgArray[0]) +// { +// case "CurrentTemp": +// document.getElementById("TempCurrent").innerHTML = msgArray[1]; +// break; +// case "PowerState": +// if (msgArray[1] == 0){ +// document.getElementById("myonoffswitch").checked = false; +// break; +// } else { +// document.getElementById("myonoffswitch").checked = true; +// break; +// } +// case "TempDesired": +// document.getElementById("slide").value = msgArray[1]; +// break; +// } +// } } }