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