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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Husqvarna Automower v0.3.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      TomBo1969 @lustig29 last edited by

      @lustig29 ich regele das mit einer Netatmo Wetterstation. Ab einer bestimmten Regenmenge wird "Mählanie" rein geschickt/darf nicht los, dann wird in bestimmten Intervallen geprüft, wie die Regenmenge ist und sie wieder losgeschickt. Zusätzlich wird sie bei einer Warnung vor starkem Gewitter (DWD) vom Strom getrennt. Eine Visualisierung habe ich dazu auch nicht, es gibt jeweils Benachrichtigungen aufs Handy.

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

        @lustig29
        Bei mir läufts ähnlich, wenn die Wetterstation Regen meldet (länger als 5 min am Stück), dann Husch ins Körbchen.
        Und 3 Std nach Regenende geht es dann wieder an die Arbeit.

        Gesteuert wird über ein Javascript

        K 1 Reply Last reply Reply Quote 0
        • K
          Kanumouse @Boronsbruder last edited by

          Hi,
          an dieser Stelle einmal die Frage an alle die den Adapter im Einsatz haben.
          Bei mir geht der Adapter ab und zu einmal in Störung. Ich vermute, dass er die Verbindung zur Husqvarna-Cloud verleirt.
          Ist das bei euch ggf. auch so?

          R 1 Reply Last reply Reply Quote 0
          • R
            reutli @Kanumouse last edited by

            @kanumouse
            Was heisst "in Störung"? Ich habe auch ab und an mal, dass der Adapter "gelb" wird, nach Neustart dann aber wieder ordnungsgemäß verbindet.

            K 1 Reply Last reply Reply Quote 0
            • K
              Kanumouse @reutli last edited by

              @reutli
              Genau so ist es bei mir auch.
              Aber wo liegt die Ursache?

              R 1 Reply Last reply Reply Quote 0
              • R
                reutli @Kanumouse last edited by

                @kanumouse
                Die Ursache kenne ich nicht, aber die APIs von Husqvarna und Gardena nicht nicht gerade stabil.

                T 1 Reply Last reply Reply Quote 0
                • T
                  TomBo1969 @reutli last edited by

                  @reutli @Kanumouse
                  Bei mir wird der Adapter im laufenden Betrieb tatsächlich 1x täglich gelb und verbindet sich nicht erneut.

                  Ich versuche das zu umgehen, in dem ich den Adapter jede Nacht per Script neu starte.

                  R K 2 Replies Last reply Reply Quote 0
                  • R
                    reutli @TomBo1969 last edited by

                    @tombo1969
                    Das habe ich so nicht! Dann würde ich einen issue in Github beim Adapter aufmachen (Github).

                    Ich habe aber auch noch die "alte" V.0.0.5 am Laufen. Zwischenzeitlich wurde ja das Log-In geändert, vllt. hängt es damit zusammen?

                    Kannst ja mal die 0.0.5 testen.

                    T 1 Reply Last reply Reply Quote 0
                    • Q
                      Qlink last edited by

                      @TomBo1969 @reutli @Boronsbruder

                      Hat von euch jemand die Regenerkennung für den Mower in Blockly umgesetzt ?
                      Falls ja, könntet ihr euer Blockly teilen ?

                      Danke.

                      Beste Grüße

                      R T 2 Replies Last reply Reply Quote 0
                      • R
                        reutli @Qlink last edited by

                        @qlink

                        Ich habe noch keine Regenerkennung drin. Braucht's ja auch nicht - es regnet ja nicht 😁

                        1 Reply Last reply Reply Quote 0
                        • T
                          TomBo1969 @reutli last edited by

                          @reutli Ich habe die Version 0.2.0, da es mit den vorherigen Versionen bei mir nicht mit der Authentifizierung geklappt hat.
                          Inzwischen habe ich aber auch von einem nächtlichen Neustart auf eine direkte Überwachung der Instanz umgebaut. Jetzt wird nach 30 Sekunden neu gestartet, wenn der Adapter keine Verbindung mehr hat. Klappt soweit gut.

                          R 1 Reply Last reply Reply Quote 0
                          • T
                            TomBo1969 @Qlink last edited by

                            @qlink Worübee erkennst du denn, dass es bei dir im Garten regnet?
                            Bei mir ist es ein Netatmo Regensensor..

                            Q 1 Reply Last reply Reply Quote 0
                            • R
                              reutli @TomBo1969 last edited by

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

                              Ich habe die Version 0.2.0, da es mit den vorherigen Versionen bei mir nicht mit der Authentifizierung geklappt hat.
                              Inzwischen habe ich aber auch von einem nächtlichen Neustart auf eine direkte Überwachung der Instanz umgebaut. Jetzt wird nach 30 Sekunden neu gestartet, wenn der Adapter keine Verbindung mehr hat. Klappt soweit gut.

                              Komisch, die Authentifizierung klappt bei mir mit der 0.0.5 bestens.
                              Habe einen Entwickler-Account bei Husqvarna und fahre mit dem....

                              Husqvarna.png

                              husqvarna-automower.0
                              	2022-08-01 12:00:08.545	info	Connection to "Husqvarna WebSocket" established. Ready to get status events...
                              husqvarna-automower.0
                              	2022-08-01 12:00:08.161	info	Mower information saved...
                              husqvarna-automower.0
                              	2022-08-01 12:00:06.691	info	"Husqvarna Authentication API Access token" received.
                              husqvarna-automower.0
                              	2022-08-01 12:00:03.129	info	Trying to connect "Automower Connect API"...
                              husqvarna-automower.0
                              	2022-08-01 12:00:03.127	info	starting adapter "husqvarna-automower"...
                              husqvarna-automower.0
                              	2022-08-01 12:00:03.108	info	starting. Version 0.0.5 (non-npm: ice987987/ioBroker.husqvarna-automower#07614ddfe80b74360398811919f0342e55c3100f) in /opt/iobroker/node_modules/iobroker.husqvarna-automower, node: v14.20.0, js-controller: 4.0.23
                              
                              1 Reply Last reply Reply Quote 0
                              • Q
                                Qlink @TomBo1969 last edited by

                                @tombo1969

                                Ich verwende einen Weatherman als meine Wetterstation.
                                Der hat einen Regensensor eingebaut.

                                @reutli aber du hast doch weiter oben geschrieben, dass du den Mower schlafen schickst bei Regen ... ?

                                Beste Grüße

                                R 1 Reply Last reply Reply Quote 0
                                • R
                                  reutli @Qlink last edited by

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

                                  @reutli aber du hast doch weiter oben geschrieben, dass du den Mower schlafen schickst bei Regen ... ?

                                  Ja, hatte ich mal, habe ich aber gelöscht, weil nicht zuverlässig funktioniert. Hätte also richtig schreiben müssen "... schickte ich bisher immer schlafen...". Habe jetzt auch eine Wetterstation mit echtem Regegnsensor (Homematic) und wollte das wieder einbauen, bin aber noch nicht dazu gekommen - schäm

                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    Kanumouse @TomBo1969 last edited by

                                    @tombo1969 @reutli

                                    Ok, das Problem habe ich jetzt auch mit einem Blockly gelöst.
                                    Ich überwache den Connect-Status der Instanz und starte die Instanz bei verloren gegangener Verbindung neu.

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

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

                                      @ste_glei

                                      Das war es. Super.

                                      Jetzt hab ich nur 2 Fragen.

                                      Wie macht ihr das mit der Regenerfassung. Und würde jemand vielleicht seine Vis, passend zum Adapter zur Verfügung stellen?

                                      Ich habe jetzt mal eine View für den neuen Adapter Husqvarna-Automower 0.2.0 erstellt:
                                      72bbd072-9c52-4afa-a6ce-b14c14bc3553-grafik.png

                                      Den Adapter habe ich um die statistics Objekte ID bei mir erweitert, also nicht wundern, wenn bei euch nicht alle Werte verfügbar sind. Ich habe auch das Script erweitert, so das ich eine Startzeit und Endzeit eingeben kann und das Script die entsprechenden Werte bei duration und start einträgt.
                                      Es müssen natürlich auch alle Pfade bei euch angepasst werden, da ich den Application Key natürlich durch xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ersetzt habe.
                                      Hier die View zum Importieren:
                                      Husqvarna_VIS_View.js

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

                                        @arnod Super View. Meinst du, du könntest dein Skript mit den Einstellungen auch noch zur Verfügung stellen?
                                        Und wie geht das mit der Statistic Id?

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

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

                                          @arnod Super View. Meinst du, du könntest dein Skript mit den Einstellungen auch noch zur Verfügung stellen?

                                          Kein Problem, hier das passende Script:
                                          Husqvarna_Script.js

                                          Und wie geht das mit der Statistic Id?

                                          Dazu musst du in der main.js vom Adapter createObjects(mowerData) die fehlenden Objekte eintragen:

                                          await this.setObjectNotExistsAsync(mowerData[i].id + '.system.serialNumber', {
                                          						type: 'state',
                                          						common: {
                                          							name: 'Device serialnumber',
                                          							desc: 'Device serialnumber',
                                          							type: 'number', // acc. API it should be 'string'
                                          							role: 'info.serialnumber',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					
                                          					// create channel "statistics"
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics', {
                                          						type: 'channel',
                                          						common: {
                                          							name: 'statistics',
                                          							desc: 'statistics',
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.cuttingBladeUsageTime', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Nutzungsdauer der Schneidklinge',
                                          							desc: 'Nutzungsdauer der Schneidklinge',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							unit: 'ms',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.numberOfChargingCycles', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Anzahl der Ladezyklen',
                                          							desc: 'Anzahl der Ladezyklen',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.numberOfCollisions', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Anzahl der Kollisionen',
                                          							desc: 'Anzahl der Kollisionen',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.totalChargingTime', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Gesamtladezeit',
                                          							desc: 'Gesamtladezeit',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							unit: 'ms',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.totalCuttingTime', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Gesamt Maehzeit',
                                          							desc: 'Gesamt Maehzeit',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							unit: 'ms',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.totalRunningTime', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Gesamtlaufzeit',
                                          							desc: 'Gesamtlaufzeit',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							unit: 'ms',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          					await this.setObjectNotExistsAsync(mowerData[i].id + '.statistics.totalSearchingTime', {
                                          						type: 'value',
                                          						common: {
                                          							name: 'Gesamtsuchzeit',
                                          							desc: 'Gesamtsuchzeit',
                                          							type: 'number',
                                          							role: 'value',
                                          							min: 0,
                                          							unit: 'ms',
                                          							read: true,
                                          							write: false
                                          						},
                                          						native: {}
                                          					});
                                          

                                          und in fillObjects(mowerData)die Werte zuweisen:

                                                                  this.setStateAsync(mowerData[i].id + '.statistics.cuttingBladeUsageTime', {val: mowerData[i].attributes.statistics.cuttingBladeUsageTime, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.numberOfChargingCycles', {val: mowerData[i].attributes.statistics.numberOfChargingCycles, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.numberOfCollisions', {val: mowerData[i].attributes.statistics.numberOfCollisions, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.totalChargingTime', {val: mowerData[i].attributes.statistics.totalChargingTime, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.totalCuttingTime', {val: mowerData[i].attributes.statistics.totalCuttingTime, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.totalRunningTime', {val: mowerData[i].attributes.statistics.totalRunningTime, ack: true});
                                          			this.setStateAsync(mowerData[i].id + '.statistics.totalSearchingTime', {val: mowerData[i].attributes.statistics.totalSearchingTime, ack: true});
                                          

                                          Dann nur noch in async connectToWS()

                                          if ('statistics' in jsonMessage.attributes) {
                                          	this.setStateAsync(jsonMessage.id + '.statistics.cuttingBladeUsageTime', {val: jsonMessage.attributes.statistics.cuttingBladeUsageTime, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.numberOfChargingCycles', {val: jsonMessage.attributes.statistics.numberOfChargingCycles, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.numberOfCollisions', {val: jsonMessage.attributes.statistics.numberOfCollisions, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.totalChargingTime', {val: jsonMessage.attributes.statistics.totalChargingTime, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.totalCuttingTime', {val: jsonMessage.attributes.statistics.totalCuttingTime, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.totalRunningTime', {val: jsonMessage.attributes.statistics.totalRunningTime, ack: true});
                                          	this.setStateAsync(jsonMessage.id + '.statistics.totalSearchingTime', {val: jsonMessage.attributes.statistics.totalSearchingTime, ack: true});
                                          	// this.log.debug(`[wss.on - message]: jsonMessage.attributes.statistics: ${JSON.stringify(jsonMessage.attributes.statistics)}`);
                                          }
                                          

                                          Danach beim Adapter noch den Dateiupload ausführen und dann sollten die Statistics Werte vorhanden sein.
                                          Du solltest dich aber einigermaßen auskennen, um das zu ändern oder ein Issue auf Github aufmachen und den Entwickler bitten die Statistics Werte mit aufzunehmen.

                                          L bergjet 2 Replies Last reply Reply Quote 0
                                          • L
                                            lustig29 @ArnoD last edited by

                                            @arnod Oh, vielen Dank. Das mit den Skript mache ich noch selber. Den Rest über lasse ich dann lieber den Profis. 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            874
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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