NEWS
[gelöst] opensprinkler json parsen
-
Hi zusammen,
ich betreibe bei mir zuhause eine Bewässerungsanlage auf Basis von Rainbird und OpensprinklerPi (Vers: 2.1.9).
Jetzt würde ich gerne über die API die Laufzeiten erfassen.
Die API-url sieht da wie folgt aus:http://192.168.178.41:8080/js?pw=a6d82bced638de3def1e9bbb4983225cund die Ausgabe sieht wie folgt aus
{"sn":[0,0,0,0,0,0,0,0],"nstations":8}Die Ausgabe bedeutet das es max 8 Regenkreise sind und die jeweiligen 0 das die Station nicht läuft.
Würde Station 1 bzw Kreis 1 laufen dann würde das so aussehen:{"sn":[1,0,0,0,0,0,0,0],"nstations":8}Wie kann ich das json am besten parsen um die Kreise in eienm jeweiligen Datenpunkt zu erhalten?
Gruß
Johnny -
Hi zusammen,
ich betreibe bei mir zuhause eine Bewässerungsanlage auf Basis von Rainbird und OpensprinklerPi (Vers: 2.1.9).
Jetzt würde ich gerne über die API die Laufzeiten erfassen.
Die API-url sieht da wie folgt aus:http://192.168.178.41:8080/js?pw=a6d82bced638de3def1e9bbb4983225cund die Ausgabe sieht wie folgt aus
{"sn":[0,0,0,0,0,0,0,0],"nstations":8}Die Ausgabe bedeutet das es max 8 Regenkreise sind und die jeweiligen 0 das die Station nicht läuft.
Würde Station 1 bzw Kreis 1 laufen dann würde das so aussehen:{"sn":[1,0,0,0,0,0,0,0],"nstations":8}Wie kann ich das json am besten parsen um die Kreise in eienm jeweiligen Datenpunkt zu erhalten?
Gruß
Johnny@PrinzEisenherz1
Vorschlag:const url = 'http://192.168.178.41:8080/js?pw=a6d82bced638de3def1e9bbb4983225c'; const dpPath = '0_userdata.0.Rainbird.Kreis'; // 8 Datenpunkte "Kreis1 ... 8", Typ "boolean" schedule('* * * * *', function() { // jede Minute request(url, function(error, response, result) { let arr = JSON.parse(result).sn; for(let i = 0; i < arr.length; i++) { setState(dpPath + (i + 1), !!arr[i], true); } }); });Die 8 Datenpunkte müssen vorher unter "0_userdata.0" erstellt werden.
-
Super. Vielen Dank. Hat super geklappt. Danke
-
Hi, endlich mal noch jemand mit diesem vollkommen genialen Opensprinkler Board ;)
Gucke mal in die 2.2 Version (spezieller MQTT tree), da soll eine MQTT Implementierung drin sein.
Hat den Vorteil dass du nicht aktiv per cron und API den Status abfragen musst, sondern Änderungen direkt über den MQTT Adapter im ioBroker in Realtime gepushed kriegst und dann bei Änderungen auf den Status im Script 'normal' reagieren kannst.[https://opensprinkler.com/forums/topic/timeplan-firmware-2-20/](link url)
ich setze übigens schon seit 8 Jahren für das raspi-Board die alternative 'SIP' Firmware von Dan in CA ein (hieß vormals OSPI); die hat die MQTT Implementierung schon seit Jahren.
[https://dan-in-ca.github.io/SIP/](link url)
-
Super,danke für die Info. Frage zu SIP, gibt es dafür auch ein App? Und kann SIP auch Zimmerman und Eto?
Gruß Johnny
-
@PrinzEisenherz1
Vorschlag:const url = 'http://192.168.178.41:8080/js?pw=a6d82bced638de3def1e9bbb4983225c'; const dpPath = '0_userdata.0.Rainbird.Kreis'; // 8 Datenpunkte "Kreis1 ... 8", Typ "boolean" schedule('* * * * *', function() { // jede Minute request(url, function(error, response, result) { let arr = JSON.parse(result).sn; for(let i = 0; i < arr.length; i++) { setState(dpPath + (i + 1), !!arr[i], true); } }); });Die 8 Datenpunkte müssen vorher unter "0_userdata.0" erstellt werden.
Hallo, ich habe diese Lösung umgesetzt. Vielen Dank für die Hilfe wie man diese Punkte richtig parsen kann.
Ich habe zwei Sachen verändert:- statt unter "0_userdata.0.Rainbird.Kreis" liegen bei mir die Punkte in Javascript unter "javascript.0.opensprinkler.kreis".
- Ich frage alle 15 Sekunden ab
Alles läuft wie gewünscht.
const url = 'http://10.0.1.175/js?pw=24e24cb0a659595c91c840c448ebe5'; const dpPath = 'javascript.0.opensprinkler.kreis'; // 8 Datenpunkte "Kreis1 ... 8", Typ "boolean" schedule('*/15 * * * * *', function() { // jede Minute request(url, function(error, response, result) { let arr = JSON.parse(result).sn; for(let i = 0; i < arr.length; i++) { setState(dpPath + (i + 1), !!arr[i], true); } }); });Danke für Eure Hilfe...
Beste Grüße Elluminatus!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden