Я использую модуль ESP32 Wifi в качестве ведущего устройства для размещения веб-страницы, отображающей значения числа двоичных точек данных в таблице как OK
или FAILED
. Мне нужно, чтобы это устройство получало данные от другого клиента ESP32 по локальному IP-адресу, т.е. 192.168.138.50/readVal1
, этот адрес будет отображать просто плоский текст OK
или FAILED
. Я хотел бы взять это значение и отобразить его в таблице, созданной моим мастер-модулем. Как мне это сделать?
Я попытался использовать HTTP-запрос get следующим образом в коде Arduino.
void runTest6(){
String payload;
HTTPClient http;
http.begin("192.168.137.50/readBatt1");
int httpCode = http.GET();
if(httpCode > 0) {
payload = http.getString();
Serial.println(payload);
}else{
Serial.println("HTTP request error");
}
http.end();
String batt6val = payload;
server.send(200, "text/plane", batt6val);
}
Вот мой Javascript в корне, который обрабатывает обновления \
function getData(){
try{
console.log("Getting Data...");
for(var i = 1;i<=NUMOFUNITS;i++){
(function (i){
setTimeout(function () {
console.log("(debug msg)in loop #: " + i)
var xhttp = new XMLHttpRequest();
var current = "batt" + i + "val";
var dataRead = "readBatt" + i;
xhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
console.log("updating innerHTML for data value: " + i);
document.getElementById(current).innerHTML = this.responseText;
}else if(this.readyState == 4 && this.status == 404){
console.log("no battery @ " + i);
document.getElementById(current).innerHTML = "None found";
}
};
xhttp.open("GET", dataRead, true);
xhttp.send();
if(i == 1){
updateTime();
console.log("Updated times.")
}
}, 400*i);
})(i);
};
console.log("Data update complete.");
}
catch(err){
alert(err.name);
throw err;
getData(); //try to get data again
}
finally{
console.log("DONE");
}
}