First play with ArduinoJson library and javascript JSON.parse() - too fucking easy!
This commit is contained in:
parent
f4a52afd42
commit
43d35493c0
2 changed files with 52 additions and 29 deletions
|
@ -27,6 +27,7 @@
|
|||
#include "helpers.h"
|
||||
#include "pins.h"
|
||||
#include "Index.h"
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
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() {
|
||||
|
@ -61,6 +64,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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue