Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Worx landroid automation

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Worx landroid automation

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      Nathanael last edited by

      Hallo,

      nachdem mein script immer größer wird, möchte ich das gelernte und ausprobierte mit euch teilen. Das Script ersetzt die Eigenverwaltung des roboters und läst damit wesentlich variablere Konfiguration zu.

      Verwendet:

      • Mail

      • Javascript

      Features:

      • Automatisches Mähprogramm

      • Einstellbare Tageszeiten

      • Rückholung bei Regen

      • Eine tägliche Rasenpflegeausfahrt, wenn die Mähzeit bereits beendet wurde

      • VIS-Einbindung für Ladezustand, Gerätezustand, Mähzeiten, START/STOP

      • Fehlermail, wenn WIFI verloren ist

      • Fehler, falls nicht funktionsfähig/umgekippt/Ausserhalb des Mähbereichs

      Offen:

      • Wetter-Forecast

      • Feiertagsunterbrechung

      • Mehrere Tageszeiten pro Tag

      ! //Rasenmäher Script ! var landroidIP = "IP-des-Roboters"; var homemail = "mailadresse@Mail-adapters"; var targetmail = "mytarget@mail"; var weeklyruntime = 1000; //Minutes of cutting grass e.g. 800m² require 1000 Minutes var pfad = "Mower" + "."; var mailout = false; var rainwaitcounter = 0; var rain_true = false; //wait two minutes bevor going into rains state. (helps against moistured bushes in the morning) var out_of_order = 0; ! var forceCreation = false; var datenpunkte = { 'State': {"init":0, "common": {name: 'Mow_State'}}, 'Charger_State': {"init":0, "common": {name: 'Mow_CHGstate'}}, 'Battery_State': {"init":0, "common": {name: 'Mow_Battery'}}, 'RainSensor': {"init":0, "common": {name: 'Mow_Rain'}}, 'Worktimethisweek': {"init":0, "common": {name: 'Mow_this_week'}}, 'Workpercent': {"init":0, "common": {name: 'Mow_this_week_percent'}}, 'Start_mower': {"init":false, "common": {name: 'Mower_Start'}}, 'Stop_mower': {"init":false, "common": {name: 'Mower_Stop'}}, 'Monday_start': {"init":false, "common": {name: 'Monday_start'}}, 'Monday_ende': {"init":false, "common": {name: 'Monday_ende'}}, 'Tuesday_start': {"init":false, "common": {name: 'Tuesday_start'}}, 'Tuesday_ende': {"init":false, "common": {name: 'Tuesday_ende'}}, 'Wednesday_start': {"init":false, "common": {name: 'Wednesday_start'}}, 'Wednesday_ende': {"init":false, "common": {name: 'Wednesday_ende'}}, 'Thursday_start': {"init":false, "common": {name: 'Thursday_start'}}, 'Thursday_ende': {"init":false, "common": {name: 'Thursday_ende'}}, 'Friday_start': {"init":false, "common": {name: 'Friday_start'}}, 'Friday_ende': {"init":false, "common": {name: 'Friday_ende'}}, 'Saturday_start': {"init":false, "common": {name: 'Saturday_start'}}, 'Saturday_ende': {"init":false, "common": {name: 'Saturday_ende'}}, 'Sunday_start': {"init":false, "common": {name: 'Sunday_start'}}, 'Sunday_ende': {"init":false, "common": {name: 'Sunday_ende'}}, 'Lunch_break': {"init":false, "common": {name: 'Lunch_break'}}, 'Mow_on_holidays': {"init":false, "common": {name: 'Mow_on_holidays'}}, 'Daily_Cut': {"init":"true", "common": {name: 'Daily_Cut'}}, // three states: false, true, done ! }; function createDp() { var name; var init; var common; for (var dp in datenpunkte) { name = pfad + dp; init = datenpunkte[dp].init; common = datenpunkte[dp].common; createState(name, init , forceCreation, common); } } //{"tpl":"tplBasicState","data":{"oid":"javascript.0.Mower:Start_Mower","visibility-cond":"==","visibility-val":1,"value":"true","html":"[aktualisieren]","name":"Javascript ausführen","class":"","icon_src":"","gestures-offsetX":0,"gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":""},"style":{"left":"318px","top":"28px","z-index":"40","color":"","font-family":"","font-style":"","font-size":"12px","width":"auto","height":"auto"},"widgetSet":"basic"}] on('javascript.0.Mower.Start_mower', function (obj) { if (!obj.state.ack && obj.state.val) { exec('curl -s --user admin:0000 -L ' + landroidIP + '/jsondata.cgi -H \"Authorization: Basic YWRtaW46MDAwMA== \" --data \"data=\"%\"5B\"%\"5B\"%\"22settaggi\"%\"22\"%\"2C11\"%\"2C1\"%\"5D\"%\"5D\" --compressed', function(err, stdout, stderr) { if (err) { log(err); return; } }); setState("javascript.0.Mower.Start_mower",false); } }); ! //{"tpl":"tplBasicState","data":{"oid":"javascript.0.Mower:Stop_Mower","visibility-cond":"==","visibility-val":1,"value":"true","html":"[aktualisieren]","name":"Javascript ausführen","class":"","icon_src":"","gestures-offsetX":0,"gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":""},"style":{"left":"318px","top":"28px","z-index":"40","color":"","font-family":"","font-style":"","font-size":"12px","width":"auto","height":"auto"},"widgetSet":"basic"}] on('javascript.0.Mower.Stop_mower', function (obj) { if (!obj.state.ack && obj.state.val) { exec('curl -s --user admin:0000 -L ' + landroidIP + '/jsondata.cgi -H \"Authorization: Basic YWRtaW46MDAwMA== \" --data \"data=\"%\"5B\"%\"5B\"%\"22settaggi\"%\"22\"%\"2C12\"%\"2C1\"%\"5D\"%\"5D\" --compressed', function(err, stdout, stderr) { if (err) { log(err); return; } }); setState("javascript.0.Mower.Stop_mower",false); } }); ! function mow_week_reset() { //reset the state every week setState(pfad + "Worktimethisweek",0); setState(pfad + "Workpercent",0); } ! function mow_day_reset() { //reset the state every week if (getState('javascript.0.Mower.Daily_Cut').val == "false" || getState('javascript.0.Mower.Daily_Cut').val == "true") { } else if (getState('javascript.0.Mower.Daily_Cut').val == "done") { setState(pfad + "Daily_Cut","true"); } } ! function mow_auto() { exec('curl -s --user admin:0000 -L ' + landroidIP + '/jsonDebug.cgi', function(err, stdout, stderr) { if (err) { out_of_order +1; setState(pfad + "State","Disconnected " + out_of_order); if (out_of_order == 10) { if (mailout === false){ sendTo("email", { from: homemail, to: targetmail, subject: "Mower OFF", text: "Your Mower is not reachable of offline" }); mailout = true; } log(out_of_order); } return; } out_of_order = 0; str = stdout; str = stdout.substring(stdout.indexOf("{\"landroid\":{\"state\":") + 22); str = str.substring(0, str.indexOf(",") -1); setState(pfad + "State",str); str = stdout.substring(stdout.indexOf("\"batteryCharger\":{\"state\":") + 27); str = str.substring(0, str.indexOf(",") -1); setState(pfad + "Charger_State",str); str = stdout.substring(stdout.indexOf("rainSensor") + 12); str = str.substring(0, str.indexOf(",")); if (str < 3000) { str = "Rain detected"} else if (rainwaitcounter !== 0) {str = "Rainwait " + rainwaitcounter + " min"} else {str = "Not raining"; rain_true = false} setState(pfad + "RainSensor",str); str = stdout.substring(stdout.indexOf("\"battery\":{\"percentage\":") + 24); str = str.substring(0, str.indexOf(",")); setState(pfad + "Battery_State",str); }); var now = currentTime(); var start = "javascript.0.Mower." + day_of_week() + "_start"; var end = "javascript.0.Mower." + day_of_week() + "_ende"; var mowerstate = getState('javascript.0.Mower.State').val; if (mowerstate != "home") { var marker = 0; marker = getState('javascript.0.Mower.Worktimethisweek').val; if (mowerstate == "grass cutting") { setState(pfad + "Worktimethisweek",marker + 1); mailout = false; var percent = marker*100/weeklyruntime; setState(pfad + "Workpercent",marker*100/weeklyruntime); } if (mowerstate == "idle") { if (mailout === false){ sendTo("email", { from: homemail, to: targetmail, subject: "Mower IDLE", text: "Your Mower is in IDLE State" }); mailout = true; } } if (getState('javascript.0.Mower.RainSensor').val == "Rain detected") { ! if (rain_true === false) { rain_true = true; } else { exec('curl -s --user admin:0000 -L ' + landroidIP + '/jsondata.cgi -H \"Authorization: Basic YWRtaW46MDAwMA== \" --data \"data=\"%\"5B\"%\"5B\"%\"22settaggi\"%\"22\"%\"2C12\"%\"2C1\"%\"5D\"%\"5D\" --compressed', function(err, stdout, stderr) { if (err) { log(err); return; } });} rainwaitcounter = 30; log("Raining - Going home"); } } if (mowerstate == "home" && getState('javascript.0.Mower.Charger_State').val == "idle" && rainwaitcounter === 0) { if (getState('javascript.0.Mower.Worktimethisweek').val <= weeklyruntime || getState('javascript.0.Mower.Daily_Cut').val == "true") { if(now > getState(start).val && now < getState(end).val) { //log ("IN"); exec('curl -s --user admin:0000 -L ' + landroidIP + '/jsondata.cgi -H \"Authorization: Basic YWRtaW46MDAwMA== \" --data \"data=\"%\"5B\"%\"5B\"%\"22settaggi\"%\"22\"%\"2C11\"%\"2C1\"%\"5D\"%\"5D\" --compressed', function(err, stdout, stderr) { if (err) { log(err); return; } }); log("Mowing started"); setState(pfad + "Daily_Cut","done"); } //log(getState(start).val + getState(end).val + currentTime().toString()); } } if (rainwaitcounter > 0) { rainwaitcounter = rainwaitcounter -1; } ! } ! function currentTime() { var currentdate = new Date(); var cmin; if (currentdate.getMinutes() < 10) { cmin = "0" + currentdate.getMinutes().toString(); } else { cmin = currentdate.getMinutes(); } var chour; if (currentdate.getHours() < 10) { chour = "0" + currentdate.getHours().toString(); } else { chour = currentdate.getHours(); } return chour + ":" + cmin; } ! function day_of_week() { 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; } ! // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule("* * * * *", mow_auto); schedule("59 23 * * 6", mow_week_reset); schedule("59 23 * * *", mow_day_reset); ! // main // ----------------------------------------------------------------------------- function main() { mow_auto(); } ! // Start Skript: // ----------------------------------------------------------------------------- ! createDp(); setTimeout(main, 5000); !

      geändert von Homoran -> Script in Spoiler

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

        Hallo nathaneel,

        da mein Rob-E seit heute über ein Fernsteuermodul verfügt (robonect(r) ) bin ich nun auf der Suche nache einem geeigneten Script zur Einbindung in IOBroker / Homematic.

        Gibt es bei Dienem Script etwas Neues?

        Für welchen Typ ist Dein Script? Ich habe einen Gardena R40Li….

        1 Reply Last reply Reply Quote 0
        • N
          Nathanael last edited by

          Hallo Frank,

          das Script funktioniert mit den Worx Landroid Geräten M und L , sofern diese das WIFI-Modul enthalten. Mit gardena kanne ich mich nicht aus, das Script kann aber eventuell auf gardena umgebaut weren, wenn man an einen Steuerbefehl für gardena kommt.

          Mein vorgehen war folgendes:

          Roboter-IP über google-chrome aufgerufen

          Dort habe ich einen Webserver erkannt und eine Steuersoftware am Gerät

          Während ich dies ausgeführt habe, habe ich mit der google-chrome Entwicklerkonsole die Netzwerkübertragungen mitgeloggt und damit die notwendigen Übertragungen ermittelt.

          Zusätzlich habe ich die firmware für das Upgrade aus der Worx-Webseite zerlegt (hexeditor) und damit die notwendigen scripte extrahiert. Damit komme ich an alle für mich relevanten befehle, welche ich mittels cURL aufrufe.

          Wie gesagt, dies geht bei Worx, bei Gardena weiss ich dies nicht.

          Wenn wir die Befehle von Gardena ermitteln können, können wir ein script dazu basteln

          Aktuelle features für meine Implementierung:

          • Herbstmodus für Rasenmähen nach Bodentrocknung (Bodenfeuchte sorgt für Rutschgefahr des Roboters 🙂 )

          • Einbindung von wunderground

          Gruß

          Nathanael

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

            Hallo Nathanael,

            Danke für Deine schnelle Antwort.

            Die Befehle für Gardena sind bekannt…

            Kannst Du mir die aktuellste Version zukommen lassen? Damit ich dann die aktuellste umbauen kann.

            1 Reply Last reply Reply Quote 0
            • K
              kennerblick last edited by

              Hallo,

              ich bin auch sehr an der Umsetzung für Gardena R40Li und Robonect interessiert.

              Gibt es Fortschritte bzw. Neuigkeiten?

              Beste Grüße

              Kennerblick

              1 Reply Last reply Reply Quote 0
              • M
                mandragora last edited by

                Hallo Nathanel,

                Erstmals Danke für dein Script und deiner Bereitschaft das mit uns zu teilen.

                Ich hab selbst auch einen Landroid S und hab mich mit deinen Script ein wenig herumgspielt.

                Leider bekomm ich keine Verbindung zu Stande.

                Die IP Adresse meine Mähers ist die 10.0.0.125

                Die hab ich im Script auch eingetragen

                var landroidIP = "10.0.0.125";

                var homemail = "mailadresse@Mail-adapters";

                var targetmail = "mytarget@mail";

                var weeklyruntime = 1000; //Minutes of cutting grass e.g. 800m² require 1000 Minutes

                var pfad = "Mower" + ".";

                Sehe aber unter Objekte das State auf Disconnected: 0 steht.

                Kannst du eventuell sagen was ich hier falsch gemacht habe bzw. woran es hacken könnte ?

                Danke dir schon mal

                lg

                mandragora

                Battery_State	
                state
                Mow_Battery
                state	javascript			0	edit
                delete
                build
                Charger_State	
                state
                Mow_CHGstate
                state	javascript			0	edit
                delete
                build
                Daily_Cut	
                state
                Daily_Cut
                state	javascript			true	edit
                delete
                build
                Friday_ende	
                state
                Friday_ende
                state	javascript			false	edit
                delete
                build
                Friday_start	
                state
                Friday_start
                state	javascript			false	edit
                delete
                build
                Lunch_break	
                state
                Lunch_break
                state	javascript			false	edit
                delete
                build
                Monday_ende	
                state
                Monday_ende
                state	javascript			false	edit
                delete
                build
                Monday_start	
                state
                Monday_start
                state	javascript			false	edit
                delete
                build
                Mow_on_holidays	
                state
                Mow_on_holidays
                state	javascript			false	edit
                delete
                build
                RainSensor	
                state
                Mow_Rain
                state	javascript			0	edit
                delete
                build
                Saturday_ende	
                state
                Saturday_ende
                state	javascript			false	edit
                delete
                build
                Saturday_start	
                state
                Saturday_start
                state	javascript			false	edit
                delete
                build
                Start_mower	
                state
                Mower_Start
                state	javascript			false	edit
                delete
                build
                State	
                state
                Mow_State
                state	javascript			Disconnected 0	edit
                delete
                build
                Stop_mower	
                state
                Mower_Stop
                state	javascript			false	edit
                delete
                build
                Sunday_ende	
                state
                Sunday_ende
                state	javascript			false	edit
                delete
                build
                Sunday_start	
                state
                Sunday_start
                state	javascript			false	edit
                delete
                build
                Thursday_ende	
                state
                Thursday_ende
                state	javascript			false	edit
                delete
                build
                Thursday_start	
                state
                Thursday_start
                state	javascript			false	edit
                delete
                build
                Tuesday_ende	
                state
                Tuesday_ende
                state	javascript			false	edit
                delete
                build
                Tuesday_start	
                state
                Tuesday_start
                state	javascript			false	edit
                delete
                build
                Wednesday_ende	
                state
                Wednesday_ende
                state	javascript			false	edit
                delete
                build
                Wednesday_start	
                state
                Wednesday_start
                state	javascript			false
                
                1 Reply Last reply Reply Quote 0
                • Meistertr
                  Meistertr Developer last edited by

                  @mandragora:

                  Hallo Nathanel,

                  Erstmals Danke für dein Script und deiner Bereitschaft das mit uns zu teilen.

                  Ich hab selbst auch einen Landroid S und hab mich mit deinen Script ein wenig herumgspielt.

                  Leider bekomm ich keine Verbindung zu Stande.

                  Die IP Adresse meine Mähers ist die 10.0.0.125

                  Die hab ich im Script auch eingetragen

                  var landroidIP = "10.0.0.125";

                  var homemail = "mailadresse@Mail-adapters";

                  var targetmail = "mytarget@mail";

                  var weeklyruntime = 1000; //Minutes of cutting grass e.g. 800m² require 1000 Minutes

                  var pfad = "Mower" + ".";

                  Sehe aber unter Objekte das State auf Disconnected: 0 steht.

                  Kannst du eventuell sagen was ich hier falsch gemacht habe bzw. woran es hacken könnte ?

                  Danke dir schon mal

                  lg

                  mandragora

                  Battery_State	
                  state
                  Mow_Battery
                  state	javascript			0	edit
                  delete
                  build
                  Charger_State	
                  state
                  Mow_CHGstate
                  state	javascript			0	edit
                  delete
                  build
                  Daily_Cut	
                  state
                  Daily_Cut
                  state	javascript			true	edit
                  delete
                  build
                  Friday_ende	
                  state
                  Friday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Friday_start	
                  state
                  Friday_start
                  state	javascript			false	edit
                  delete
                  build
                  Lunch_break	
                  state
                  Lunch_break
                  state	javascript			false	edit
                  delete
                  build
                  Monday_ende	
                  state
                  Monday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Monday_start	
                  state
                  Monday_start
                  state	javascript			false	edit
                  delete
                  build
                  Mow_on_holidays	
                  state
                  Mow_on_holidays
                  state	javascript			false	edit
                  delete
                  build
                  RainSensor	
                  state
                  Mow_Rain
                  state	javascript			0	edit
                  delete
                  build
                  Saturday_ende	
                  state
                  Saturday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Saturday_start	
                  state
                  Saturday_start
                  state	javascript			false	edit
                  delete
                  build
                  Start_mower	
                  state
                  Mower_Start
                  state	javascript			false	edit
                  delete
                  build
                  State	
                  state
                  Mow_State
                  state	javascript			Disconnected 0	edit
                  delete
                  build
                  Stop_mower	
                  state
                  Mower_Stop
                  state	javascript			false	edit
                  delete
                  build
                  Sunday_ende	
                  state
                  Sunday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Sunday_start	
                  state
                  Sunday_start
                  state	javascript			false	edit
                  delete
                  build
                  Thursday_ende	
                  state
                  Thursday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Thursday_start	
                  state
                  Thursday_start
                  state	javascript			false	edit
                  delete
                  build
                  Tuesday_ende	
                  state
                  Tuesday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Tuesday_start	
                  state
                  Tuesday_start
                  state	javascript			false	edit
                  delete
                  build
                  Wednesday_ende	
                  state
                  Wednesday_ende
                  state	javascript			false	edit
                  delete
                  build
                  Wednesday_start	
                  state
                  Wednesday_start
                  state	javascript			false
                  ```` `  Wie du an den Zeiten der posts siehst, ist das Script schon sehr alt. Es gibt mittlerweile einen Adapter für die m und l Modelle und einen für die s Modelle
                  

                  Gesendet von meinem Handy

                  1 Reply Last reply Reply Quote 0
                  • M
                    mandragora last edited by

                    Hallo Meistertr,

                    Den Landroid Adapter der Verfügbar ist hab ich installiert.

                    Was ich hier im Script sehe (zumindest interpretiere ich das mal so) ist das man hier auch die Endzeit des Mähers eingeben kann was beim Adapter nicht möglich ist. (viewtopic.php?f=30&t=14227)

                    Deshalb wollte ich das übers Script realisieren.

                    LG

                    mandragora

                    1 Reply Last reply Reply Quote 0
                    • M
                      mandragora last edited by

                      Hallo nochmals

                      Habe hier gesehen das du das mit Scripts anscheinend bei dir realisiert hast.

                      viewtopic.php?f=35&t=5369&start=160

                      kann ich mich daran halten und probieren ?

                      Danke und LG

                      mandragora

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

                        Ja das kannst du nutzen, ist aber noch nicht fertig und mehr oder weniger noch ein dummy

                        Gesendet von meinem Handy

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        793
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        2720
                        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