Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Husqvarna Automower v0.3.x

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Test Adapter Husqvarna Automower v0.3.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      ArnoD @ghifunk last edited by

      @ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:

      @arnod
      Jetzt sehe ich gerade, daß bei mir im Ordner unter dem Ordner schedule nochmal einer mit "0" angelegt ist...!!30-08-_2022_21-45-24.jpg
      Da passt doch glaube ich was nicht?

      Das ist so in Ordnung.
      Es sind vier Timer, die eingestellt werden können, von 0 bis 3.

      G L 2 Replies Last reply Reply Quote 0
      • G
        ghifunk @ArnoD last edited by

        @arnod zurück, das war der Task0...

        1 Reply Last reply Reply Quote 0
        • A
          ArnoD @ghifunk last edited by

          @ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:

          Die mit der App eingestellten Mähtage werden in den kleinen Markierungen neben den Tagen grün
          eingetragen aber die Werte aus der Visu erreichen den Mäher nicht.

          Wenn die kleinen Markierungen grün sind, wurde das auch an den Mäher übertragen.
          Diese Felder verweisen auf die ID husqvarna-automower.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxx.calendar
          0 bis 3 und das sind Werte die vom Mäher kommen.

          303d6a84-3560-4f2e-908c-23e59dc84689-grafik.png

          G 1 Reply Last reply Reply Quote 0
          • G
            ghifunk @ArnoD last edited by

            @arnod
            die Markierungen die bei mir erscheinen, sind die welche in der Handy App gesetzt wurden.

            1 Reply Last reply Reply Quote 0
            • G
              ghifunk @ArnoD last edited by ghifunk

              @arnod
              im Log finde ich nichts, was mit Wochentagen oder Zeiten dazu zu tun hat ?
              oder ich suche an der falschen Stelle.

              A 1 Reply Last reply Reply Quote 0
              • A
                ArnoD @ghifunk last edited by

                @ghifunk
                Wird bei dir überhaupt was übertragen oder fehlen nur die Timer?

                G 1 Reply Last reply Reply Quote 0
                • G
                  ghifunk last edited by

                  wie ich sehe, wird nichts übertragen, was mit timern oder zeiten zu tun hat.
                  ich habe den Adapter auf debug eingestellt und dann im Log danach gesucht.

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    ghifunk @ghifunk last edited by ghifunk

                    @ghifunk ich habe gerade nochmal in den scheduler-Werten gesehen, daß alle Werte rot sind. hat das was zu bedeuten?
                    Wenn ich dann auf Speichern drücke, geht der "Speichern" -Wert kurz af True (grün) und dann wieder auf rot

                    jetzt ha ich im Log doch noch was gefunden:
                    "Content-Length":191},"method":" post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{ "type":"calendar","attributes":{"tasks":[{"start":540,"duration":360,"monday":true ,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":wahr,"Sonntag":falsch}] }}}"}axios/0.27.2","Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":[{" start":540,"dauer":360,"montag":wahr,"dienstag":wahr,"mittwoch":falsch,"donnerstag":wahr,"freitag\ ":false,"samstag":true,"sonntag":false}]}}}"}axios/0.27.2","Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":[{" start":540,"dauer":360,"montag":wahr,"dienstag":wahr,"mittwoch":falsch,"donnerstag":wahr,"freitag\ ":false,"samstag":true,"sonntag":false}]}}}"}"Kalender","Attribute":{"Aufgaben":[{"Start":540,"Dauer":360,"Montag":true,"Dienstag" :true,"mittwoch":false,"donnerstag":true,"freitag":false,"samstag":true,"sonntag":false}]}}}"}"Kalender","Attribute":{"Aufgaben":[{"Start":540,"Dauer":360,"Montag":true,"Dienstag" :true,"mittwoch":false,"donnerstag":true,"freitag":false,"samstag":true,"sonntag":false}]}}}"}

                    1 Reply Last reply Reply Quote 0
                    • B
                      Baddik @ArnoD last edited by

                      @arnod Vielen Dank - habe es gefunden 👍

                      1 Reply Last reply Reply Quote 0
                      • G
                        ghifunk @ArnoD last edited by ghifunk

                        @arnod hallo,
                        ich habe eben nochmal die Daten etwas aufgeschlüsselt:
                        Ich denke mal, da ist was durcheinander... ist original so aus dem Log kopiert!

                        Content-Length":607},"method":" post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{ "type":"calendar","attributes":{"tasks":

                        [{"start":540,"duration":360,"monday":true ,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":wahr,"Sonntag":falsch},

                        {"Start":420,"Dauer":360,"Montag":false,"Dienstag":true,"Mittwoch":false,"donnerstag":wahr,"freitag":falsch,"samstag":wahr,"sonntag":falsch},

                        {"start":300,"dauer":120," Montag":wahr,"Dienstag":falsch,"Mittwoch":wahr,"Donnerstag":falsch,"Freitag":wahr,"Samstag":falsch,"Sonntag\ ":true},

                        {"Start":600,"Dauer":120,"Montag":false,"Dienstag":true,"Mittwoch":false,"Donnerstag\ ":true,"freitag":false,"samstag":false,"sonntag":true}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},

                        {"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},

                        {"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}

                        dazu die Eingabemaske:

                        31-08-_2022_15-12-40.jpg

                        [onStateChange]: HTTP-Statusantwort: 400; headers: {"content-type":"application/vnd.api+json","
                        content-length":"435","connection":"close","date":"Mi, 31. Aug. 2022 13:03 :16 GMT","
                        x-amzn-requestid":"zzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz","
                        x-amzn-remapped-content-length":"435","x-amzn-remapped-connection" :"keep-alive","
                        x-amz-apigw-id":"XutTTFnQjoEFW0g=","x-amzn-remapped-date":"Mi, 31. August 2022 13:03:16 GMT","
                        x-cache ":"Fehler von cloudfront","via":"1.1 b88825ad151091557d336c3519215162.cloudfront.net (CloudFront)","
                        x-amz-cf-pop":"TXL52-C1","x-amz-cf-id": " r4Pv0Um_UADmOY2-N1yfx3SIGAGv12Kbd3RlfL9iJo8if3HOqad0Lg=="};
                        Daten: {"errors":[{"id":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","status":"400","code":"
                        invalid.mower. schedule.format","title":"Ungültiges Mähplanformat","detail":"Ungültiges Planformat im Anfragetext.
                        Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim Hinzufügen: MowerSchedule.
                        Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
                        Ungültiges Mähplanformat","detail":"Ungültiges Planformat im Anfragetext.
                        Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim Hinzufügen:
                        MowerSchedule.Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
                        Ungültiges Mähplanformat","detail":"Ungültiges Planformat im Anfragetext.
                        Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim Hinzufügen: MowerSchedule.
                        Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          ArnoD @ghifunk last edited by ArnoD

                          @ghifunk

                          Werden die anderen Objekt ID's vom Adapter befüllt oder bleiben alle leer?

                          Ich würde mal mit einem Timer anfangen und alle anderen löschen.
                          Prüfe mal, ob beim Ändern der Tage in der ersten Zeile in VIS auch die entsprechenden ID's vom Adapter geändert werden (...calendar.0.monday bis sundday), wenn ja, dann mal speichern und im LOG schauen, wie die Antwort von Husqvarna ist, ob die Werte übernommen wurden.
                          Versuch es mal nur mit einem Tag und prüfe, ob die Rückantwort von Husqvarna passt.

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            ghifunk @ArnoD last edited by

                            @arnod
                            Hallo, habe jetzt nur den ersten timer stehen gelassen. Es erfolgt auch nur die entsprechende Ausgabe, welche zumindest die richtigen Werte beinhaltet. Es erfolgt aber wieder eine Fehlermeldung.
                            Ich weiß nicht was ich noch machen kann? Oder braucht der 415X ein anders Datenformat?
                            Vielleicht ist doch jemand hier der auch einen 415X hat und evtl. das gleiche Problem...

                            hier der entsprechende Log-Auszug:
                            "Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":
                            [{"start":540,"duration":360,"monday":true,"tuesday":true,"wednesday":false,"thursday":true,"friday":false,"saturday":true,"sunday":false}]}}}"}

                            husqvarna-automower.0
                            2022-08-31 20:33:54.473 info This mower use missions and can not be updated by this endpoint Nothing set

                            [onStateChange]: HTTP status response: 400; headers: {"content-type":"application/vnd.api+json","content-length":"201","connection":"close","date":"Wed, 31 Aug 2022 18:33:54 GMT","
                            x-amzn-requestid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","x-amzn-remapped-content-length":"201","
                            x-amzn-remapped-connection":"keep-alive","
                            x-amz-apigw-id":"Xvdu7HYxDoEFmmw=","
                            x-amzn-remapped-date":"Wed, 31 Aug 2022 18:33:54 GMT","
                            x-cache":"Error from cloudfront","via":"1.1 969e7c67b62bdfae78f727a06e4512c2.cloudfront.net (CloudFront)","
                            x-amz-cf-pop":"TXL52-C1","x-amz-cf-id":"LPrXqGEaWud_7zyvx6nyYadgtVgNL2mEEuP0giMSJ73MA8MeNuzM7g=="}; data: {"errors":[{"id":"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzz","
                            status":"400","code":"illegal.argument","title":"Illegal argument","detail":"This mower use missions and can not be updated by this endpoint"}]}

                            A 1 Reply Last reply Reply Quote 0
                            • G
                              ghifunk @Kaschi68 last edited by

                              @kaschi68
                              Hallo Kaschi68,
                              ich habe gerade gelesen, daß du auch einen 415X hast. Ich habe ein Problem mit der Übertragung des Zeitplanes an den Mäher..
                              Hast du schon mal ausprobiert ob das bei dir funktioniert? Das würde mich sehr interessieren.
                              Gruß Gerhard

                              K 1 Reply Last reply Reply Quote 0
                              • A
                                ArnoD @ghifunk last edited by

                                @ghifunk
                                Kann auch sein, dass dein Mäher das über die API nicht unterstützt.
                                Du kannst ja mal auf der Husqvarna API Seite mit deiner Mower ID direkt versuchen, ob das funktioniert.
                                Dazu einfach unter POST /mowers/{id}/calendar auf der Seite im Feld ID deine ID eintragen:
                                Husqvarna Connect API

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kaschi68 @ghifunk last edited by

                                  @ghifunk
                                  Hallo Gerhard, ich nutze den Mähplan aus dem Adapter nicht. Ich hatte ihn mal getestet, aber bei mir wurden die Mähzeiten (auch) nicht übertragen.
                                  Dazu muss ich aber sagen das ich noch ein grösseres Problem hatte. Meine Objekte haben sich nur nach Adapter Neustart aktualisiert.
                                  Heute den Fehler gefunden. Ist bisher nicht aufgefallen bei anderen Adaptern. Meine Ordner-Rechte müssen nicht gepasst haben. Nach dem Durchlaufen vom ioBroker Fixer wurden jetzt im Betrieb alle Objekte aktualisiert.
                                  Den Mähplan organisiere ich anders, da mein Rolltor auf sein muss, bevor der Mower startet.
                                  Ich starte und stoppe über den Adapter Zeitschaltuhr in VIS. Alles andere hat nicht geklappt, da es zu Verzögerungen mit den Statusmeldungen kommt und der Mower sonst das Rolltor einfährt.

                                  Gruß und schönen Abend,
                                  Kaschi

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    lustig29 @ArnoD last edited by

                                    @arnod Ich bekomme bei irgendwie nur den Datenpunkt Distance from Charingstation angezeigt. Müssten das nicht mehr sein?

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      ArnoD @lustig29 last edited by

                                      @lustig29
                                      Welches Script verwendest du?
                                      Das originale von Github oder das geänderte von mir?
                                      Beim Script von Github wurden anscheinend alle Tageswerte entfernt, sei dem im Adapter die "Statistics" Werte hinzugefügt wurden.
                                      Wenn ich mein Script optimiert habe, werde ich ice987987 mal fragen, ob er das auf seiner Github Seite verwenden will.

                                      Bei meinem Script, das ich ursprünglich von ice987987 übernommen habe, werden noch folgende Objekt ID's angelegt:
                                      drivenDistanceToday
                                      drivenDistanceTotal
                                      chargingTimeToday
                                      mowingTimeToday
                                      GoogleMapsLink

                                      Es werden auch ID's für die Timer angelegt und die Urzeit umgerechnet für die Adapter ID's
                                      .calendar.0.duration und .calendar.0.start.

                                      Was noch nicht richtig funktioniert, ist die Berechnung der Ladezeiten und gefahrene Distanz.

                                      L 1 Reply Last reply Reply Quote 0
                                      • L
                                        lustig29 @ArnoD last edited by

                                        @arnod Kannst du mir dein Script eventuell zur Verfügung stellen?

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          ArnoD @lustig29 last edited by

                                          @lustig29
                                          Kein Problem:

                                          //***************************************************************************************************
                                          //++++++++++++++++++++++++++++++++++++++++  USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++++
                                          
                                          const instanz = '0_userdata.0.';                                // Hier kann die Instanz angepasst werden
                                          const PfadEbene1 = 'Husqvarna.';                                // Hier kann der Pfad angepasst werden
                                          const PfadEbene2 = ['Statistik.', 'Zeiten.', 'Allgemein.'];     // Hier kann der Pfad angepasst werden
                                          const Mower_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'         // Mower ID vom Husqvarna Adapter
                                          const sID_Regensensor = 'hm-rpc.3.1.RAINING'                    // Pfad Regensensor true = Regen
                                          
                                          //++++++++++++++++++++++++++++++++++++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++
                                          //***************************************************************************************************
                                          
                                          
                                          let drivenDistanceToday,drivenDistanceTotal,drivenDistance = 0,chargingTimeToday,chargingTimeTotal,chargingTime = 0,mowingTimeToday,mowingTimeTotal,mowingTime = 0;
                                          let chargingStationLatitude = 0,chargingStationLongitude = 0,distanceFromChargingStation = 0;
                                          
                                          // create required folders and states
                                          CreateState();
                                          async function CreateState(){
                                              for (let i = 0; i <= 3; i++) {
                                                  createStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_'+i, '00:00', false, {name: 'Schedule '+i+' Start Zeit ', desc: 'Start Zeit Timer '+i, role: 'value', type: 'string', read: true, write: true, def: '00:00', unit: 'Uhr'});
                                                  createStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_'+i, '00:00', false, {name: 'Schedule '+i+' Ende Zeit ', desc: 'Ende Zeit Timer '+i, role: 'value', type: 'string', read: true, write: true, def: '00:00', unit: 'Uhr'});
                                              }
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday', 0, false, {name: 'Driven Distance Today', desc: 'Driven Distance Today', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'km'});
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal', 0, false, {name: 'Driven Distance Total', desc: 'Driven Distance Total', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'km'});
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday', 0, false, {name: 'Charging Time Today', desc: 'Charging Time Today', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'ms'});
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday', 0, false, {name: 'Mowing Time Total', desc: 'Mowing Time Total', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'ms'});
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'distanceFromChargingStation', 0, false, {name: 'Distance from charging station', desc: 'Distance from charging station', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'm'});
                                              await createStateAsync(instanz + PfadEbene1 + PfadEbene2[2] + 'GoogleMapsLink', '', false, {name: 'Link für Google Maps', desc: 'Link für Google Maps', role: 'value', type: 'string', read: true, write: true, def: ''});
                                              log('-==== Alle Ordner und State wurden erstellt ====-')
                                              drivenDistanceToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday')).val;
                                              drivenDistanceTotal = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal')).val;
                                              chargingTimeToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday')).val;
                                              mowingTimeToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday')).val;
                                          }
                                          //******************************************************* Adapter Husqvarna-Automower *******************************************************/
                                          const sID_Mower_activity = 'husqvarna-automower.0.' + Mower_ID + '.mower.activity'
                                          const sID_Latlong = 'husqvarna-automower.0.' + Mower_ID + '.positions.latlong'
                                          const sID_PARKUNTILNEXTSCHEDULE = 'husqvarna-automower.0.' + Mower_ID + '.ACTIONS.PARKUNTILNEXTSCHEDULE'
                                          const sID_MoverLatLong = 'husqvarna-automower.0.'+Mower_ID+'.positions.latlong'
                                          //************************************************************ Script Husqvarna *************************************************************/
                                          const sID_drivenDistanceToday = instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday';
                                          const sID_drivenDistanceTotal = instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal';
                                          const sID_distanceFromChargingStation = instanz + PfadEbene1 + PfadEbene2[0] + 'distanceFromChargingStation';
                                          const sID_chargingTimeToday = instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday';
                                          const sID_mowingTimeToday = instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday';
                                          const sID_GoogleLink = instanz + PfadEbene1 + PfadEbene2[2] + 'GoogleMapsLink';
                                          const sID_StartZeit_0 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_0';
                                          const sID_EndeZeit_0 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_0';
                                          const sID_StartZeit_1 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_1';
                                          const sID_EndeZeit_1 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_1';
                                          const sID_StartZeit_2 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_2';
                                          const sID_EndeZeit_2 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_2';
                                          const sID_StartZeit_3 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_3';
                                          const sID_EndeZeit_3 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_3';
                                          const arrayID_Zeiten =[sID_StartZeit_0,sID_EndeZeit_0,sID_StartZeit_1,sID_EndeZeit_1,sID_StartZeit_2,sID_EndeZeit_2,sID_StartZeit_3,sID_EndeZeit_3];
                                          
                                          
                                          // reset variables "[...]Today" every midnight
                                          schedule('0 0 * * *', function () {
                                              drivenDistanceToday = 0;
                                              setState(sID_drivenDistanceToday, drivenDistanceToday, true);
                                              chargingTimeToday = 0;
                                              setState(sID_chargingTimeToday, chargingTimeToday, true);
                                              mowingTimeToday = 0;
                                              setState(sID_mowingTimeToday, mowingTimeToday, true);
                                          });
                                          
                                          // get chargingTimeToday and chargingTimeTotal
                                          on({id: sID_Mower_activity, oldVal: 'CHARGING'}, function (obj) {
                                              chargingTime = obj.state.ts - obj.oldState.ts;
                                              log('chargingTime: ' + chargingTime/1000 + 's', 'debug');
                                              chargingTimeToday = chargingTime + chargingTimeToday;
                                              setState(sID_chargingTimeToday, chargingTimeToday, true);
                                          });
                                          
                                          // get mowingTimeToday and mowingTimeTotal
                                          on({id: sID_Mower_activity, oldVal: 'MOWING'}, function (obj) {
                                              mowingTime = obj.state.ts - obj.oldState.ts;
                                              log('mowingTime: ' + mowingTime/1000 + 's', 'debug');
                                              mowingTimeToday = mowingTime + mowingTimeToday;
                                              setState(sID_mowingTimeToday, mowingTimeToday, true);
                                          });
                                          
                                          // get distance from automower to charging station, drivenDistanceToday and drivenDistanceTotal
                                          on({id: sID_Latlong, change: 'ne'}, async function (obj) {
                                              if (getState(sID_Mower_activity).val === 'CHARGING' || getState(sID_Mower_activity).val === 'PARKED_IN_CS') {
                                                  if (chargingStationLatitude !== 0 && chargingStationLongitude !== 0) {
                                                      chargingStationLatitude = (Number(obj.state.val.split(';')[0]) + Number(chargingStationLatitude)) / 2;
                                                      chargingStationLongitude = (Number(obj.state.val.split(';')[1]) + Number(chargingStationLongitude)) / 2;
                                                  } else {
                                                      chargingStationLatitude = obj.state.val.split(';')[0];
                                                      chargingStationLongitude = obj.state.val.split(';')[1];
                                                  }
                                              } 
                                              distanceFromChargingStation = 1000 * 6378.388 * Math.acos(Math.sin(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.sin(chargingStationLatitude * (Math.PI / 180)) + Math.cos(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.cos(chargingStationLatitude * (Math.PI / 180)) * Math.cos(chargingStationLongitude * (Math.PI / 180) - obj.state.val.split(';')[1] * (Math.PI / 180))); // reference: https://www.kompf.de/gps/distcalc.html
                                              log('distanceFromChargingStation: ' + distanceFromChargingStation + 'm', 'debug');
                                              await setStateAsync(sID_distanceFromChargingStation, distanceFromChargingStation, true);
                                              
                                              if (getState(sID_Mower_activity).val === 'MOWING' || getState(sID_Mower_activity).val === 'GOING_HOME' || getState(sID_Mower_activity).val === 'LEAVING') {
                                                  drivenDistance = 6378.388 * Math.acos(Math.sin(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.sin(obj.oldState.val.split(';')[0] * (Math.PI / 180)) + Math.cos(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.cos(obj.oldState.val.split(';')[0] * (Math.PI / 180)) * Math.cos(obj.oldState.val.split(';')[1] * (Math.PI / 180) - obj.state.val.split(';')[1] * (Math.PI / 180))); // reference: https://www.kompf.de/gps/distcalc.html
                                                  log('distanceDriven: ' + drivenDistance + 'km', 'debug');
                                                  drivenDistanceToday = drivenDistanceToday + drivenDistance;
                                                  drivenDistanceTotal = drivenDistanceTotal + drivenDistance;
                                                  await setStateAsync(sID_drivenDistanceToday, round(drivenDistanceToday,2), true);
                                                  await setStateAsync(sID_drivenDistanceTotal, round(drivenDistanceTotal,2), true);
                                              }
                                          });
                                          
                                          // Uhrzeiten für StartZeit und EndZeit in Minuten umrechnen und Adapter ID's ändern
                                          on({id: arrayID_Zeiten, change: 'ne'}, async function (obj) {
                                              let arryObj_ID = obj.id.split('.')
                                              let ScheduleNr = arryObj_ID[4].substring(arryObj_ID[4].length-1,arryObj_ID[4].length)
                                              let Dauer_min =0, Start_min=0;        
                                              let StartZeit=(await getStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_'+ScheduleNr)).val;
                                              let EndeZeit=(await getStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_'+ScheduleNr)).val;
                                              
                                              // Uhrzeit wird in Stunden und Minuten geteilt
                                              let arrayStartZeit = StartZeit.split(":");
                                              let arrayEndeZeit = EndeZeit.split(":");
                                              let StartZeit_Stunden = arrayStartZeit[0];   
                                              let EndeZeit_Stunden = arrayEndeZeit[0];   
                                              let StartZeit_Minuten = arrayStartZeit[1];   
                                              let EndeZeit_Minuten = arrayEndeZeit[1];   
                                              
                                              // Umrechnen der Uhrzeit in Minuten seit Tagesbeginn
                                              Start_min = (StartZeit_Stunden *60)+ parseInt(StartZeit_Minuten)
                                              // Umrechnen der Uhrzeit in Minuten von Start bis Ende Zeit (Dauer)
                                              Dauer_min = ((EndeZeit_Stunden *60)+ parseInt(EndeZeit_Minuten))-Start_min
                                              if(Dauer_min <0){Dauer_min = 0;}
                                              await setStateAsync('husqvarna-automower.0.' + Mower_ID + '.ACTIONS.schedule.'+ScheduleNr+'.start',Start_min)
                                              await setStateAsync('husqvarna-automower.0.' + Mower_ID + '.ACTIONS.schedule.'+ScheduleNr+'.duration',Dauer_min)
                                          });
                                          
                                          //Google Maps Link aktualisieren, wenn sich die Koordinaten ändern.
                                          on({id: sID_MoverLatLong, change: "ne"}, async function (obj) {
                                              let arryLatLong = getState(obj.id).val.split(';');
                                              let GoogleLink = 'https://www.google.com/maps/place/'+arryLatLong[0]+','+arryLatLong[1]+'/@?hl=de';
                                              await setStateAsync(sID_GoogleLink,GoogleLink);
                                          });
                                          
                                          
                                          // Bei Regen Parken bis zum nächsten Start
                                          on({id: sID_Regensensor, change: 'ne', val: true}, async function (obj) {
                                             await setStateAsync(sID_PARKUNTILNEXTSCHEDULE,true);
                                             log('-==== Es regnet, Mäher wird geparkt ====-','warn')
                                          });
                                          
                                          // Runden. Parameter float wert, int dez Anzahl der Stellen
                                          function round(wert, dez) {
                                              let umrechnungsfaktor = Math.pow(10,dez);
                                              return Math.round(wert * umrechnungsfaktor) / umrechnungsfaktor;
                                          } 
                                          
                                          
                                          L 2 Replies Last reply Reply Quote 0
                                          • L
                                            lustig29 @ArnoD last edited by

                                            @arnod Super, vielen Dank 👍🏻

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            495
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            automower husqvarna
                                            72
                                            435
                                            78085
                                            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