Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Worx v0.4.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • hsteinme
      hsteinme @Phtevn last edited by

      @Phtevn sagte in Test Adapter Worx v0.4.x:

      Wäre es vielleicht möglich per script den Mähplan adaptiv jedesmal so zu ändern, dass es z.B. so aussieht:
      es ist 9:50 Uhr morgens. Setze nun den Mähplan für den aktuellen tag auf Start: aktuelle Zeit + x Minuten mit Kantenschnitt. Dann sollte der Mäher doch eigentlich den edgecut mitmachen, oder?

      Ja, das funktioniert bestens. Ich habe eine derartige Lösung im Einsatz. Für erste Details schau doch mal hierhin.

      1 Reply Last reply Reply Quote 0
      • T
        tazdevil20 @Phtevn last edited by tazdevil20

        @Phtevn
        Ist eine gute Idee. Läst sich nur per Script realisieren. Bei meinem Versuch hat es funktioniert. Jedoch ist es über diesen Modus "nrur" einmal am Tag möglich die Rasenkante zu schneiden. "Nachteil" ist, dass er dann anschließend noch mäht. Das hat er auch gemacht als ich direkt nach dem Start die Konfiguration wieder entfernt habe.
        Müsste ich aber vielleicht auch nochmal etwas genauer testen.

        1 Reply Last reply Reply Quote 0
        • P
          Phtevn last edited by

          Ah super Anleitung im Roboter Forum.
          Ich werde mal versuchen das bei mir zu implementieren. Für den Anfang bin ich von der Mächtigkeit des ioBroker noch etwas überfordert. Hier ein Adapter, da eine neue Version 🙂
          Vielleicht hat ja einer von euch eine gute Seite mit Tipps oder Tutorials?

          1 Reply Last reply Reply Quote 0
          • streethawk
            streethawk last edited by

            Hi

            @☺Meistertr: Ich hääte mal ne Frage. Wäre es möglich auch die Landxcape Modelle zu unterstützen. Welche ja baugleich mit den Landroid / Worx Mähern sind allerdings einen anderen Server nutzen.

            In der Desk App konnte ich ihn einbinden und funktioniert auch. Hier musste nur die Adresse der WebApi eingetragen werden und der der SSL Schlüssel.

            Meistertr 1 Reply Last reply Reply Quote 0
            • Meistertr
              Meistertr Developer @streethawk last edited by

              @streethawk sollte mit dem worx Adapter von git gehen. In der Config kann nun der hersteller geändert werden

              1 Reply Last reply Reply Quote 0
              • L
                LJSven @tazdevil20 last edited by

                @tazdevil20 sagte in Test Adapter Worx v0.4.x:

                @Meistertr
                Hoffe es ist ok. Habe ein pull request mit folgenden Änderungen eingestellt:

                • Hinzufügen von "sendCommand". Dadurch kann man alle (?) aktuell verfügbaren Commands an Worx AWS senden. Hatte dadurch gehofft, dass ich das Problem mit dem EdgeCut (M500 mit FW 3.07+) durch etwas spielen könnte.
                • Entfernen von "math.round" für die totalTime/Distance/BladeTime. Hat nur bis zur ersten Stelle nach dem Komma gerundet. Fand ich nicht schön.

                Habe auch noch in meinem Git Neigung, Steigung und Richtung integriert. Leider weiß ich nicht wie ich einen weiteren pull request stellen könnte. Der würde dann auch noch kommen.

                Kommen diese Funktionen in der neuen Version? Mathematische Rundung find ich auch nicht gut - wie kann ich bei der aktuellen FW EdgeCut starten? Haben einen WR 105.SI mit der FW 3.52 / habe gestern auf EdgeCut gedrückt, der Roboter ist losgefahren, aber ohne zu mähen.

                T 1 Reply Last reply Reply Quote 0
                • T
                  tazdevil20 @LJSven last edited by

                  @LJSven
                  Hi,
                  das ist ein Problem von Worx. Aktueller Workaround ist ein Script welches EdgeCut startet.

                  Ich habe in meinem Script einfach zu der aktuellen Zeit 2 Minuten hinzugezählt und die Parameter für das automatische Mähen entsprechend gesetzt mit der Option EdgeCut = true.

                  Kann gerade leider das Script nicht posten, da ich unterwegs bin. Kann ich bei Bedarf aber gerne noch machen. Als Vorwarnung: Das Script ist sicherlich Verbesserungswürdig, da ich einiges sicherlich zu kompliziert gebaut habe.

                  L S 2 Replies Last reply Reply Quote 0
                  • L
                    LJSven @tazdevil20 last edited by

                    @tazdevil20 sagte in Test Adapter Worx v0.4.x:

                    @LJSven
                    Hi,
                    das ist ein Problem von Worx. Aktueller Workaround ist ein Script welches EdgeCut startet.

                    Ich habe in meinem Script einfach zu der aktuellen Zeit 2 Minuten hinzugezählt und die Parameter für das automatische Mähen entsprechend gesetzt mit der Option EdgeCut = true.

                    Kann gerade leider das Script nicht posten, da ich unterwegs bin. Kann ich bei Bedarf aber gerne noch machen. Als Vorwarnung: Das Script ist sicherlich Verbesserungswürdig, da ich einiges sicherlich zu kompliziert gebaut habe.

                    Kannst du mir das schicken, wenn du "Zeit" hast?

                    1 Reply Last reply Reply Quote 0
                    • S
                      steimi @tazdevil20 last edited by

                      @tazdevil20 bitte das Skript 'für alle' bereitstellen. danke

                      1 Reply Last reply Reply Quote 0
                      • arteck
                        arteck Developer Most Active last edited by arteck

                        ich mach es so

                        müsst ihr aber einen Datenpunkt anlegen über den getriggert wird.

                        let worx = 'worx.0.id_des_mover';
                        let laufzeit =  60;
                        let plusMinuten = 1;
                        
                        on({id: worx + '.mower.state', change: "ne"}, function (obj) {   
                            let stat = getState(worx + '.mower.state').val;
                        
                            if (!stat) {
                                worxLos(new Date(), '00:00', 0);  // wenn fertig dann wird wieder alles gelöscht 
                            }
                        });
                        
                        on({id: '0_userdata.0.draussen.worxKantenschnitt', change: "any"}, function (obj) {   
                            if (getState('0_userdata.0.draussen.worxKantenschnitt').val) {
                                if (!getState(worx + '.mower.state').val) {    // robi muss in der garage sein
                         
                                     
                                                let jetzt = new Date();    
                                                jetzt.setMinutes(jetzt.getMinutes() + plusMinuten );
                                                let los = new Date(jetzt);
                                    
                                                let startUm ;
                                    
                                                if (los.getMinutes() < 10) {
                                                    startUm = los.getHours() + ':0' + los.getMinutes();
                                                } else {
                                                    startUm = los.getHours() + ':' + los.getMinutes();
                                                }
                                    
                                           
                                    
                                                worxLos(los, startUm, laufzeit);
                                    
                                            }
                                        }
                                    });
                                    
                                    
                                    function worxLos(zeitstempel, startUm, laufzeit) {
                                        switch (zeitstempel.getDay()) {
                                            case 0:
                                                setState(worx + '.calendar.sunday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.sunday.workTime', laufzeit); 
                                                }, 1000 * 5); // warte 5 sekunden               
                                                break;
                                            case 1:
                                                setState(worx + '.calendar.monday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.monday.workTime', laufzeit);  
                                                }, 1000 * 5); // warte 5 sekunden                               
                                                break;
                                            case 2:
                                                setState(worx + '.calendar.tuesday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.tuesday.workTime', laufzeit);  
                                                }, 1000 * 5); // warte 5 sekunden                               
                                                break;
                                            case 3:
                                                setState(worx + '.calendar.wednesday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.wednesday.workTime', laufzeit);   
                                                }, 1000 * 5); // warte 5 sekunden                              
                                                break;
                                            case 4:
                                                setState(worx + '.calendar.thursday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.thursday.workTime', laufzeit); 
                                                }, 1000 * 5); // warte 5 sekunden                                
                                                break;
                                            case 5:
                                                setState(worx + '.calendar.friday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.friday.workTime', laufzeit);
                                                }, 1000 * 5); // warte 5 sekunden 
                                                break;
                                            case 6:
                                                setState(worx + '.calendar.saturday.startTime', startUm);
                                                setTimeout(function () {
                                                    setState(worx + '.calendar.saturday.workTime', laufzeit);  
                                                }, 1000 * 5); // warte 5 sekunden                                                                   
                                        }  
                                    }
                                    
                        
                        S 1 Reply Last reply Reply Quote 0
                        • T
                          tazdevil20 last edited by tazdevil20

                          Ich habe einen klein wenig anderen Ansatz.
                          Muss aber auch gestehen, dass ich glaube, dass ich aktuell noch ein Problem mit dem deaktivieren habe. Muss ich noch genauer Prüfen. Manche Variablen haben auch einen nicht perfekten Namen.

                          @arteck
                          Du betrachtest nicht den Start um x:59. Dann würde bei dir der EdgeCut nicht starten.

                          An zwei Stellen muss die eigene ID eingetragen werden. Muss ich noch anpassen, dass es nur noch eine Stelle ist.

                          var events = 'EigeneDatenpunkte.0.History.Events';
                          var MowerStatus = 'worx.0.!!!!mowerID!!!!.mower.status';
                          var script = "javascript.0.scriptEnabled.Garten.Mähroboter_Rasenkante";
                          var lastEdgeCut = "EigeneDatenpunkte.0.LandroidZuletztRasenkante"
                          var workingtime = 10;
                          var buffer = 2;
                          var enabledschedule, setval;
                          
                          function EdgeCut() {
                              var day, startzeittmp, currentHour, currentMin, starttime;
                              day = getWeekday();
                              var schedule = 'worx.0.!!!!mowerID!!!!.calendar.' + day + ".";
                              
                              var currentHour, currentMin, currentMonth;
                              var startzeittmp = new Date();
                              var gesamtzeit_start = new Date()/1;
                              if (startzeittmp.getHours() < 10) { currentHour = '0' + startzeittmp.getHours();} else {currentHour = startzeittmp.getHours()};
                              currentMin = startzeittmp.getMinutes()+buffer;
                              if (currentMin < 10)
                              { 
                                  currentMin = '0' + currentMin;
                              } else {
                                  if (currentMin == 60) { currentMin = "00"; currentHour = currentHour +1};
                                  if (currentMin == 61) { currentMin = "01"; currentHour = currentHour +1};
                              };
                          
                              starttime = currentHour  + ":" + currentMin;
                              
                              setState(schedule + "startTime", starttime);
                              setval = setTimeout(function () {
                                  setState(schedule + "workTime", workingtime);
                              }, 5000);
                          
                              setval = setTimeout(function () {
                                  setState(schedule + "borderCut", true);
                              }, 10000);
                              
                              log(schedule + "worktime");
                              log("Schneide Rasenkante um " + starttime);
                              setState(events, "Schneide Rasenkante um " + starttime);
                          }
                          
                          function getWeekday() {
                              var d = new Date();
                              var weekday = new Array(7);
                              weekday[0] = "sunday";
                              weekday[1] = "monday";
                              weekday[2] = "tuesday";
                              weekday[3] = "wednesday";
                              weekday[4] = "thursday";
                              weekday[5] = "friday";
                              weekday[6] = "saturday";
                          
                              var n = weekday[d.getDay()];
                              return n;
                          };
                          
                          EdgeCut();
                          
                          on({id: MowerStatus, change: "ne"}, function (obj) {
                              if(getState(MowerStatus).val >= 2 && enabledschedule === true) {
                                  setState(lastEdgeCut, formatDate(new Date(), 'DD.MM. hh:mm'));
                                  setState(schedule + "startTime", "00:00");
                                  setval = setTimeout(function () {
                                      setState(schedule + "workTime", 0);
                                  }, 5000);
                                  setval = setTimeout(function () {
                                      setState(schedule + "borderCut", false);
                                  }, 10000);
                                  setState(script, false);
                              };
                          });
                          

                          Kritik und Verbesserungsvorschläge sind ausdrücklich gewünscht.

                          arteck 1 Reply Last reply Reply Quote 0
                          • arteck
                            arteck Developer Most Active @tazdevil20 last edited by arteck

                            @tazdevil20 doch die minuten addition macht das automatisch.. das ist eine javascript funktion

                            var date = "2012-01-18T16:59";
                             let jetzt = new Date(date);    
                             jetzt.setMinutes(jetzt.getMinutes() + 1);
                             let los = new Date(jetzt);
                             let startUm = los.getHours() + ':' + los.getMinutes();
                            
                            log ("wert zurück  " + startUm);
                            
                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tazdevil20 @arteck last edited by

                              @arteck
                              Danke. Habe ich bei mir mal angepasst. Muss ich später mal testen.

                              Das Problem warum das Script nicht mehr gestoppt wurde habe ich auch gefunden. Wenn ich meine Tests durch habe kann ich es gerne nochmal bereitstellen. Allerdings arteck sein Script funktioniert ja scheinbar ohne Probleme.

                              1 Reply Last reply Reply Quote 0
                              • L
                                LJSven last edited by

                                Gibt es dieses Script auch als Blockly und ohne den internen Zeitplan? Ich habe es bei mir über den Google Calendar gelöst. Was muss ich genau machen, um den Kantenschnitt zu aktivieren? Wie ist die Folge?

                                arteck 1 Reply Last reply Reply Quote 0
                                • arteck
                                  arteck Developer Most Active @LJSven last edited by

                                  @LJSven es gibt keine Reihenfolge.. du musst halt nur die Zeitplandaten eintragen ..

                                  1 Reply Last reply Reply Quote 0
                                  • cvidal
                                    cvidal Forum Testing last edited by

                                    Seit heute habe ich neue Errors, hat das noch jemand?

                                    worx.0	2020-05-30 08:50:01.144	error	(16835) ERROR: StatusCodeError: 403 - "<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden</h1></center>\r\n</body>\r\n</html>\r\n"
                                    worx.0	2020-05-30 08:50:01.143	error	(16835) Could not Connect to Worx Server: StatusCodeError: 403 - "<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden</h1></center>\r\n</body>\
                                    worx.0	2020-05-30 08:50:00.948	info	(16835) starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.worx, node: v10.20.1, js-controller: 3.1.4
                                    
                                    S hsteinme 2 Replies Last reply Reply Quote 0
                                    • S
                                      skokarl @cvidal last edited by

                                      @cvidal

                                      da steht doch forbidden. Geht die App noch, oder hast Du das Kennwort geändert ?

                                      cvidal 1 Reply Last reply Reply Quote 0
                                      • cvidal
                                        cvidal Forum Testing @skokarl last edited by

                                        @skokarl
                                        Die App läuft noch. "forbidden" ist ja keine Lösung, Neuanmeldung mit den Adapter bringt auch nichts.
                                        Das Passiert bei Neuanmeldung:

                                        (16835) No mower found! {"_events":{},"_eventsCount":6,"_maxListeners":100,"USER":"***@***","PASS":"***,"adapter":{"logList":[],"aliases":{},"aliasPatterns":[],"objects":{
                                        

                                        Die Adapterversion ist 1.0.2

                                        arteck 1 Reply Last reply Reply Quote 0
                                        • arteck
                                          arteck Developer Most Active @cvidal last edited by arteck

                                          @cvidal und du kannst dich mit denselben daten wie du diese im Adapter eingetragen hast auf
                                          https://account.worxlandroid.com/login anmelden

                                          cvidal 2 Replies Last reply Reply Quote 0
                                          • cvidal
                                            cvidal Forum Testing @arteck last edited by

                                            @arteck
                                            Unbenannt.PNG
                                            Ja das Funktioniert.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            792
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            landroid worx
                                            36
                                            198
                                            20042
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo