Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Adapter: Worx Landroid v2.x.x

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Adapter: Worx Landroid v2.x.x

Geplant Angeheftet Gesperrt Verschoben Entwicklung
1.2k Beiträge 121 Kommentatoren 459.2k Aufrufe 64 Watching
  • Ä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.
  • hsteinmeH hsteinme

    @cosmicbase Handarbeit ist angesagt - wobei Du gern meine Vorlage über die Zwischenablage kopieren kannst und dabei nicht vergessen darfst, die Seriennummer Deines Mähers dort statt der vielen Neunen einzusetzen.

    C Offline
    C Offline
    Cosmicbase
    schrieb am zuletzt editiert von
    #351

    @hsteinme Also habe ich die dich richtig verstanden das dein privater Datenpunkt in 0_userdata.0 liegt und das unter Javascript.0 ein Skript läuft mit deinem entsprechenden Inhalt.

    hsteinmeH 1 Antwort Letzte Antwort
    0
    • C Cosmicbase

      @hsteinme Also habe ich die dich richtig verstanden das dein privater Datenpunkt in 0_userdata.0 liegt und das unter Javascript.0 ein Skript läuft mit deinem entsprechenden Inhalt.

      hsteinmeH Online
      hsteinmeH Online
      hsteinme
      schrieb am zuletzt editiert von hsteinme
      #352

      @cosmicbase Skripte liegen nicht unter javascript.0 (Namen sind Schall und Rauch). Skripte liegen im Reiter Skripte. Ehe Du hier weiter machst, empfehle ich Dir, irgendwas Einleitendes über die Anlage von Javaskripten nachzulesen.

      C 1 Antwort Letzte Antwort
      0
      • hsteinmeH hsteinme

        @cosmicbase Skripte liegen nicht unter javascript.0 (Namen sind Schall und Rauch). Skripte liegen im Reiter Skripte. Ehe Du hier weiter machst, empfehle ich Dir, irgendwas Einleitendes über die Anlage von Javaskripten nachzulesen.

        C Offline
        C Offline
        Cosmicbase
        schrieb am zuletzt editiert von
        #353

        @hsteinme sorry klar ich meine nicht den Adapter. Habe mich geirrt. Ich habe ja schon Skripte laufen. Natürlich unter dem Reiter Skripte. Meine sind halt Blockly.

        C 1 Antwort Letzte Antwort
        0
        • C Cosmicbase

          @hsteinme sorry klar ich meine nicht den Adapter. Habe mich geirrt. Ich habe ja schon Skripte laufen. Natürlich unter dem Reiter Skripte. Meine sind halt Blockly.

          C Offline
          C Offline
          Cosmicbase
          schrieb am zuletzt editiert von Cosmicbase
          #354

          @hsteinme
          Das skript von dir schaut bei mir jetzt so aus.

          'use strict';
           
           const idBladeWorkTime = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time';
           const idBladeWorkTimeReset = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time_reset';
           const idBladeWorkTimeCurrent = '0_userdata.0.worx.blade_work_time_current';
            
            on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                setState(idBladeWorkTimeCurrent, getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val);
                })
          

          Der Wert wo ausgegeben wird ist dann sicherlich Minuten oder?
          Wenn ich den Wert in h/min haben will brauche ich dann parallel ein zusätzliches Javascript?
          Oder kann ich die Zeitumrechnung einfach mit einbauen?
          So nach dem Beispiel.

          'use strict';
           
           const idBladeWorkTime = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time';
           const idBladeWorkTimeReset = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time_reset';
           const idBladeWorkTimeCurrent = '0_userdata.0.worx.blade_work_time_current';
            
          on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                setState(idBladeWorkTimeCurrent, getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val);
                })
          
          on({id: [idBladeWorkTimeCurrent], change: "ne"}, function (dp) {
          	var timenew = Math.floor(dp.state.val / 3600 )+'h'+Math.floor( (dp.state.val % 3600) / 60 )+'min';
              	setState(idBladeWorkTimeCurrent,timenew);
          });
           
          

          Kann ich das umrechnen von Minuten in h/min auch in das Skript von dir so miteinbauen?
          Und wie könnte es in deinem o.g. Skript als komplettes aussehen?

          Den privaten DP '0_userdata.0.worx.blade_work_time_current' habe ich in der VIS zur Anzeige hinterlegt.
          Einzig das er glaube ich in Minuten angezeigt wird. Ich will ihn gerne in Sunden/Minuten angezeigt haben.
          Kannst du das skript auf Fehler überprüfen und ggf. ändern?

          Wäre toll wenn du ne Lösung hättest.

          hsteinmeH 1 Antwort Letzte Antwort
          0
          • C Cosmicbase

            @hsteinme
            Das skript von dir schaut bei mir jetzt so aus.

            'use strict';
             
             const idBladeWorkTime = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time';
             const idBladeWorkTimeReset = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time_reset';
             const idBladeWorkTimeCurrent = '0_userdata.0.worx.blade_work_time_current';
              
              on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                  setState(idBladeWorkTimeCurrent, getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val);
                  })
            

            Der Wert wo ausgegeben wird ist dann sicherlich Minuten oder?
            Wenn ich den Wert in h/min haben will brauche ich dann parallel ein zusätzliches Javascript?
            Oder kann ich die Zeitumrechnung einfach mit einbauen?
            So nach dem Beispiel.

            'use strict';
             
             const idBladeWorkTime = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time';
             const idBladeWorkTimeReset = 'worx.0.20193xxxxxx32683E.rawMqtt.raw.blade_work_time_reset';
             const idBladeWorkTimeCurrent = '0_userdata.0.worx.blade_work_time_current';
              
            on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                  setState(idBladeWorkTimeCurrent, getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val);
                  })
            
            on({id: [idBladeWorkTimeCurrent], change: "ne"}, function (dp) {
            	var timenew = Math.floor(dp.state.val / 3600 )+'h'+Math.floor( (dp.state.val % 3600) / 60 )+'min';
                	setState(idBladeWorkTimeCurrent,timenew);
            });
             
            

            Kann ich das umrechnen von Minuten in h/min auch in das Skript von dir so miteinbauen?
            Und wie könnte es in deinem o.g. Skript als komplettes aussehen?

            Den privaten DP '0_userdata.0.worx.blade_work_time_current' habe ich in der VIS zur Anzeige hinterlegt.
            Einzig das er glaube ich in Minuten angezeigt wird. Ich will ihn gerne in Sunden/Minuten angezeigt haben.
            Kannst du das skript auf Fehler überprüfen und ggf. ändern?

            Wäre toll wenn du ne Lösung hättest.

            hsteinmeH Online
            hsteinmeH Online
            hsteinme
            schrieb am zuletzt editiert von hsteinme
            #355

            @cosmicbase Der Ansatz, die Zeitumrechnung gleich im ersten on-Statement durchzuführen, ist ein guter Ansatz. Mit Deinem zweiten on-Statement läufst Du nämlich in eine Endlosschleife hinein: Wenn sich idBladeWorkTimeCurrent ändert, berechnest Du den Wert neu und änderst ihn damit erneut. Also schlägt wieder die zweite on-Angabe zu usw. usf.

            'use strict';
            
            const idBladeWorkTime = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time';
            const idBladeWorkTimeReset = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time_reset';
            const idBladeWorkTimeCurrent = '0_userdata.0.MyWorx.99999999999999999999.blade_work_time_current';
            
            function zweiStellig(zahl) {
                return zahl < 10 ? '0' + zahl : zahl
            }
            
            function stundenMinuten(minuten) {
                return parseInt(minuten / 60) + ':' + zweiStellig(minuten % 60);
            }
            
            on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                setState(idBladeWorkTimeCurrent, stundenMinuten(getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val));
            })
            

            Wegen einer besseren Übersichtlichkeit ist es sinnvoll, die Zeitumrechnung in eine eigene Funktion auszulagern.

            Wichtig: blade_work_time_current enthält jetzt keine Zahl mehr, sondern einen String. Also diesen bestehenden Datenpunkt zunächst löschen und als Typ String neu anlegen.

            C 1 Antwort Letzte Antwort
            0
            • hsteinmeH hsteinme

              @cosmicbase Der Ansatz, die Zeitumrechnung gleich im ersten on-Statement durchzuführen, ist ein guter Ansatz. Mit Deinem zweiten on-Statement läufst Du nämlich in eine Endlosschleife hinein: Wenn sich idBladeWorkTimeCurrent ändert, berechnest Du den Wert neu und änderst ihn damit erneut. Also schlägt wieder die zweite on-Angabe zu usw. usf.

              'use strict';
              
              const idBladeWorkTime = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time';
              const idBladeWorkTimeReset = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time_reset';
              const idBladeWorkTimeCurrent = '0_userdata.0.MyWorx.99999999999999999999.blade_work_time_current';
              
              function zweiStellig(zahl) {
                  return zahl < 10 ? '0' + zahl : zahl
              }
              
              function stundenMinuten(minuten) {
                  return parseInt(minuten / 60) + ':' + zweiStellig(minuten % 60);
              }
              
              on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                  setState(idBladeWorkTimeCurrent, stundenMinuten(getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val));
              })
              

              Wegen einer besseren Übersichtlichkeit ist es sinnvoll, die Zeitumrechnung in eine eigene Funktion auszulagern.

              Wichtig: blade_work_time_current enthält jetzt keine Zahl mehr, sondern einen String. Also diesen bestehenden Datenpunkt zunächst löschen und als Typ String neu anlegen.

              C Offline
              C Offline
              Cosmicbase
              schrieb am zuletzt editiert von
              #356

              @hsteinme vielen Dank für deine Hilfe.
              Die Idee die Zeit in h/min umzurechnen war nur so ein Gedanke der sicherlich Sinn macht.
              Den DP zu löschen und Zahl in String anzulegen habe ich verstanden.
              Leider kenn ich mich mit JS so gut wie gar nicht aus, deswegen meine Fragen.
              Kann ich dein Skript jetzt so anlegen oder sollten meine Funktionen aus 2 JS bestehen?
              Eins für Bladetime und 1 für Zeitumwandlung.

              hsteinmeH 1 Antwort Letzte Antwort
              0
              • C Cosmicbase

                @hsteinme vielen Dank für deine Hilfe.
                Die Idee die Zeit in h/min umzurechnen war nur so ein Gedanke der sicherlich Sinn macht.
                Den DP zu löschen und Zahl in String anzulegen habe ich verstanden.
                Leider kenn ich mich mit JS so gut wie gar nicht aus, deswegen meine Fragen.
                Kann ich dein Skript jetzt so anlegen oder sollten meine Funktionen aus 2 JS bestehen?
                Eins für Bladetime und 1 für Zeitumwandlung.

                hsteinmeH Online
                hsteinmeH Online
                hsteinme
                schrieb am zuletzt editiert von
                #357

                @cosmicbase Nimm das Skript, das ich Dir heute Morgen aufgeschrieben habe.

                C 2 Antworten Letzte Antwort
                0
                • hsteinmeH hsteinme

                  @cosmicbase Nimm das Skript, das ich Dir heute Morgen aufgeschrieben habe.

                  C Offline
                  C Offline
                  Cosmicbase
                  schrieb am zuletzt editiert von
                  #358

                  @hsteinme Wird gemacht.

                  Vielen herzlichen Dank

                  1 Antwort Letzte Antwort
                  0
                  • hsteinmeH hsteinme

                    @cosmicbase Nimm das Skript, das ich Dir heute Morgen aufgeschrieben habe.

                    C Offline
                    C Offline
                    Cosmicbase
                    schrieb am zuletzt editiert von Cosmicbase
                    #359

                    @hsteinme
                    Wird der 0_userdata.0.worx.blade_work_time_current erst befüllt wenn sich eine Differenz ergibt?
                    Im Moment steht weder false noch 0 drin.
                    Muss aber mit mähen auch noch warten weil ich frisch angesäht habe.
                    Lediglich einen Kantenschnitt habe ich durchgeführt.

                    Aber da hat sich auch nix an den Werten von

                    worx.0.999999999999999999.rawMqtt.raw.blade_work_time
                    und
                    worx.0.999999999999999999.rawMqtt.raw.blade_work_time_reset

                    geändert.😕

                    Der Datenpunkt ist jetzt string statt number.
                    JS wird unter Skripte/Common ausgeführt. Sollte doch richtig sein.
                    Die Rechte 664 habe ich unberührt lassen.

                    Kuck dir mal den Screenshot an.
                    c8806c3f-08c4-4c93-87c2-4abe1d4f71f0-image.png

                    hsteinmeH 1 Antwort Letzte Antwort
                    0
                    • C Cosmicbase

                      @hsteinme
                      Wird der 0_userdata.0.worx.blade_work_time_current erst befüllt wenn sich eine Differenz ergibt?
                      Im Moment steht weder false noch 0 drin.
                      Muss aber mit mähen auch noch warten weil ich frisch angesäht habe.
                      Lediglich einen Kantenschnitt habe ich durchgeführt.

                      Aber da hat sich auch nix an den Werten von

                      worx.0.999999999999999999.rawMqtt.raw.blade_work_time
                      und
                      worx.0.999999999999999999.rawMqtt.raw.blade_work_time_reset

                      geändert.😕

                      Der Datenpunkt ist jetzt string statt number.
                      JS wird unter Skripte/Common ausgeführt. Sollte doch richtig sein.
                      Die Rechte 664 habe ich unberührt lassen.

                      Kuck dir mal den Screenshot an.
                      c8806c3f-08c4-4c93-87c2-4abe1d4f71f0-image.png

                      hsteinmeH Online
                      hsteinmeH Online
                      hsteinme
                      schrieb am zuletzt editiert von
                      #360

                      @cosmicbase sagte in Adapter: Worx Landroid:

                      Wird der 0_userdata.0.worx.blade_work_time_current erst befüllt wenn sich eine Differenz ergibt?

                      Hier steht die Antwort, wann der private Datenpunkt gefüllt wird: https://forum.iobroker.net/post/639077

                      @cosmicbase sagte in Adapter: Worx Landroid:

                      Im Moment steht weder false noch 0 drin.

                      String-Datenpunkte sind anfänglich immer leer.

                      C 1 Antwort Letzte Antwort
                      0
                      • hsteinmeH hsteinme

                        @cosmicbase sagte in Adapter: Worx Landroid:

                        Wird der 0_userdata.0.worx.blade_work_time_current erst befüllt wenn sich eine Differenz ergibt?

                        Hier steht die Antwort, wann der private Datenpunkt gefüllt wird: https://forum.iobroker.net/post/639077

                        @cosmicbase sagte in Adapter: Worx Landroid:

                        Im Moment steht weder false noch 0 drin.

                        String-Datenpunkte sind anfänglich immer leer.

                        C Offline
                        C Offline
                        Cosmicbase
                        schrieb am zuletzt editiert von Cosmicbase
                        #361

                        @hsteinme
                        Habe dein Skript ausgiebig getestet. Im Adapter ist eine Differenz vorhanden, jedoch das JS Skript spuckt immer noch 0,00h/min aus.
                        Datenpunkt ist auch noch bei 0.
                        Irgendwas muss im Skript noch nicht stimmen.
                        Auch in der App wird unter Klingenlaufzeit 2h angezeigt, was ohne Umwandlung immerhin 120min wären.

                        Unbenannt.PNG

                        Hier sieht man das eine Differenz zwischen blade_work_time und blade_work_time_reset gebildet wurde.
                        Daraus sollte das js Skript doch die Zeit in Minuten oder mit Umwandlung in h/min ausgeben.

                        Ich werde heute noch das eingangs erwähnte Skript ohne Umwandlung probieren. Also nur die Ausgabe in Minuten.

                        1 Antwort Letzte Antwort
                        0
                        • hsteinmeH hsteinme

                          @cosmicbase Ich arbeite nicht mit Node-Red.

                          In der worx Adapter Version 1.3.7 benötigst Du folgende Datenpunkte

                          • worx.0.99999999999999999999.rawMqtt.raw.blade_work_time: Gesamtklingenlaufzeit
                          • worx.0.99999999999999999999.rawMqtt.raw.blade_work_time_reset: Klingenlaufzeit beim letzten Reset

                          Jetzt benötigst Du noch einen eigenen privaten Datenpunkt, den Du unter javascript.0 oder unter 0_userdata.0 selbst manuell im Objektbaum anlegen musst, z.B.

                          0_userdata.0.MyWorx.99999999999999999999.blade_work_time_current

                          Für diesen Datenpunkt vergibst Du den Typ Zahl, keinen Maximalwert, keine Maßeinheit sowie Lese- und Schreibberechtigungen.

                          'use strict';
                          
                          const idBladeWorkTime = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time';
                          const idBladeWorkTimeReset = 'worx.0.99999999999999999999.rawMqtt.raw.blade_work_time_reset';
                          const idBladeWorkTimeCurrent = '0_userdata.0.MyWorx.99999999999999999999.blade_work_time_current';
                          
                          on ({id: [idBladeWorkTime, idBladeWorkTimeReset], change: 'ne'}, function() {
                              setState(idBladeWorkTimeCurrent, getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val);
                          })
                          

                          Dieses Skript muss immer laufen. Immer dann, wenn sich der Wert von idBladeWorkTime oder der Wert von idBladeWorkTimeReset ändert, berechnet das Skript die Differenz dieser beiden Werte neu und stellt diese im Datenpunkt idBladeWorkTimeCurrent ab.

                          Mit Deinem privaten Datenpunkt kannst Du nun arbeiten wie mit anderen Datenpunkten. Insbesondere kannst Du diesen Datenpunkt in der Vis darstellen.

                          C Offline
                          C Offline
                          Cosmicbase
                          schrieb am zuletzt editiert von Cosmicbase
                          #362

                          @hsteinme said in Adapter: Worx Landroid:

                          Für diesen Datenpunkt vergibst Du den Typ Zahl, keinen Maximalwert, keine Maßeinheit sowie Lese- und Schreibberechtigungen.

                          Bedeutet keine Lese und Schreibberechtigung = 0 oder die typische Lese-Schreibberechtigung = 664 ?

                          Kannst du nochmal einen Blich auf das oder die Skripte werfen?

                          Der 0.Userdata DP bleibt auf Wert 0 bzw. 0:00 obwohl scheinbar die blade_time_current mit Daten befüllt wird.

                          Unbenannt.PNG

                          1 Antwort Letzte Antwort
                          0
                          • C Offline
                            C Offline
                            Cosmicbase
                            schrieb am zuletzt editiert von Cosmicbase
                            #363

                            Jetzt hab ich mal die 2 Datenpunkte nen Screenshoot gemacht.

                            Unbenannt.PNG

                            Unbenannt.PNG

                            Einmal läuft ein JS mit der Umrechnung in h/min und einmal ganz normal in Minuten.
                            Leider haben die Skripte zu keinem Zeitpunkt eine klare Differenz errechnet.

                            hsteinmeH 1 Antwort Letzte Antwort
                            0
                            • C Cosmicbase

                              Jetzt hab ich mal die 2 Datenpunkte nen Screenshoot gemacht.

                              Unbenannt.PNG

                              Unbenannt.PNG

                              Einmal läuft ein JS mit der Umrechnung in h/min und einmal ganz normal in Minuten.
                              Leider haben die Skripte zu keinem Zeitpunkt eine klare Differenz errechnet.

                              hsteinmeH Online
                              hsteinmeH Online
                              hsteinme
                              schrieb am zuletzt editiert von
                              #364

                              @cosmicbase Sorry, in meinem Skript hatte das Fehlerteufelchen zugeschlagen. Bitte tausche die nachfolgend zitierte Zeile in dem Skript aus:

                              alt:

                                  setState(idBladeWorkTimeCurrent, stundenMinuten(getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val));
                              

                              neu:

                                  setState(idBladeWorkTimeCurrent, stundenMinuten(getState(idBladeWorkTime).val - getState(idBladeWorkTimeReset).val));
                              

                              Starte das geänderte Skript. lass Deinem Mäher eine halbe Stunde lang mähen und beobachte dabei den privaten Datenpunkt nach frühestens 10 Minuten.

                              C 1 Antwort Letzte Antwort
                              0
                              • hsteinmeH hsteinme

                                @cosmicbase Sorry, in meinem Skript hatte das Fehlerteufelchen zugeschlagen. Bitte tausche die nachfolgend zitierte Zeile in dem Skript aus:

                                alt:

                                    setState(idBladeWorkTimeCurrent, stundenMinuten(getState('idBladeWorkTime').val - getState('idBladeWorkTimeReset').val));
                                

                                neu:

                                    setState(idBladeWorkTimeCurrent, stundenMinuten(getState(idBladeWorkTime).val - getState(idBladeWorkTimeReset).val));
                                

                                Starte das geänderte Skript. lass Deinem Mäher eine halbe Stunde lang mähen und beobachte dabei den privaten Datenpunkt nach frühestens 10 Minuten.

                                C Offline
                                C Offline
                                Cosmicbase
                                schrieb am zuletzt editiert von Cosmicbase
                                #365

                                @hsteinme said in Adapter: Worx Landroid:

                                setState(idBladeWorkTimeCurrent, stundenMinuten(getState(idBladeWorkTime).val - getState(idBladeWorkTimeReset).val));

                                Super das es jetzt klappt. Zumindest nach dem ich das JS und den Adapter neu gestartet habe war es vollendet (siehe Bild).
                                Läuft der manuelle Kantenschnitt auch die Klingenzeit mit ein?

                                Das ganze könnte man auch mit dem Batterie cycle machen!

                                Kannst du mir das im Skript anpassen mit den stundenMinuten? Sollten ja Ladezyklen sein und keine Zeit.

                                'use strict';
                                
                                const idBatterieCycleTime = 'worx.0.99999999999999999.rawMqtt.raw.battery_charge_cycles';
                                const idBatterieCycleTimeReset = 'worx.0.99999999999999999.rawMqtt.raw.battery_charge_cycles_reset';
                                const idBatterieCycleTimeCurrent = '0_userdata.0.worx.batterie_cycle_time_current';
                                
                                on ({id: [idBatterieCycleTime, idBatterieCycleTimeReset], change: 'ne'}, function() {
                                setState(idBatterieCycleTimeCurrent, stundenMinuten(getState(idBatterieCycleTime).val - getState(idBatterieCycleTimeReset).val));
                                })
                                

                                Danke für deine Arbeit.

                                Unbenannt.PNG

                                PS:

                                Was ich bemerkt habe das auch nach 30 Minuten mähen sich nichts an den Raw Werten geändert hat. Scheinbar werden die Daten von der Cloud nur unregelmäßig zur Verfügung gestellt. Könnte natürlich auch sein das die Klingenzeit immer erst beim erreichen der vollen Stundnzahl aktualisiert wird. Schließlich wird sie in der App auch nur mit Stunden angezeigt.

                                Neues Update:

                                Wie du schon im GitHub geschrieben hast hat sich irgendwo bei der Bereitstellung der Daten aus der Cloud ein Fehler eingeschlichen.
                                Habe einen Klingenreset gemacht und dann ist die Klingenzeit ins Minus gegangen weil der Reset Wert höher ist als die tatsächliche Klingenzeit. Ich weiß das dies zwar wieder überschrieben wird, aber irgendwie komisch.
                                Hoffe das hier irgendwas verbessert wird.

                                hsteinmeH 1 Antwort Letzte Antwort
                                0
                                • C Cosmicbase

                                  @hsteinme said in Adapter: Worx Landroid:

                                  setState(idBladeWorkTimeCurrent, stundenMinuten(getState(idBladeWorkTime).val - getState(idBladeWorkTimeReset).val));

                                  Super das es jetzt klappt. Zumindest nach dem ich das JS und den Adapter neu gestartet habe war es vollendet (siehe Bild).
                                  Läuft der manuelle Kantenschnitt auch die Klingenzeit mit ein?

                                  Das ganze könnte man auch mit dem Batterie cycle machen!

                                  Kannst du mir das im Skript anpassen mit den stundenMinuten? Sollten ja Ladezyklen sein und keine Zeit.

                                  'use strict';
                                  
                                  const idBatterieCycleTime = 'worx.0.99999999999999999.rawMqtt.raw.battery_charge_cycles';
                                  const idBatterieCycleTimeReset = 'worx.0.99999999999999999.rawMqtt.raw.battery_charge_cycles_reset';
                                  const idBatterieCycleTimeCurrent = '0_userdata.0.worx.batterie_cycle_time_current';
                                  
                                  on ({id: [idBatterieCycleTime, idBatterieCycleTimeReset], change: 'ne'}, function() {
                                  setState(idBatterieCycleTimeCurrent, stundenMinuten(getState(idBatterieCycleTime).val - getState(idBatterieCycleTimeReset).val));
                                  })
                                  

                                  Danke für deine Arbeit.

                                  Unbenannt.PNG

                                  PS:

                                  Was ich bemerkt habe das auch nach 30 Minuten mähen sich nichts an den Raw Werten geändert hat. Scheinbar werden die Daten von der Cloud nur unregelmäßig zur Verfügung gestellt. Könnte natürlich auch sein das die Klingenzeit immer erst beim erreichen der vollen Stundnzahl aktualisiert wird. Schließlich wird sie in der App auch nur mit Stunden angezeigt.

                                  Neues Update:

                                  Wie du schon im GitHub geschrieben hast hat sich irgendwo bei der Bereitstellung der Daten aus der Cloud ein Fehler eingeschlichen.
                                  Habe einen Klingenreset gemacht und dann ist die Klingenzeit ins Minus gegangen weil der Reset Wert höher ist als die tatsächliche Klingenzeit. Ich weiß das dies zwar wieder überschrieben wird, aber irgendwie komisch.
                                  Hoffe das hier irgendwas verbessert wird.

                                  hsteinmeH Online
                                  hsteinmeH Online
                                  hsteinme
                                  schrieb am zuletzt editiert von
                                  #366

                                  @cosmicbase sagte in Adapter: Worx Landroid:

                                  Das ganze könnte man auch mit dem Batterie cycle machen!
                                  Kannst du mir das im Skript anpassen mit den stundenMinuten? Sollten ja Ladezyklen sein und keine Zeit.

                                  Dann schmeiß halt stundenMinuten mit dem zugehörigen Klammernpaar aus dem Skript raus.

                                  Nebenbei; Die Verwendung von "time" in der Benamsung des privaten Datenpunktes und der Variablen ist extrem unglücklich, denn "Sollten ja Ladezyklen sein und keine Zeit."

                                  C 1 Antwort Letzte Antwort
                                  0
                                  • hsteinmeH hsteinme

                                    @cosmicbase sagte in Adapter: Worx Landroid:

                                    Das ganze könnte man auch mit dem Batterie cycle machen!
                                    Kannst du mir das im Skript anpassen mit den stundenMinuten? Sollten ja Ladezyklen sein und keine Zeit.

                                    Dann schmeiß halt stundenMinuten mit dem zugehörigen Klammernpaar aus dem Skript raus.

                                    Nebenbei; Die Verwendung von "time" in der Benamsung des privaten Datenpunktes und der Variablen ist extrem unglücklich, denn "Sollten ja Ladezyklen sein und keine Zeit."

                                    C Offline
                                    C Offline
                                    Cosmicbase
                                    schrieb am zuletzt editiert von Cosmicbase
                                    #367

                                    @hsteinme

                                    'use strict';
                                     
                                    const idBatterieCycleTime = 'worx.0.9999999999999999.rawMqtt.raw.battery_charge_cycles';
                                    const idBatterieCycleTimeReset = 'worx.0.9999999999999999.rawMqtt.raw.battery_charge_cycles_reset';
                                    const idBatterieCycleTimeCurrent = '0_userdata.0.worx.batterie_cycle_time_current';
                                    
                                    on ({id: [idBatterieCycleTime, idBatterieCycleTimeReset], change: 'ne'}, function() {
                                        setState(idBatterieCycleTimeCurrent, getState(idBatterieCycleTime).val - getState(idBatterieCycleTimeReset).val);
                                    })
                                    

                                    So funktioniert auch die Batterie Cycle.

                                    Aber was mich ein wenig anwiedert ist die Tatsache das mal die Reset Werte unter RAW größer mal kleiner sind.
                                    So kommt es im privaten DP zu einem Minus Wert.

                                    FINDE DEN FEHLER, bzw. DIE FEHLER!!!

                                    Unbenannt.PNG

                                    Wie kann man dem Problem entgegen wirken das die Werte sich nicht immer drehen?
                                    Und warum werden die RAW Werte so zögerlich aktualisiert?

                                    Eventuell im JS ne Funktion das immer automatisch der größte Wert subtrahiert wird?

                                    Interessanterweise ist in der App immer alles richtig dargestellt...

                                    Screenshot_20210616_012313_it.positec.landroid.jpg

                                    hsteinmeH 1 Antwort Letzte Antwort
                                    0
                                    • C Cosmicbase

                                      @hsteinme

                                      'use strict';
                                       
                                      const idBatterieCycleTime = 'worx.0.9999999999999999.rawMqtt.raw.battery_charge_cycles';
                                      const idBatterieCycleTimeReset = 'worx.0.9999999999999999.rawMqtt.raw.battery_charge_cycles_reset';
                                      const idBatterieCycleTimeCurrent = '0_userdata.0.worx.batterie_cycle_time_current';
                                      
                                      on ({id: [idBatterieCycleTime, idBatterieCycleTimeReset], change: 'ne'}, function() {
                                          setState(idBatterieCycleTimeCurrent, getState(idBatterieCycleTime).val - getState(idBatterieCycleTimeReset).val);
                                      })
                                      

                                      So funktioniert auch die Batterie Cycle.

                                      Aber was mich ein wenig anwiedert ist die Tatsache das mal die Reset Werte unter RAW größer mal kleiner sind.
                                      So kommt es im privaten DP zu einem Minus Wert.

                                      FINDE DEN FEHLER, bzw. DIE FEHLER!!!

                                      Unbenannt.PNG

                                      Wie kann man dem Problem entgegen wirken das die Werte sich nicht immer drehen?
                                      Und warum werden die RAW Werte so zögerlich aktualisiert?

                                      Eventuell im JS ne Funktion das immer automatisch der größte Wert subtrahiert wird?

                                      Interessanterweise ist in der App immer alles richtig dargestellt...

                                      Screenshot_20210616_012313_it.positec.landroid.jpg

                                      hsteinmeH Online
                                      hsteinmeH Online
                                      hsteinme
                                      schrieb am zuletzt editiert von
                                      #368

                                      @cosmicbase sagte in Adapter: Worx Landroid:

                                      Aber was mich ein wenig anwiedert

                                      Geht's nicht auch 'ne Nummer kleiner?

                                      1 Antwort Letzte Antwort
                                      0
                                      • R Offline
                                        R Offline
                                        RalfEngelberth
                                        schrieb am zuletzt editiert von RalfEngelberth
                                        #369

                                        Hallo, ich habe folgendes Problem.
                                        Bis lang hat der Worksadapter bei mir prima funktionier.
                                        Seit dem letzten Gesamtupdate von IoBroker sowie auch JS Contoler funktioniert meine Ansteuerung über VIS an den Mäher nicht mehr.
                                        Ich habe mich über den Worksadapter bei Works angemeldet.
                                        9561d93a-7bf8-4a44-a81f-45260f098d7f-image.png

                                        Die Datenpunkte (welche ich auch schon mal komplett gelöscht habe) wurden auch angelegt.
                                        60f76973-0110-4a75-a3ff-7e3c0ec4f974-image.png

                                        Hier erfolgt aber keine Aktualisierung.

                                        Im Protokoll habe ich mehrere Fehlermeldungen

                                        Was mich wundert, die Seriennummer in den Objekten endet mit der *****1286
                                        Im Fehlerprotokoll endet aber die Seriennummer mit ****3000
                                        3b93c3fd-c31d-4cae-bd42-ff1857a59eb0-image.png

                                        Hat jemand eine Lösung?

                                        1 Antwort Letzte Antwort
                                        0
                                        • R Offline
                                          R Offline
                                          RalfEngelberth
                                          schrieb am zuletzt editiert von
                                          #370

                                          Hat keiner eine Lösung?

                                          arteckA 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          495

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

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