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.
    • J.A.R.V.I.S.
      J.A.R.V.I.S. Developer @dslraser last edited by J.A.R.V.I.S.

      @dslraser sagte in Hilfe bei Gardena API:

      async function getData(appKey) {

      dann bau mal bitte in dieser Funktion eine Consolenausgabe ein, die den Token ausgibt.

      console.log(token);
      

      und verwende sonst einmal in der anderen Ausgabe anstatt body response.

      dslraser 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @J.A.R.V.I.S. last edited by

        @J-A-R-V-I-S
        kommt kein Token im Log

        const fetch = require('node-fetch');
        const { URLSearchParams } = require('url');
        const request = require('request');
         
        const username = 'xxx.xxx@xxx.de';
        const password = 'xxx';
        const appKey   = 'xxx';
         
        async function login() {
         
            const params = new URLSearchParams();
            params.set('grant_type', 'password');
            params.set('client_id', appKey);
            params.set('username', username);
            params.set('password', password);
         
            const res = await fetch('https://api.authentication.husqvarnagroup.dev/v1/oauth2/token', { 
                method: 'POST',
                body: params
            });
         
            if (!res.ok) {
                throw new Error(res.statusText);
            }
         
            return res.json();
            
        }
         
        function requestLocations(token, key) {
            const options = {
                url: 'https://api.smart.gardena.dev/v1/locations',
                method: 'GET',
                headers: {
                    'Authorization': 'Bearer ' + token,
                    'Authorization-Provider': 'husqvarna',
                    'X-Api-Key': 'xxx'
                }
            }
         
            request(options, (error, response, body) => {
                console.log(response);
            });
        }
         
        async function getData(appKey) {
            let token = await login();
            requestLocations(token, appKey);
            console.log(token);
        }
        
        getData(appKey);
        
        
        
        1 Reply Last reply Reply Quote 0
        • J.A.R.V.I.S.
          J.A.R.V.I.S. Developer last edited by

          @dslraser probier einfach nur mal folgenden Code in einem eigenen Skrip aus:

          const request = require('request');
          
          const username = 'xxx@xxx.de';
          const password = 'xxxxx';
          const appKey   = 'xxxxx';
          
          const options = {
              url: 'https://api.authentication.husqvarnagroup.dev/v1/oauth2/token',
              method: 'POST',
              body: {
                  grant_type: 'password',
                  client_id: appKey,
                  username: username,
                  password: password
              }
          }
          
          request(options, (err, response, body) => {
              console.log(body);
          });
          
          dslraser 1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active @J.A.R.V.I.S. last edited by

            @J-A-R-V-I-S
            damit schmiert es direkt ab

            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[1]: (node:1118) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js proce
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[1]: (node:1118) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by r
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[1]: (node:1118) UnhandledPromiseRejectionWarning: TypeError: URLSearchParams is not a constructor
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[0]: at processImmediate (timers.js:658:5)
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[0]: at tryOnImmediate (timers.js:676:5)
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[0]: at runCallback (timers.js:705:18)
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[0]: at Immediate.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:578:7)
            host.iobroker	2020-01-12 00:33:15.420	error	Caught by controller[0]: at end (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:549:18)
            host.iobroker	2020-01-12 00:33:15.419	error	Caught by controller[0]: at Request.write (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1500:27)
            host.iobroker	2020-01-12 00:33:15.419	error	Caught by controller[0]: at ClientRequest.write (_http_outgoing.js:567:10)
            host.iobroker	2020-01-12 00:33:15.419	error	Caught by controller[0]: at write_ (_http_outgoing.js:595:11)
            host.iobroker	2020-01-12 00:33:15.418	error	Caught by controller[0]: TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
            
            J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
            • J.A.R.V.I.S.
              J.A.R.V.I.S. Developer @dslraser last edited by J.A.R.V.I.S.

              @dslraser habe es ausgebessert:

              const request = require('request');
              
              const username = 'xxx@xxx.de';
              const password = 'xxxxx';
              const appKey   = 'xxxxx';
              
              const options = {
                  url: 'https://api.authentication.husqvarnagroup.dev/v1/oauth2/token',
                  method: 'POST',
                  headers: {
                      'Content-Type': 'application/x-www-form-urlencoded'
                  },
                  body: JSON.stringify({
                      grant_type: 'password',
                      client_id: appKey,
                      username: username,
                      password: password
                  })
              }
              
              request(options, (err, response, body) => {
                  console.log(body);
              });
              
              dslraser 2 Replies Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @J.A.R.V.I.S. last edited by

                @J-A-R-V-I-S

                javascript.0	2020-01-12 00:37:36.398	info	(1208) script.js.11_Gardena.Gardena1: {"error":"invalid_client","error_description":"Invalid client: cannot retrieve client credentials"}
                
                1 Reply Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active last edited by dslraser

                  Edit: morgen gehts weiter.....

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

                    @J-A-R-V-I-S
                    Edit: gelöscht

                    1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @J.A.R.V.I.S. last edited by dslraser

                      @J-A-R-V-I-S
                      @Jey-Cee

                      Hier noch mal das bisherige Script, falls es jemand weiter verfolgen möchte. Ich werde wohl nicht damit weiter machen, obwohl jetzt die Anmeldung und auch der Abruf der Geräte soweit funktioniert.

                      const request = require('request');
                       
                      const username = 'xxx.xxx@xxx.de';
                      const password = 'xxxxxxxxxx';
                      const appKey   = 'xxxxxxxxxx';
                      
                      const token = 'muss aus gelesen werden';
                      const user_id = 'kommt hier rein';
                      const refresh_token = 'wird auch erstellt und muss hier rein';
                      
                      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=' + 'xxxxxxx',
                          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/' + 'xxx' + 
                              '/abilities/valve/command?locationId=' + 'xxx',
                          method: 'PUT',
                          headers: {
                              'Content-Type': 'application/json',
                              'X-Session': token
                          },
                          body: JSON.stringify({
                              'name': 'stop_until_next_task'
                          })
                      }, (err, res, body) => {
                          //console.log(body);
                      })
                      
                      1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active last edited by dslraser

                        @Jey-Cee
                        @J-A-R-V-I-S

                        Hier noch bissl als Erklärung:

                        Es ist etwas umständlicher als gedacht. Damit ich überhaupt etwas ausprobieren konnte, mußte ich erstmal die Ventile provisorisch wieder an klemmen, die sind über den Winter ausgebaut. Die sind normaler Weise draußen im Garten, nun provisorisch im Keller, sonst waren die Ventile auch in der Gardena App alle aus gegraut. Noch dazu kommt, das man immer zum einschalten zwei Datenpunkte setzen muß (duration --- die Zeit und von idl auf manuell umschalten) anschließend noch über einen dritten Datenpunkt starten (ein Button). Ausschalten dann mit idl und wieder den Button betätigen. Es ist also nicht nur an/aus, sondern man muß immer eine Laufzeit mitgeben. Außerdem ist es auf 2 Ventile gleichzeitig begrenzt. Will mann, wenn schon zwei Ventile aktiv sind, ein drittes Ventil dazu schalten, dann kommt eine Fehlermeldung in der App, das nur zwei gleichzeitig gehen. Auch die Laufzeit der Bewässerung ist auf 59 Minuten begrenzt, setzt man eine größere Zahl per Blockly/Script, passiert gar nichts, nichtmal eine Fehlermeldung.

                        Vermutlich braucht man auch alle diese Datenpunkte im Script, was es dann auch nicht leichter macht als im Adapter, deshalb werde ich erstmal beim Adapter bleiben.

                        Hier mal so ein Datenpunkt vom Adapter (bis man in dem was findet....)
                        Bildschirmfoto 2020-01-14 um 18.07.57.png

                        Mein Blockly zum schalten über iQontrol (oder auch VIS) überarbeite ich gerade und stelle es dann gern noch hier rein.

                        I 1 Reply Last reply Reply Quote 0
                        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            737
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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