Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfe bei Gardena API

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Hilfe bei Gardena API

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      intruder7 @dslraser last edited by intruder7

      @J-A-R-V-I-S
      @dslraser
      Moin, ich habe das Thema mal aufgegriffen. Gleich vorweg.... Ich bin absolut nicht fit in Javascript. Es ist mehr so try and error . Deswegen komme ich auch nicht weiter und hoffe vielleicht etwas Hilfe zu bekommen.
      Hier mein Skript um ein Token zu erhalten. Die Logs geben innerhalb des Reqest den Token aus (Token1) aber ich schaffe es nicht den Token am Ende der Var token2 zu übergeben. wie bekomme ich am besten den ganzen body aus dem request heraus?

      Viele Grüße

      const request = require('request');
      const URLSearchParams = require('url');
      
      var temp1 = ""
      
      function login() {
          let params = "client_id=xxxxxx-6ffe-xxxx-87cd-7ea8xxxxxxx&grant_type=password&username=xxxxxxx%40xxx.xxx&password=xxxxxxxx"
          const options = {
              url: 'https://api.authentication.husqvarnagroup.dev/v1/oauth2/token',
              method: 'POST',
              headers: {
                  'Content-Type': 'application/x-www-form-urlencoded',
                  'accept': 'application/json'
              },
              body: params
          }
      
          request(options, (err, response, body) => {
              log('body: ' + JSON.stringify(body));
              const obj = JSON.parse(body);
              let token = obj.access_token;
              log('Token1: ' + obj.access_token);
          });
      }
      let token2 = login();
      log('token2: ' + token2)
      
      dslraser 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @intruder7 last edited by

        @intruder7
        Es gibt jetzt einen Adapter. Schon gesehen, oder soll es ein Script sein ?

        https://forum.iobroker.net/post/395536

        I 1 Reply Last reply Reply Quote 0
        • I
          intruder7 @dslraser last edited by

          @dslraser
          den hab ich schon gesehen.... nur leider ist er nicht für husqvarna😞

          dslraser 1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active @intruder7 last edited by

            @intruder7 sagte in Hilfe bei Gardena API:

            @dslraser
            den hab ich schon gesehen.... nur leider ist er nicht für husqvarna😞

            haben die noch eine andere (eigene) api oder Anmeldung ?

            Screenshot_20200410-213933_Chrome.jpg

            I 1 Reply Last reply Reply Quote 0
            • I
              intruder7 @dslraser last edited by

              @dslraser
              die haben eine eigene api

              f3980e5c-389a-4db6-bb8f-8eda3677692a-image.png
              c953b90f-c312-4446-8c97-a68ff73fe7d4-image.png

              dslraser 2 Replies Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @intruder7 last edited by

                @intruder7
                hast Du mal versucht trotzdem den Adapter zu verwenden ? Nur eben mit den Anmelde-API Seiten von denen. Bis auf die Adressen sieht das nach der gleichen Art und Weise aus...
                (also api key erstellen und verbinden und dann den Adapter)

                Screenshot_20200410-215014_Chrome.jpg

                I 1 Reply Last reply Reply Quote 0
                • I
                  intruder7 @dslraser last edited by

                  @dslraser jetzt mal getestet. er verbindet nicht. adapter bleibt gelb

                  
                  smartgarden.0	2020-04-10 22:04:22.715	error	(21406) Error: getlocations: no data
                  smartgarden.0	2020-04-10 22:04:22.515	info	(21406) get_locations ...
                  smartgarden.0	2020-04-10 22:04:22.511	info	(21406) sgSetState: info.connection true
                  smartgarden.0	2020-04-10 22:04:22.508	info	(21406) Connection: successful: response.statusCode / statusMessage=200 / OK
                  smartgarden.0	2020-04-10 22:04:21.985	info	(21406) Gardena Smart System Service hosts at: smart_host: https://api.amc.husqvarna.dev authentication_host: https://api.authentication.husqvarnagroup.dev
                  smartgarden.0	2020-04-10 22:04:21.981	info	(21406) sgSetState: info.revision Main: 2012 / API: 2010
                  smartgarden.0	2020-04-10 22:04:21.894	info	(21406) starting. Version 0.4.2 in /opt/iobroker/node_modules/iobroker.smartgarden, node: v10.19.0
                  
                  dslraser 1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @intruder7 last edited by dslraser

                    @intruder7 sagte in Hilfe bei Gardena API:

                    smartgarden.0 2020-04-10 22:04:22.511 info (21406) sgSetState: info.connection true

                    verbunden wird er....

                    smartgarden.0	2020-04-10 22:04:22.511	info	(21406) sgSetState: info.connection true
                    

                    aber es werden keine Geräte abgerufen.

                    smartgarden.0	2020-04-10 22:04:22.715	error	(21406) Error: getlocations: no data
                    

                    Hast Du die API im dev account auch verbunden mit Deinem Mower und den richtigen Key ?

                    I 1 Reply Last reply Reply Quote 0
                    • I
                      intruder7 @dslraser last edited by

                      @dslraser
                      hat er gemacht
                      d1f45201-6f97-4f09-92c2-22292ad1a33b-image.png
                      hab aber die husqvarna api eingetragen im adapter

                      b3630739-c69f-4ec9-952f-5b5550aee7b0-image.png

                      1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active @intruder7 last edited by dslraser

                        @intruder7 sagte in Hilfe bei Gardena API:

                        @dslraser
                        die haben eine eigene api

                        f3980e5c-389a-4db6-bb8f-8eda3677692a-image.png
                        c953b90f-c312-4446-8c97-a68ff73fe7d4-image.png

                        @jpgorganizer
                        Kannst Du sagen ob es auch mit Deinem Adapter funktionieren könnte ?

                        jpgorganizer 1 Reply Last reply Reply Quote 0
                        • jpgorganizer
                          jpgorganizer @dslraser last edited by

                          @dslraser
                          der Connect ist identisch, das wird gehen, der Rest läuft vmtl. anders, sonst hätte es keine separate API gegeben Ich habe mir das nie angesehen, da ich keinen Huski habe.

                          VG
                          jpgorganizer

                          I 1 Reply Last reply Reply Quote 1
                          • dslraser
                            dslraser Forum Testing Most Active last edited by

                            @intruder7
                            Dann bin ich leider auch raus...

                            1 Reply Last reply Reply Quote 0
                            • I
                              intruder7 @jpgorganizer last edited by

                              @jpgorganizer
                              das dachte ich mir schon. aber vielleicht kannst du mir sagen wie ich aus meinem skript (siehe weiter oben) das token weiterverarbeiten kann.

                              @dslraser danke dir

                              jpgorganizer dslraser 2 Replies Last reply Reply Quote 0
                              • jpgorganizer
                                jpgorganizer @intruder7 last edited by

                                @intruder7 sagte in Hilfe bei Gardena API:

                                @jpgorganizer
                                das dachte ich mir schon. aber vielleicht kannst du mir sagen wie ich aus meinem skript (siehe weiter oben) das token weiterverarbeiten kann. Und du musst aufpassen, die Token haben eine begrenzte Lebenszeit, dann musst du erneuern.

                                das Token wirst du in jedem weiteren Aufruf der API brauchen. Da hat es doch Beispiele.
                                https://developer.1689.cloud/apis/Automower+Connect+API#/readme

                                Ich kann nur empfehlen, erst mal mit einem einfachen Script anzufangen. Nix mit ioBroker oder so. Nur ein Script, evtl. noch nodejs, das muss erst mal laufen, dann kannst du beginnen in ioBroker zu integrieren. Dann weist du nämlich, was geht und was nicht geht. So suchst du dich zu Tode.

                                VG
                                jpgorganizer

                                1 Reply Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active @intruder7 last edited by

                                  @intruder7

                                  ich bin damals (mit Hilfe von @J-A-R-V-I-S) bis hier hin gekommen

                                  const request = require('request');
                                  
                                  const username = 'xxx.xxx@xxx.de';
                                  const password = 'xxxxxxxxxxxx';
                                  const appKey   = 'xxxxxxxxxxxxxxxxxxxxxx';
                                  
                                  const token = 'xxxxxxxxxxxxxxxxxxxxxx';
                                  const user_id = 'xxxxxxxxxxxxxxxxxxxxxx';
                                  const refresh_token = 'xxxxxxxxxxxxxxxxxxxxxx;
                                  
                                  const options = {
                                     url: 'https://sg-api.dss.husqvarnagroup.net/sg-1/sessions',
                                     method: 'POST',
                                     headers: {
                                         'Content-Type': 'application/json'
                                     },
                                     body: JSON.stringify({
                                         'sessions': {
                                             'email': username,
                                             'password': password
                                         }
                                     })
                                  }
                                  
                                  //Locations abrufen
                                  request({
                                     url: 'https://sg-api.dss.husqvarnagroup.net/sg-1/locations/?user_id=' + user_id,
                                     method: 'GET',
                                     headers: {
                                         'Content-Type': 'application/json',
                                         'X-Session': token
                                     },
                                  }, (err, res, body) => {
                                     console.log(body);
                                  })
                                  
                                  //Devices abrufen
                                  request({
                                     url: 'https://sg-api.dss.husqvarnagroup.net/sg-1/devices/?locationId=' + 'xxxxxxxxxxxxxxxxxxxxxx',
                                     method: 'GET',
                                     headers: {
                                         'Content-Type': 'application/json',
                                         'X-Session': token
                                     }
                                  }, (err, res, body) => {
                                     console.log(body);
                                  })
                                  
                                  //Befehl an Device senden
                                  request({
                                     url: 'https://sg-api.dss.husqvarnagroup.net/sg-1/devices/' + 'xxxxxxxxxxxxxxxx' + 
                                         '/abilities/valve/command?locationId=' + 'xxxxxxxxxxxxxxxx',
                                     method: 'PUT',
                                     headers: {
                                         'Content-Type': 'application/json',
                                         'X-Session': token
                                     },
                                     body: JSON.stringify({
                                         'name': 'stop_until_next_task'
                                     })
                                  }, (err, res, body) => {
                                     console.log(body);
                                  })
                                  
                                  request(options, (err, res, body) => {
                                     console.log(res);
                                  });
                                  
                                  /*const options = {
                                     url: 'https://api.authentication.husqvarnagroup.dev/v1/oauth2/token',
                                     method: 'POST',
                                     headers: {
                                         'Content-Type': 'application/x-www-form-urlencoded'
                                     },
                                     form: {
                                         grant_type: 'password',
                                         client_id: appKey,
                                         username: username,
                                         password: password
                                     }
                                  }
                                  
                                  request(options, (err, response, body) => {
                                  
                                     body = JSON.parse(body);
                                  
                                     console.log(body.access_token);
                                  
                                     const options2 = {
                                         url: 'https://sg-api.dss.husqvarnagroup.net/sg-1/locations',
                                         method: 'GET',
                                         headers: {
                                             'Authorization': 'Bearer ' + body.access_token,
                                             'Authorization-Provider': 'husqvarna',
                                             'X-Api-Key': appKey,
                                             'Content-Type': 'application/vnd.api+json'
                                         }
                                     }
                                  
                                     request(options2, (error, response, body) => {
                                         console.log(body);
                                         console.log(response);
                                     });
                                  });*/
                                  
                                  

                                  I 1 Reply Last reply Reply Quote 0
                                  • I
                                    intruder7 @dslraser last edited by

                                    @dslraser @jpgorganizer

                                    danke euch.... bin jetzt tatsächlich schon soweit, dass ich die Mäherdaten auslesen kann. jetzt muss ich sie nur strukturiert ablegen.

                                    1 Reply Last reply Reply Quote 1
                                    • Jörg Benthien
                                      Jörg Benthien last edited by Jörg Benthien

                                      Hi,

                                      zuerst: Ich bin komplett neu in dem Thema ioBroker und nodered.

                                      Aktuell versuche ich mit dem Adapter Zugriff auf meinen Mäher zu bekommen, dies scheitert aber, der Status der Instanz smartgarden bleibt bei gelb stehen:

                                      Verbunden mit Host: Wahr
                                      Lebenszeichen: Wahr
                                      Verbunden mit smartgarden: Falsch

                                      Im Log habe ich noch folgenden Eintrag gefunden:

                                      (22651) 3/ Connection failure.{"error":"invalid_request","error_description":"Invalid parameter: client_id"}

                                      Auf der Einstellungsseite der Instanz habe ich die Zugangsdaten mehrfach überprüft und auch mehrfach den API-Key neu generiert und eingetragen.

                                      Hat jemand eine Idee?

                                      Danke

                                      jpgorganizer 1 Reply Last reply Reply Quote 0
                                      • jpgorganizer
                                        jpgorganizer @Jörg Benthien last edited by

                                        @Jörg-Benthien sagte in Hilfe bei Gardena API:

                                        Im Log habe ich noch folgenden Eintrag gefunden:

                                        (22651) 3/ Connection failure.{"error":"invalid_request","error_description":"Invalid parameter: client_id"}

                                        Auf der Einstellungsseite der Instanz habe ich die Zugangsdaten mehrfach überprüft und auch mehrfach den API-Key neu generiert und eingetragen.

                                        Gib mal bitte etwas mehr vom Logfile; interessant ist meistens das was vor einem Fehler geschieht. Der Fehler weist für mich auf den API-Key. Vergleich den mal.

                                        VG jpgorganizer

                                        Jörg Benthien 1 Reply Last reply Reply Quote 0
                                        • Jörg Benthien
                                          Jörg Benthien @jpgorganizer last edited by

                                          @jpgorganizer

                                          Hi,

                                          danke für die Hilfe!

                                          Hier die Einträger aus dem Log nachdem ich die Instanz versucht habe neu zu starten:

                                          smartgarden.0 2020-10-03 18:53:18.140 info (22027) 3/ ---> State change by device
                                          smartgarden.0 2020-10-03 18:53:18.139 info (22027) 3/ state smartgarden.0.info.connection changed: false (ack = true)
                                          smartgarden.0 2020-10-03 18:53:18.137 info (22027) 3/ ---> State change by device
                                          smartgarden.0 2020-10-03 18:53:18.137 info (22027) 3/ state smartgarden.0.info.connection changed: false (ack = true)
                                          smartgarden.0 2020-10-03 18:53:18.129 error (22027) Error: 400
                                          smartgarden.0 2020-10-03 18:53:18.128 info (22027) 3/ Connection failure.{"error":"invalid_request","error_description":"Invalid parameter: client_id"}
                                          smartgarden.0 2020-10-03 18:53:18.128 info (22027) 3/ sgSetState: info.connection value=false ack=true
                                          smartgarden.0 2020-10-03 18:53:17.880 info (22027) 3/ ---> State change by device
                                          smartgarden.0 2020-10-03 18:53:17.880 info (22027) 3/ state smartgarden.0.info.revision changed: Main: 2160 / API: 2250 (ack = true)
                                          smartgarden.0 2020-10-03 18:53:17.877 info (22027) 3/ ---> State change by device
                                          smartgarden.0 2020-10-03 18:53:17.876 info (22027) 3/ state smartgarden.0.info.connection changed: false (ack = true)
                                          smartgarden.0 2020-10-03 18:53:17.787 info (22027) 3/ Gardena Smart System Service hosts at: smart_host: https://api.smart.gardena.dev/v1 authentication_host: https://api.authentication.husqvarnagroup.dev
                                          smartgarden.0 2020-10-03 18:53:17.784 info (22027) 3/ sgSetState: info.revision value=Main: 2160 / API: 2250 ack=true
                                          smartgarden.0 2020-10-03 18:53:17.718 info (22027) starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.smartgarden, node: v10.22.1, js-controller: 3.1.6
                                          host.raspberrypi 2020-10-03 18:53:15.765 info instance system.adapter.smartgarden.0 started with pid 22027
                                          host.raspberrypi 2020-10-03 18:53:15.734 info "system.adapter.smartgarden.0" enabled

                                          Ich habe mehrfach den API-Key kopiert und eingefügt. Mir ist allerdings nicht ganz klar was mit dem Application secret auf sich hat.

                                          Verbunden sind die Gardena smart system API und Authentication API.

                                          Danke
                                          Jörg

                                          jpgorganizer 1 Reply Last reply Reply Quote 0
                                          • jpgorganizer
                                            jpgorganizer @Jörg Benthien last edited by

                                            wie schon geschrieben, irgendwas an deinem APIkey scheint falsch zu sein.

                                            @Jörg-Benthien sagte in Hilfe bei Gardena API:

                                            Mir ist allerdings nicht ganz klar was mit dem Application secret auf sich hat.

                                            was meinst du damit ????? was hast du nicht verstanden?

                                            Jörg Benthien 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            859
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            6
                                            59
                                            7249
                                            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