Hi,
seitdem von der ESP Seite 4 Werte geliefert werden können ist die geänderte Abfrageroutine mit ´nem Fehler belastet; ![:banghead: :banghead:](https://community.symcon.de/uploads/default/original/3X/c/8/c8d91dcf13509ff6b50a14cc9b368280666bc8d5.gif?v=9)
evtl. stolpert ja hier jemand drüber und korrigiert.
Für nicht zeitkritische Anwendungsfälle nutze ich immer häufiger dann doch das Polling per json.
Dieses Script wird jede Minute aufgerufen:
<?
// 1.ter Step: Polling
if (GetValueBoolean(39337 /*[Technik\Tracking\Ping\091]*/)== true){
$json_string = Sys_GetURLContent("http://192.168.113.91/json");
$json = json_decode($json_string); // $json_string in ein Objekt $json überführen.
if ($json->Sensors[0]->Voltage != 0) SetValueFloat(21056 /*[Technik\Spielwiese\ESP32-EVB-1\INA219 Li-Po Batterie Spannung]*/, $json->Sensors[0]->Voltage);
SetValueFloat(22739 /*[Technik\Spielwiese\ESP32-EVB-1\INA219 Li-Po Batterie Strom]*/, $json->Sensors[0]->Current*1000);
SetValueFloat(27414 /*[Technik\Spielwiese\ESP32-EVB-1\INA219 Li-Po Batterie Leistung]*/, $json->Sensors[0]->Power*1000);
}
IPS_Sleep(1000);
if (GetValueBoolean(17049 /*[Technik\Tracking\Ping\092]*/)== true){
$json_string = Sys_GetURLContent("http://192.168.113.92/json");
$json = json_decode($json_string); // $json_string in ein Objekt $json überführen.
if ($json->Sensors[4]->Voltage != 0) SetValueFloat(38473 /*[Technik\Spielwiese\ESP32-EVB-2\INA219 Li-Po Batterie Spannung]*/, $json->Sensors[4]->Voltage);
SetValueFloat(39181 /*[Technik\Spielwiese\ESP32-EVB-2\INA219 Li-Po Batterie Strom]*/, $json->Sensors[4]->Current*1000);
SetValueFloat(10082 /*[Technik\Spielwiese\ESP32-EVB-2\INA219 Li-Po Batterie Leistung]*/, $json->Sensors[4]->Power*1000);
}
IPS_Sleep(1000);
if (GetValueBoolean(31220 /*[Technik\Tracking\Ping\093]*/)== true){
$json_string = Sys_GetURLContent("http://192.168.113.93/json");
$json = json_decode($json_string); // $json_string in ein Objekt $json überführen.
if ($json->Sensors[0]->Voltage != 0) SetValueFloat(30451 /*[Technik\Spielwiese\ESP32-EVB-3\INA219 Li-Po Batterie Spannung]*/, $json->Sensors[0]->Voltage);
SetValueFloat(10069 /*[Technik\Spielwiese\ESP32-EVB-3\INA219 Li-Po Batterie Strom]*/, $json->Sensors[0]->Current*1000);
SetValueFloat(10066 /*[Technik\Spielwiese\ESP32-EVB-3\INA219 Li-Po Batterie Leistung]*/, $json->Sensors[0]->Power*1000);
}
// Entwicklungshilfskrücken:
//print_r($json);
//var_dump($json[0]->System->Sensors[4]->Voltage); // 1. Route, 1. Objekt legs, Entferung, Text
//var_dump($json->System->Uptime);
//var_dump($json->Sensors[4]->Voltage);
//var_dump($json->Sensors[4]->Current);
//var_dump($json->Sensors[4]->Power);
?>
und fragt 3 Systeme ab.
Zum Spielen einfach mal im Browser:
http://192.168.xxx.xxx/json
eingeben, sich die Struktur anschauen;
hier mal für den 091er:
{"System":{
"Build":20100,
"Git Build":"(custom)",
"Local time":"2018-05-18 14:36:09",
"Unit":1,
"Uptime":4491,
"Free RAM":83004
},
"Sensors":[
{
"tasknr":1,
"TaskName":"INA219",
"Type":"Energy (DC) - INA219",
"Voltage":32.764,
"Current":-0.000,
"Power":-0.002
},
{
"tasknr":2,
"TaskName":"uptime",
"Type":"Generic - System Info",
"":4490
},
{
"tasknr":3,
"TaskName":"WebAccess",
"Type":"Generic - System Info",
"":270061
},
{
"tasknr":4,
"TaskName":"Relais 1",
"Type":"Switch input - Switch",
"Switch":0
},
{
"tasknr":5,
"TaskName":"Relais 2",
"Type":"Switch input - Switch",
"Switch":0
}
]}
und dann sollte sich der zu ändernde Inhalt des Scriptes von selbst ergeben. :rolleyes:
Als erstes wird mit Hilfe von Steiners Script nachgeschaut ob dieses Device im LAN verfügbar ist; nur dann werden die Werte geholt.
Viel Spass beim Basteln wünscht,
mfg
BerndJ