Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Hydrawise (Bewässerungsseuerung)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hydrawise (Bewässerungsseuerung)

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      micha68 last edited by

      Hi!
      Leider kann ich keinen Adapter bauen, habe aber ein Skript zusammengewürfelt, dass die Daten aus der Api zieht. Leider gibt API1 nicht viel her - zb nicht die Wassermenge meines Sensors "Wasseruhr". Ich habe Hunter mal angemailt, ob es für API2 eine Doku gibt.

      schedule('* * * * *', function(){
      
      var url="https://app.hydrawise.com/api/v1/statusschedule.php?api_key=xxxx-xxxx-xxxx-xxxx"
      request({url : url}, function (error, response, body) {
                      CreateRelays(JSON.parse(body));
      });
      
      var url="https://app.hydrawise.com/api/v1/customerdetails.php?api_key=xxxx-xxxx-xxxx-xxxx"
      request({url : url}, function (error, response, body) {
                      CreateCustomer(JSON.parse(body));
      });
      
      })
      
      function CreateCustomer(data){
      //log(data.controllers);
      if (existsState('javascript.0.hydrawise.user_lastcontact')==false)
          {
          createState('javascript.0.hydrawise.user_lastcontact');
          }
          setState('javascript.0.hydrawise.user_lastcontact', data.controllers[0].last_contact );
      
      if (existsState('javascript.0.hydrawise.user_status')==false)
          {
          createState('javascript.0.hydrawise.user_status');
          }
          setState('javascript.0.hydrawise.user_status', data.controllers[0].status );
      }
      
      function CreateRelays(data){
       
      if ("undefined" !== typeof  data.relays){    
          //log(data.relays);
      
      var i;
          for (i = 0; i < data.relays.length; i++) 
      {
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_id')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_id');
          }
          setState('javascript.0.hydrawise.relay'+i+'_id', data.relays[i].relay_id );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_time')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_time');
          }
          setState('javascript.0.hydrawise.relay'+i+'_time', data.relays[i].time );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_run')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_run');
          }
          setState('javascript.0.hydrawise.relay'+i+'_run', data.relays[i].run );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_run_min')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_run_min');
          }
          setState('javascript.0.hydrawise.relay'+i+'_run_min', Math.round(data.relays[i].run/60) );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_name')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_name');
          }
          setState('javascript.0.hydrawise.relay'+i+'_name', data.relays[i].name );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_period')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_period');
          }
          setState('javascript.0.hydrawise.relay'+i+'_period', data.relays[i].period );
      
          if (existsState('javascript.0.hydrawise.relay'+i+'_timestr')==false)
          {
          createState('javascript.0.hydrawise.relay'+i+'_timestr');
          }
          setState('javascript.0.hydrawise.relay'+i+'_timestr', data.relays[i].timestr );    
      }
        
      if ("undefined" !== typeof  data.sensors){    
      log (data.sensors);
      var i;
          for (i = 0; i < data.sensors.length; i++) 
      {
          //log(data.sensors);
      }
      }
      
      }
      else{console.warn('Response in JSON nicht gefunden ! ')}
       
      }
      
      1 Reply Last reply Reply Quote 0
      • integer63
        integer63 last edited by

        @micha68 Oh, ich hatte nicht erwartet, dass auf meinen Post vom Juni 2017 noch mal jemand reagieren würde 😳
        Ich habe dein Skript gleich mal ausprobiert und es füllt die Datenpunkte mit dem, was die Hydrawise API halt an Daten liefert. Ich hatte noch ein veraltetes Skript laufen, bei dem ursprünglich mal mehr Datenpunkte ausgelesen wurden, aber die API hat sich wohl zwischenzeitlich geändert und wurde abgespeckt ☹
        Kannst du mir sagen was für eine Zeitangabe hinter "period" steckt? Der Wert hat sich heute noch nicht geändert 🤔

        1 Reply Last reply Reply Quote 0
        • M
          micha68 last edited by micha68

          Hi!

          Period habe ich noch nicht heraus gefunden.
          Bei mir steht da 259200. Wenn man das herunter rechnet, kommt man auf 72h. Das hat aber nichts mit meinen Beregnungszeiten zu tun.

          Es gibt auch noch mehr Datenpunkte, wie zB Deinen Namen etc. - die habe ich aber aus Mangel an Bedarf nicht ausgewertet. Bei Bedarf kann ich das aber erweitern. Welche fehlen Dir denn?

          Wenn du die log-Anweisungen mal reinkommentierst im Skript (also die // weg machen) dann siehst du unten im log, was da an Daten von der API kommt.

          Es gibt auch ein pdf über die API1 von Hydrawise, das ist aber nicht aktuell.

          Was mich interessiert: Wie viele Ventile hast Du denn verbaut? Ich drei, und die werden auch ausgelesen. Sollten es mehr oder weniger sein, sollte das Script auch funktionieren (also egal ob 1 oder 2 oder sogar 12)

          Gruß
          Micha

          1 Reply Last reply Reply Quote 0
          • integer63
            integer63 last edited by

            @micha68 ja, bei mir steht da auch 259200 und auch ich kann damit (72h) so gar nichts anfangen. Früher gab es mal die Info, wie lange die letzte Bewässerung her war:
            2020-04-23 15_12_08-Window.png
            Aber der ist nicht mehr dabei. Wenn man einfach den HTTP Aufruf im Browser eingibt, sieht man ja auch, welche Daten zurückkommen.

            Ich habe insgesamt 6 Ventile (5 Kreise + Master) und alle 5 werden ausgelesen. Die fehlenden Daten wie Name, Seriennummer und Device ID habe ich schon reingebastelt, aber da sie diese Daten normalerweise nicht ändern (zumindest bei mir nicht), ist das recht sinn befreit 🙄

            Das es ein Master Ventil gibt, wird auch angezeigt:
            2020-04-23 15_24_42-Window.png

            1 Reply Last reply Reply Quote 0
            • integer63
              integer63 last edited by integer63

              @micha68 ... und ich habe hier noch die alte (v1.3) API Doku gefunden - da waren schon ein paar interessante Infos drin:
              2020-04-23 15_42_11-Window.png

              PS: und vieles mehr - hier ist einfach die ganze Doku:
              Hydrawise API.pdf

              Echt schade, dass das alles weg ist 😭

              M 1 Reply Last reply Reply Quote 0
              • M
                micha68 @integer63 last edited by

                @integer63

                Ohja, die Daten wären super. Auch Wetter und so...schade

                Ich hatte ja Hunter angefragt wegen API2, habe aber keine Antwort bisher...

                Schaumerma...

                1 Reply Last reply Reply Quote 0
                • E
                  Erstam Developer last edited by

                  Hallo zusammen!

                  Da ich vor der gleichen Herausforderung stehe, habe ich auch nach der API2 gefragt, allerdings folgendeInfo erhalten: "The GraphQL API will not provide any more detail than the RestAPI, the only difference is that it allows for commercial connection to multiple controllers." Sieht also nicht gut aus.

                  Viele Grüße!

                  Marc

                  1 Reply Last reply Reply Quote 0
                  • M
                    micha68 last edited by

                    Hi!

                    Die gleiche Antwort habe ich vorhin auch bekommen.
                    Schade. Ich hatte die Hoffnung, da noch mehr Daten raus zu holen.

                    Könnte man die Website parsen? Ich weiß halt nicht, wie man da den Login per skript realisiert 😞

                    Gruß
                    Micha

                    1 Reply Last reply Reply Quote 0
                    • D
                      DSLMann last edited by

                      API2 ist wohl jetzt möglich ?
                      https://support.hydrawise.com/hc/en-us/articles/360008965753-Account-API-Information

                      1 Reply Last reply Reply Quote 0
                      • MassiveAttack
                        MassiveAttack last edited by

                        tut sich da noch was? wäre auch interessant für mich...

                        1 Reply Last reply Reply Quote 0
                        • S
                          sunny9999 last edited by

                          Wäre auch noch daran interessiert, die Bewässerungssaison naht und wäre schön meine Hydrawise in den IO zu integrieren...
                          Ist da noch jemand dran bzw. hat da etwas am laufen ?

                          1 Reply Last reply Reply Quote 0
                          • Q
                            qwertz last edited by

                            Hi Micha !

                            Das Skript läuft mit meinem PRO-HC12 und holt den Relaystatus. Besten Dank !

                            Steuern kann man mit dem Skript nicht, richtig ?

                            Das klappt bei mir manuell über einen PHP-Aufruf gut, z.B.: https://api.hydrawise.com/api/v1/setzone.php?action=run&api_key=meinKEY&period_id=999&relay_id=3004643&custom=120

                            Wenn ich die Lese-JSON im Browser aufrufe bekomme ich noch mehr Daten zu meinen Sensoren (Hunter Wasserzähler und Hunter Regensensor). Kann bei Bedarf hier die JSON-Daten zur Verfügung stellen, wenn jemand Muße hat, die in die Abfrage einzubauen.

                            Bildschirmfoto 2021-02-23 um 16.06.57.png Bildschirmfoto 2021-02-23 um 16.06.57.png

                            Besten Gruß,
                            Sebastian

                            M 1 Reply Last reply Reply Quote 0
                            • J
                              Janne16 last edited by

                              So wie ich es in der Beschreibung lese, sollte es gehen... der Wert ist allerdings im obigen Script noch nicht definiert.

                              Jaywalker 1 Reply Last reply Reply Quote 0
                              • Jaywalker
                                Jaywalker @Janne16 last edited by Jaywalker

                                @janne16 Moin zusammen, ich bin als Autor ganz neu hier. Vergebt mir, wenn ich noch manches suchen muss, aber ich freue mich, wenn ich der Community endlich mal was zurückgeben kann 😊 Mitgelesen (und abgeschrieben) habe ich schon sooft 😂

                                ich hab das Skript von Micha68 oben ergänzt bei mir und nun werden auch Sensordaten vom Regensensor abgerufen. Ich kann zwar mit den Daten noch nichts anfangen, habe auch noch keine Testberegnung durchgeführt um zu schauen, was sich ändert, aber ich wollte schonmal die Chance zum Testen geben:
                                Im obigen Skript kann die Zeile 87 durch folgendes ersetzt werden:

                                    if (existsState('javascript.0.hydrawise.sensor'+i+'_input')==false)
                                    {
                                    createState('javascript.0.hydrawise.sensor'+i+'_input');
                                    }
                                    setState('javascript.0.hydrawise.sensor'+i+'_input', data.sensors[i].input );
                                
                                    if (existsState('javascript.0.hydrawise.sensor'+i+'_mode')==false)
                                    {
                                    createState('javascript.0.hydrawise.sensor'+i+'_mode');
                                    }
                                    setState('javascript.0.hydrawise.sensor'+i+'_mode', data.sensors[i].mode );
                                
                                    if (existsState('javascript.0.hydrawise.sensor'+i+'_timer')==false)
                                    {
                                    createState('javascript.0.hydrawise.sensor'+i+'_timer');
                                    }
                                    setState('javascript.0.hydrawise.sensor'+i+'_timer', data.sensors[i].timer );
                                
                                    ```
                                if (existsState('javascript.0.hydrawise.sensor'+i+'_offtimer')==false)
                                    {
                                    createState('javascript.0.hydrawise.sensor'+i+'_offtimer');
                                    }
                                    setState('javascript.0.hydrawise.sensor'+i+'_offtimer', data.sensors[i].offtimer );
                                

                                PS: ich verstehe nicht, warum, aber ich musste einmal den Hydrawise-Objektbaum unterhalb des Javaskript-Ordners löschen und dann wurde alles inkl. Sensordaten neu aufgebaut.
                                PS2: ich habe einen Regensensor, ich weiß nicht, ob es weitere Sensoren gibt bzw. welche Art und welche Parameter diese dann haben. Bei Qwertz sieht es aus, als gibt es noch einen Parameter "Rate" für den Sensor 0. Dafür müsste es reichen, wenn diese drei Zeilen ergänzt werden. Das kann ich aber nicht testen (Sensoren, die diesen Parameter nicht haben, behalten dort Wert=(null) ) :

                                  if (existsState('javascript.0.hydrawise.sensor'+i+'_rate')==false)
                                    {
                                    createState('javascript.0.hydrawise.sensor'+i+'_rate');
                                    }
                                    setState('javascript.0.hydrawise.sensor'+i+'_rate', data.sensors[i].rate );
                                

                                Gruß
                                Jaywalker

                                1 Reply Last reply Reply Quote 0
                                • M
                                  mpenno @qwertz last edited by

                                  Hi @qwertz ,

                                  Ich hätte Interesse an Deine Abfrage, da ich auch einen Wasserzähler angeschlossen habe.

                                  Viele Grüße
                                  Michael

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  874
                                  Online

                                  32.0k
                                  Users

                                  80.4k
                                  Topics

                                  1.3m
                                  Posts

                                  10
                                  16
                                  4401
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo