Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter Husqvarna Automower v0.3.x

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    1.5k

  • Neuer ioBroker-Blog online: MonatsrĂŒckblick MĂ€rz/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.3k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.1k

Test Adapter Husqvarna Automower v0.3.x

Geplant Angeheftet Gesperrt Verschoben Tester
husqvarnaautomower
439 BeitrÀge 73 Kommentatoren 123.2k Aufrufe 62 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • R reutli

    @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 Offline
    T Offline
    TomBo1969
    schrieb am zuletzt editiert von
    #296

    @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 Antwort Letzte Antwort
    0
    • Q Qlink

      @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

      T Offline
      T Offline
      TomBo1969
      schrieb am zuletzt editiert von
      #297

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

      Q 1 Antwort Letzte Antwort
      0
      • T TomBo1969

        @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 Offline
        R Offline
        reutli
        schrieb am zuletzt editiert von
        #298

        @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
        

        iobroker in Debian-VM auf Proxmox Server (Ryzen 7 / 32GB / 1TB NVMe SSD) als Master - mehrere Raspberry Pis (3+4) als Slaves. InfluxDB V2 und Grafana auf LXC.

        *Wer freundlich ist, dem wird freundlich geholfen *

        1 Antwort Letzte Antwort
        0
        • T TomBo1969

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

          Q Offline
          Q Offline
          Qlink
          schrieb am zuletzt editiert von
          #299

          @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 Antwort Letzte Antwort
          0
          • Q Qlink

            @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 Offline
            R Offline
            reutli
            schrieb am zuletzt editiert von
            #300

            @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

            iobroker in Debian-VM auf Proxmox Server (Ryzen 7 / 32GB / 1TB NVMe SSD) als Master - mehrere Raspberry Pis (3+4) als Slaves. InfluxDB V2 und Grafana auf LXC.

            *Wer freundlich ist, dem wird freundlich geholfen *

            1 Antwort Letzte Antwort
            0
            • T TomBo1969

              @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.

              K Offline
              K Offline
              Kanumouse
              schrieb am zuletzt editiert von
              #301

              @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 Antwort Letzte Antwort
              0
              • L lustig29

                @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?

                A Offline
                A Offline
                ArnoD
                schrieb am zuletzt editiert von
                #302

                @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 Antwort Letzte Antwort
                0
                • A ArnoD

                  @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 Offline
                  L Offline
                  lustig29
                  schrieb am zuletzt editiert von lustig29
                  #303

                  @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 Antwort Letzte Antwort
                  0
                  • L 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 Offline
                    A Offline
                    ArnoD
                    schrieb am zuletzt editiert von
                    #304

                    @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 bergjetB 2 Antworten Letzte Antwort
                    0
                    • A ArnoD

                      @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 Offline
                      L Offline
                      lustig29
                      schrieb am zuletzt editiert von
                      #305

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

                      opossumO 1 Antwort Letzte Antwort
                      0
                      • L lustig29

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

                        opossumO Offline
                        opossumO Offline
                        opossum
                        schrieb am zuletzt editiert von opossum
                        #306

                        Moin, @ArnoD,

                        so ganz habe ich das noch nicht gerafft. Habe die main.js gepatched, auch den Dateiupload gemacht. NatĂŒrlich den Adapter vorher gestoppt und die originale main.js gesichert. Es wurden im Objektbaum auch die Objekte angelegt.

                        a598562b-28b3-4cc2-9f58-e7331614ce7b-image.png

                        Leider werden die Datenpunkte noch nicht befĂŒllt. Bin da noch auf der Suche, warum da nichts geschrieben wird. Kannst Du mir sagen, was ich da falsch mache?

                        Vielen Dank fĂŒr die Bereitstellung Deiner VIS.

                        https://www.schlepper-petersdorf.de

                        A bergjetB 2 Antworten Letzte Antwort
                        0
                        • opossumO opossum

                          Moin, @ArnoD,

                          so ganz habe ich das noch nicht gerafft. Habe die main.js gepatched, auch den Dateiupload gemacht. NatĂŒrlich den Adapter vorher gestoppt und die originale main.js gesichert. Es wurden im Objektbaum auch die Objekte angelegt.

                          a598562b-28b3-4cc2-9f58-e7331614ce7b-image.png

                          Leider werden die Datenpunkte noch nicht befĂŒllt. Bin da noch auf der Suche, warum da nichts geschrieben wird. Kannst Du mir sagen, was ich da falsch mache?

                          Vielen Dank fĂŒr die Bereitstellung Deiner VIS.

                          A Offline
                          A Offline
                          ArnoD
                          schrieb am zuletzt editiert von
                          #307

                          @opossum

                          Ich habe gestern ein Issue auf GitHub eröffnet, mit der Bitte das zu integrieren.
                          ice987987 hat das heute bereits umgesetzt und ich habe es auch schon getestet und es funktioniert.

                          Einzige Änderung zu meiner Version, die State werden nicht mehr vom Adapter automatisch in h umgerechnet, sondern in s angezeigt.
                          Das kann man aber in VIS Editor mit Bindings z.B so lösen:

                          {v:husqvarna-automower.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.statistics.totalSearchingTime;(v/3600).toFixed(0)} h
                          

                          Einfach heute ĂŒber Github den Adapter aktualisieren. Es wird noch keine neue Version angezeigt.

                          opossumO 1 Antwort Letzte Antwort
                          1
                          • A ArnoD

                            @opossum

                            Ich habe gestern ein Issue auf GitHub eröffnet, mit der Bitte das zu integrieren.
                            ice987987 hat das heute bereits umgesetzt und ich habe es auch schon getestet und es funktioniert.

                            Einzige Änderung zu meiner Version, die State werden nicht mehr vom Adapter automatisch in h umgerechnet, sondern in s angezeigt.
                            Das kann man aber in VIS Editor mit Bindings z.B so lösen:

                            {v:husqvarna-automower.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.statistics.totalSearchingTime;(v/3600).toFixed(0)} h
                            

                            Einfach heute ĂŒber Github den Adapter aktualisieren. Es wird noch keine neue Version angezeigt.

                            opossumO Offline
                            opossumO Offline
                            opossum
                            schrieb am zuletzt editiert von
                            #308

                            Hallo, @arnod,
                            danke, dass Du Dich gekĂŒmmert hast. Funktioniert jetzt mit meinem Husqvarna 315X ohne Probleme.

                            https://www.schlepper-petersdorf.de

                            K K 2 Antworten Letzte Antwort
                            0
                            • opossumO opossum

                              Hallo, @arnod,
                              danke, dass Du Dich gekĂŒmmert hast. Funktioniert jetzt mit meinem Husqvarna 315X ohne Probleme.

                              K Offline
                              K Offline
                              Kanumouse
                              schrieb am zuletzt editiert von
                              #309

                              Hi,
                              ich habe noch zwei Fragen zum Adapter, vielleicht kann mir die jemand beantworten.

                              1. Durch was wird der Datenpunkt "CuttingBladeUsageTime" getriggert?
                              2. Ich habe einen 315X, dort lassen sich meines Wissens nach nur zwei Startzeiten pro Tag programmieren. Bei den Objekten finde ich aber die Möglichkeit 4 Startzeiten pro Tage festzulegen (unter calender). Ist das fĂŒr andere Modelle gedacht oder habe ich da einen Denkfehler?
                              1 Antwort Letzte Antwort
                              0
                              • K Offline
                                K Offline
                                Kaschi68
                                schrieb am zuletzt editiert von
                                #310

                                Hallo Zusammen, ich habe bei Husqvarna nach der neuen Anleitung einen Acc erstellt und auch den Application Key und den Application Secret bekommen. Der Adapter fĂŒllt auch die ganzen Objekte mit Daten nach einem Neustart. Und das ist auch mein Problem. Alle Daten werden nur nach Neustart aktualisiert. Das ist natĂŒrlich nicht so toll wenn ich den Status vom Mower brauche.

                                Vielleicht habe ich auch bei dem Einrichten des Developer Acc einen Fehler gemacht
..
                                Aktuell habe ich bei Husqvarna folgende API Daten.
                                curl -X Post -d „


.. ergibt auch eine Antwort ohne Fehler.

                                Was kann ich tun das sich meine Objekte stetig aktualisieren ?

                                Vielen Dank und Gruß

                                47D6192B-43D7-4B4F-AE12-E1849567CA86.jpeg

                                Nach Neustart Folgendes im Protokoll

                                9D52B431-2933-4821-9BDC-5737D4923D20.jpeg

                                Thomas BraunT 1 Antwort Letzte Antwort
                                0
                                • K Kaschi68

                                  Hallo Zusammen, ich habe bei Husqvarna nach der neuen Anleitung einen Acc erstellt und auch den Application Key und den Application Secret bekommen. Der Adapter fĂŒllt auch die ganzen Objekte mit Daten nach einem Neustart. Und das ist auch mein Problem. Alle Daten werden nur nach Neustart aktualisiert. Das ist natĂŒrlich nicht so toll wenn ich den Status vom Mower brauche.

                                  Vielleicht habe ich auch bei dem Einrichten des Developer Acc einen Fehler gemacht
..
                                  Aktuell habe ich bei Husqvarna folgende API Daten.
                                  curl -X Post -d „


.. ergibt auch eine Antwort ohne Fehler.

                                  Was kann ich tun das sich meine Objekte stetig aktualisieren ?

                                  Vielen Dank und Gruß

                                  47D6192B-43D7-4B4F-AE12-E1849567CA86.jpeg

                                  Nach Neustart Folgendes im Protokoll

                                  9D52B431-2933-4821-9BDC-5737D4923D20.jpeg

                                  Thomas BraunT Online
                                  Thomas BraunT Online
                                  Thomas Braun
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #311

                                  @kaschi68

                                  Ich wĂŒrde ja aktuelle Versionen fahren.
                                  nodejs16 / js-controller 4.

                                  Linux-Werkzeugkasten:
                                  https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                  NodeJS Fixer Skript:
                                  https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                  iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                  K 1 Antwort Letzte Antwort
                                  0
                                  • A ArnoD

                                    @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.

                                    bergjetB Offline
                                    bergjetB Offline
                                    bergjet
                                    schrieb am zuletzt editiert von
                                    #312

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

                                    Kein Problem, hier das passende Script:

                                    //***************************************************************************************************
                                    //++++++++++++++++++++++++++++++++++++++++  USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++++
                                    
                                    const instanz = '0_userdata.0.';
                                    const PfadEbene1 = 'Husqvarna.';
                                    const PfadEbene2 = ['Statistik.', 'Zeiten.', 'Allgemein.'];
                                    const Mover_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
                                    
                                    //---------------------------------------------------------------------------------------------------
                                    //++++++++++++++++++++++++++++++++++++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++
                                    //---------------------------------------------------------------------------------------------------
                                    

                                    Mover_ID ist klar.
                                    Aber mĂŒssen die Datenpunkte Statistik, Zeiten, Allgemein mit irgendwas ĂŒbereinstimmen?
                                    Diese werden ja vom Script angelegt.

                                    homee, ioBroker, iMac, iPhone, Sonos, Alaxa

                                    A 1 Antwort Letzte Antwort
                                    0
                                    • opossumO opossum

                                      Moin, @ArnoD,

                                      so ganz habe ich das noch nicht gerafft. Habe die main.js gepatched, auch den Dateiupload gemacht. NatĂŒrlich den Adapter vorher gestoppt und die originale main.js gesichert. Es wurden im Objektbaum auch die Objekte angelegt.

                                      a598562b-28b3-4cc2-9f58-e7331614ce7b-image.png

                                      Leider werden die Datenpunkte noch nicht befĂŒllt. Bin da noch auf der Suche, warum da nichts geschrieben wird. Kannst Du mir sagen, was ich da falsch mache?

                                      Vielen Dank fĂŒr die Bereitstellung Deiner VIS.

                                      bergjetB Offline
                                      bergjetB Offline
                                      bergjet
                                      schrieb am zuletzt editiert von
                                      #313

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

                                      Leider werden die Datenpunkte noch nicht befĂŒllt

                                      Bei mir auch nicht. Was hast du gemacht, dass es nun geht?

                                      homee, ioBroker, iMac, iPhone, Sonos, Alaxa

                                      opossumO 1 Antwort Letzte Antwort
                                      0
                                      • bergjetB bergjet

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

                                        Kein Problem, hier das passende Script:

                                        //***************************************************************************************************
                                        //++++++++++++++++++++++++++++++++++++++++  USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++++
                                        
                                        const instanz = '0_userdata.0.';
                                        const PfadEbene1 = 'Husqvarna.';
                                        const PfadEbene2 = ['Statistik.', 'Zeiten.', 'Allgemein.'];
                                        const Mover_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
                                        
                                        //---------------------------------------------------------------------------------------------------
                                        //++++++++++++++++++++++++++++++++++++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++
                                        //---------------------------------------------------------------------------------------------------
                                        

                                        Mover_ID ist klar.
                                        Aber mĂŒssen die Datenpunkte Statistik, Zeiten, Allgemein mit irgendwas ĂŒbereinstimmen?
                                        Diese werden ja vom Script angelegt.

                                        A Offline
                                        A Offline
                                        ArnoD
                                        schrieb am zuletzt editiert von ArnoD
                                        #314

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

                                        Aber mĂŒssen die Datenpunkte Statistik, Zeiten, Allgemein mit irgendwas ĂŒbereinstimmen?
                                        Diese werden ja vom Script angelegt.

                                        Nein, diese werden automatisch angelegt und befĂŒllt.
                                        Wurden bei dir die einzelnen Objekt ID`s vom Script angelegt?
                                        Was wird nicht befĂŒllt?

                                        bergjetB 1 Antwort Letzte Antwort
                                        0
                                        • Thomas BraunT Thomas Braun

                                          @kaschi68

                                          Ich wĂŒrde ja aktuelle Versionen fahren.
                                          nodejs16 / js-controller 4.

                                          K Offline
                                          K Offline
                                          Kaschi68
                                          schrieb am zuletzt editiert von
                                          #315

                                          @thomas-braun

                                          Alles erledigt, aber Werte Ă€ndern sich nur bei Neustart des Adapters. Selbst wenn der Mower unterwegs ist Ă€ndert sich nichts. Developer Acc hat ice987 fĂŒr mich geprĂŒft. Der ist iO angelegt und verknĂŒpft.

                                          Es handelt sich bei den Mower um den AM 415X mit neuster Firmware.

                                          Im App werden die Daten stÀndig aktualisiert, im Adapter nur bei Neustart des Adapters.

                                          js-controller ist jetzt 4.0.23 und node bei 16.

                                          G 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          582

                                          Online

                                          32.9k

                                          Benutzer

                                          83.2k

                                          Themen

                                          1.3m

                                          BeitrÀge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2026
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe