Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] opensprinkler json parsen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    484

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

[gelöst] opensprinkler json parsen

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 4 Kommentatoren 1.2k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    PrinzEisenherz1
    schrieb am zuletzt editiert von PrinzEisenherz1
    #1

    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=a6d82bced638de3def1e9bbb4983225c
    

    und 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

    Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

    paul53P 1 Antwort Letzte Antwort
    0
    • P PrinzEisenherz1

      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=a6d82bced638de3def1e9bbb4983225c
      

      und 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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      E 1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        PrinzEisenherz1
        schrieb am zuletzt editiert von
        #3

        Super. Vielen Dank. Hat super geklappt. Danke

        Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

        1 Antwort Letzte Antwort
        0
        • V Offline
          V Offline
          vondefenn
          schrieb am zuletzt editiert von vondefenn
          #4

          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)

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            PrinzEisenherz1
            schrieb am zuletzt editiert von
            #5

            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

            Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @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.

              E Offline
              E Offline
              Elluminatus
              schrieb am zuletzt editiert von Elluminatus
              #6

              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:

              1. statt unter "0_userdata.0.Rainbird.Kreis" liegen bei mir die Punkte in Javascript unter "javascript.0.opensprinkler.kreis".
              2. 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!

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              707

              Online

              32.5k

              Benutzer

              81.8k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe