Landroid M800 WG757E Rasenschaf

200qm Rasen und keine Lust zweimal in der Woche zu mähen und Rasenschnitt weg zu bringen und später als Dünger wieder zu kaufen um die Abfuhr von Biomasse zu kompensieren. Da scheint ein Rasenschaft, flapsiger Ausdruck für einen autonomen Mähroboter, doch wie gerufen zu kommen. Auf dieser Seite beschreibe ich meine Überlegungen zur Produktauswahl, die ersten praktischen Erfahrungen aber auch die IT-Seite eines "Connected Device".

Vielleicht fragen Sie sich, warum das auf der MSXFAQ zu finden ist: Ich beschäftige mich mit vielen Dingen und experimentiere und erforsche gerne. IoT ist nicht nur in Firmen ein Hype und hier kann ich auch zeigen, wie Monitoring (am Beispiel von PRTG) auch hier weiter helfen kann.

Achtung
Mähroboter und Igel sind unfaire Partner. Ein Igel rollt sich bei Gefahr ein und viele Mäher überfahren den kleinen Kerl. Igel sind aber meist Nachts unterwegs und ein Mäher kann tagsüber eh viel besser fahren, da das Gras dann auch nicht feucht ist.

Überlegungen zur Vorauswahl

Einige Faktoren habe ich für mich beschrieben:

Kriterum Beschreibung Mein Wert

Rasenfläche in qm

Schon bei der "Größe" der Rasenfläche fängt die Überlegung an. bei vielen Mähern steht nämlich die "maximale Rasenfläche" dabei. Teilweise ist so schon im Namen codiert, z.B. Gardena R40i, R50i, R70i sind für 400,500 oder 700qm) ausgelegt. Im Kleingedruckten steht dann aber, dass diese Mäher für dann aber auch quasi "rund um die Uhr" unterwegs sind. Wer also seinen Rasen auch mal nutzen will oder Ruhe wünscht, sollte ein passend großes Modell wählen welches genug Akku-Leistung hat um nicht immer zwischen Ladebox und Rasen zu pendeln. Ich habe aktuell eine Worx Landroid M800, der angeblich bis zu 800qm schafft, wenn er 21h "aktiv" ist. da er ca. 1,5h mäht und auch 1,5h lädt, würde er mit 800qm auf 7 Ladezyklen pro Tag kommen oder 1400 bei 200 Mäh-Tagen. Sie sehen, dass die Angaben eigentlich genauso irreführend sind wie der Spritverbraucht von Fahrzeugen und insbesondere Hybrid-Fahrzeuge. Wie sonst könnte ein Mercedes GLC 350e mit 2,5-2,7l/100km (stand April 2017) angegeben werden.

Sie sollten also schon etwas "größer" Denken und die kleinen Geräte für 400-600qm wirklich nur für überschaubare Flächen einsetzen. Wer viel mehr hat, kann natürlich auch einfach mehrere Mäher parallel arbeiten lassen.

300qm

Rasen- Layout, Startpunkte

Ich habe einen sehr überschaubaren Rasen mit ca. 200qm ohne Bäume, Teiche oder Beete in der Mitte. Auch sind es keine Stücke mit engen Durchgängen. Der M800 kann wohl bis zu 4 Startpunkte an der Randlinie anfahren und von dort loslegen. Das erlaubt eine gleichmäßigere Verteilung der Mähabschnitte. Ich schaue mal, wie weit ich ohne komme.

1

Einfahrt Ladestation

Es gibt Mäher, die über einen Suchdraht den Weg zur Box finden. Der M800 hingegen fährt immer am Randdraht entlang. Damit muss die Box eben auch Rand stehen. Beide Systeme haben ihre individuelle Vor und Nachteile. Der Randdraht muss natürlich immer frei befahrbar sein. Ansonsten klappt das mit der Ausfahrt und Rückfahrt nicht.

von Vorne

Ränder - Wohl und Leid

Da die Mäher fast alle "mittig" die Mähscheibe haben, ist ein Schnitt bis an den Rand nicht möglich. Es ist von Vorteil, wenn Sie Rasenkanten haben, auf denen der Mähroboter mit einem Rad fahren kann. Allerdings müssen Sie dann den Leitdraht sehr genau verlegen. Landroid gibt hier 35cm vor, was aber nach meiner Erfahrungen zu viel ist. Teilweise sind bei mir neben den Kinkersteinen als Rasenkanten aber noch Sandsteine, an denen der M800 bitte nicht vorbeischrammen sollte. Es sind weniger die Kratzer am Gehäuse sondern die Erkennung des Widerstands, die eine freie Befahrbarkeit dann behindern. Der M800 bleibt irgendwann stehen, weil er glaubt sich nicht befreien zu können. Daher sollten Sie den Draht erst einmal provisorisch befestigen ehe Sie ihn später einmal verbuddeln. Starten Sie mit der größten Schnitthöhe, damit die Messer nicht gleich den Draht kappen.

 

Messer

Die Wahl der Messer ist durchaus ein Kostenargument. So sind die einfachen Messer von Husquvarna, Gardena aber auch Landroid schnell gewechselt und sehr günstig. Andere Hersteller wie z.B. ALKO haben "aufwändigere" und damit auch teurere Messer. Ob die dann länger halten und damit den Preis wieder wettmachen, kann ich nicht sagen.

Einfache Klingen, Günstig schund schnell gewechselt

Regensensor

Es macht nicht viel Sinn, einen Rasen bei nässe zu schneiden. Selbst die kleinen Abschnitte sammeln sich dann auch im Mäher und setzen ihn früher oder später zu. Daher sollte der Mäher bei Regen einfach in seine Base fahren und etwas warten. Wenn die Base noch etwas überdacht ist, dann schützt dies den Mäher (und auch die Elektrik) vor zu viel Wasser und mit etwas Schatten sind auch die Batterien im Sommer weniger gestresst. Auch wenn ein Regensensor eigentlich nur zwei Kontakte auf der Oberseite sind, ist diese Funktion nicht bei allen Mähern vorhanden.

Ja, Gerne

Bedienung

Mir war wichtig, dass das Gerät auch komplett ohne Internet oder "Apps" konfigurierbar ist. So gibt es auch einen kleineren Landroid, der von der Flächenleistung vielleicht gereicht hätte. Aber ganz ohne Display und Tasten wäre man immer von einer App abhängig. Bei der Evolution von Smartphones ist mir das zu ungewiss. Aber das müssen Sie selbst entscheiden.

 

Ihr Garten sieht natürlich anders aus und ihre Anforderungen dürften dann auch andere sein.

Landroid M800 WG757E

Natürlich fragt man etwas herum und schaut, wer schon mit einem Rasenmähroboter unterwegs ist. Meist hört man von der Qualität von Husqvarna samt Service und Installation durch den Fachhandel. Das ist für bestimmte Gärten und Personenkreise sicher eine optimale Wahl. Aber irgendwie habe ich schon den Preisunterschied gesehen und konnte mir für meinen "einfachen Rasen" nicht vorstellen, dass andere Produkte so viel schlechter sein sollten. Zudem ist der Preisverfall der letzten Zeit ein Indikator dafür, dass es nun kein elitärer Zirkel mehr ist, sondern ein Rasenschaf langsam Allgemeingut wird. Zusammen mit einer Sonntagsaktion und 19% nachlass bin ich dann das Risiko eingegangen und habe doch im hiesigen Baumarkt ein etwas "weniger bekanntes" Modell gekauft. Ein Worx Landroid M800 WG757E, der nominell 800qm bedienen kann, drei kleine Messer hat mit mechanischer Schnitthöhenverstellung hat. Zudem ist ein Regensensor dabei und dass der WLAN hat, war zwar nicht gefordert aber nehme ich gerne mir.

Neben dem Rasenmäher und der Basis sind im Karton noch jede Menge Bodenhaken und eine Drahtspule, die für meinen Rasen locker ausreichend ist. Welches Betriebssystem in dem Mäher genutzt ist, ist mir nicht bekannt, auch wenn der Name vielleicht ein "Android" nahelegt. Ich bezweifle aber, dass ein Firmware-Update von unter 1 MB wirklich ein Android sein kann.

Die Platzierung der Basis und Verlegung des Kabels ist natürlich erst mal eine Herausforderung. Die Basis sollte etwas "geschützt" stehen, damit im Sommer nicht die Sonne volldrauf scheint und es dem Akku zu warm wird. Auch ein Regenschutz wäre schon wünschenswert. Allerdings ist natürlich ein Stromanschluss erforderlich. Erst war hier eine Stelle im Garten angedacht aber aktuell ist es ein Platz am Carport geworden. Netzteil und Stromanschluss sind damit im Trockenen.

Mittlerweile gibt es ein Dach drüber. Eventuell schneide ich auch in der Wand eine Öffnung, damit der Landroid nach innen fahren kann. Die Kabeltrommel verschwindet später, wenn die Leitung final verlegt wurde. Die Kabelverlegung habe ich mehrfach umgebaut. Zuerst habe ich provisorisch eine Schleife gelegt um ein paar Tage zu erkennen, wie exakt der Mäher der Leitung folgt um dann immer näher an die Ränder zu gehen. Hier ein Bild am Rand mit farblich hervorgehobener Randleitung:

Als besondere Herausforderung sehe ich natürlich die Hindernisse auf Garten. Das ist einmal ein variabel aufgestelltes Kaninchengehege, welches bitte nur angefahren aber nicht umgefahren werden sollte. Anscheinend ist der Landroid hier aber doch sehr feinfühlig und stoppt.

Das zweite Hindernis ist ein Kindertrampolin mit Alu-Beinen. Hier hatte ich schon Befürchtungen, dass sich der Mäher auf den Bodenrohren festfährt oder nicht mehr unter dem Trampolin heraus findet. Bislang löst er alle Aufgaben aber mit Bravour.

Kabel ist wichtig!

Damit der Mäher immer in seinem Bereich bleibt, ist ein Kabel um die Rasenfläche zu legen. Hierbei sollten sie NICHT pfuschen. Ein paar Tipps:

  • Auflegen und befestigen, nicht vergraben
    Sie können sich die Mühe sparen das Kabel zu vergraben. Legen Sie es auf den Rasen auf und befestigen Sie es mit den Kunststoffhaken so, dass es nicht hochsteht und vom Messer erfasst wird.
    Das "Einwachsen" übernimmt das Gras in wenigen Tagen und einige Wochen später ist vom Kabel nichts zu mehr zu sehen. Nach einem Jahr habe ich das Kabel fast nicht mehr rausziehen können, da sprichwörtlich "Gras" drüber gewachsen ist.
  • Verbinder
    Irgendwann wird jedes Kabel mal beschädigt oder durch einen Spaten getrennt. Soweit kein Problem aber bitte nicht mal schnell "verdrillen" oder mit einer offenen Lüsterklemme verbinden. Solche Kontaktstellen korrodieren und erhöhen den Widerstand bis ihr Mäher irgendwann das Signal nicht mehr erkennt ein lapidar ein "Außerhalb das Mähbereichs" meldet. Besser ist deine Verbindung durch "Löten" und Schrumpfschlauch, damit kein Wasser eindringen kann. Es gibt spezielle Lötverbinder, die beiden Kabelenden verbinden und gleich verschrumpfen

    100 Stück kosten ca. 15.25€. Wasser, Witterung und Sonne können Kabeln und Verbindungen mächtig zusetzen. Eine einfach Lüsterklemme ist keine adäquate Verbindung, auch wenn es nur eine Ader mit Niederspannung ist.
  • Widerstand <5Ohm
    Aus verschiedenen Quellen habe ich die Information, dass der Leitungswiderstand nicht über 5 Ohm sein sollte. Auf meiner Ladestation ist eine LED, die bei einer Leitungsunterbrechung grün blinkt und bei einem Schleifenstrom grün leuchtet. Leider leuchtet die LED auch noch lange grün, wenn der Widerstand so hoch ist, dass der Mäher das Signal nicht erkennen kann.
  • Saubere Kabelwege
    Ich habe es selbst noch nicht bemerkt, aber angeblich soll es manchmal Probleme geben, wenn das Kabel in Schleifen gelegt oder noch an einem Ende auf der Trommel aufgewickelt ist, andere spannungsführende Leitungen kreuzen oder z.B. auf dem Nachbargrundstück ein elektrischer Weidezaun betrieben wird.

Da eine nachträgliche Suche nach Fehlern sehr mühsam ist, sollten Sie schon bei der Verlegung sauber arbeiten und Verbindungsstellen sich gut merken, wenn es später einmal Probleme geben sollte.

Kleine Probleme

Es gibt bislang eigentlich nur ein paar Fehler in der Anzeige, die eher Übersetzungsfehler sind und schnell gefixt werden könnten. So zeigt die DHCP-Einstellung ein "YA" statt "JA" an und beim Verbinden mit dem WAN musste ich raten.

Es gibt nur eine Kombination, die kritisch ist. Wenn der Roboter an seinem Randdraht entlangfährt, um die Kanten beim Start zu schneiden oder am Ende den Weg zur Basis zu finden, darf sich nichts in den Weg stellen. Hierbei habe ich bislang zwei Fälle gesehen.

  • Akku Leer/Regen ->Landroid ist auf dem Weg zum Rand
    Wenn auf dem Weg zum Rand in Hindernis kommt, dann fährt er ein Stück zurück, Dreht sich um 360 Grad und fährt wieder vor.
  • Akku Leer/Regen ->Landroid ist am Rand angekommen und folgt der Leitung
    Wenn auf dem Weg zum Rand in Hindernis kommt und er anstößt, dann fährt er nur ein Stück zurück und dann den gleichen Weg wieder vor

In beiden Fällen kommt er nicht weiter. Besser wäre es z.B. nach dem Zurücksetzen z.B. 45 Grad nach links zu drehen, 1m vor zu fahren. 90 nach rechts und wieder 1m vor zu fahren und 45 Grad nach Links zu drehen. Er sollte dann wieder an der Leitung sein oder auf dem alten Weg folgen. Mit den Kanten ist mir das ein paar mal passiert, wenn die Leitung doch etwas zu nahe am Rand war. Es kann ja aber auch mal ein Schuh, Eimer oder Sitzhocker am Rand eines Beets stehen geblieben sein.

  • Zurückstoßen beim Start
    Wenn er von der Ladestation losfährt, dann setzt er ein Stückchen zurück. Die Vorderräder bleiben aber noch auf der Basis. Dann Piep er, startet das Mähmesser und dreht sich um 90Grade nach Links um dann loszufahren und umgehend wieder nach Rechts den Draht zu suchen. Ich gönne meinem Gerät ein "Dach" unter einem Tisch. Schöner wäre es. wenn er wirklich etwas weiter zurücksetzen würde, damit er sicher dort rauskommt. Anscheinend schafft er

Ich weiß aber nicht, ob der Hersteller das alles auch umsetzen würde.

WiFi und Internet

Über das Menü kann das Rasenschaf auch in eine bestehendes WIFI-LAN angebunden werden.

WORX LANDROID M WIFI SETUP- ENGLISH - www.worxlandroid.com
https://www.youtube.com/watch?v=lQiiAJNyejs

Der Mäher baut anscheinend kein eigenes Netzwerk als AccessPoint auf. Das Haus-WLAN muss also schon die Ladebasis mit abdecken. Nach der Auswahl der SSID und der Eingabe des WLAN-Schlüssels hat sich der Mäher eine IP-Adresse bezogen.

Ich habe ihm per Fritz!Box mitgeteilt, dass er diese Adresse nun bitte immer bekommen soll und er keinen Internet-Zugriff nutzen darf. Allerdings habe ich auch nicht gesehen, dass er es versucht hätte. Die App, die es für den Mäher für Android und IOS gibt, ist anscheinend nicht mehr als ein verkappter Browser. Der Mäher bietet auf Port 80 einen einfachen WebServer an, der mit jedem Browser angesprochen werden kann und dann auch das gleiche überschaubare Menü vorhält. Der Zugriff ist per vierstelliger PIN geschützt, die per HTTP-Authentifizierung unverschlüsselt übertragen wird. Wenn das WLAN verschlüsselt ist und kein Mithörer schon im WLAN ist, sollte es für den Hausgebrauch reichen.

Das Gerät meldet sich mit der VendorID "00:23:A7", die an den Hersteller "Redpine Signals" (http://www.redpinesignals.com/) vergeben ist. Er meldet sich zumindest an einer Fritz!Box mit "worx.fritz.box" im DNS. Ich habe noch keine Idee, was mit zwei Landroids nebeneinander passiert.

Für eine Verwaltung von unterwegs müsste man ein VPN nach Hause aufbauen. Ein Portscan hat zumindest ergeben, dass der Mäher außer Port 80 ansonsten "geschlossen" ist. Das ist aber keine 100% Sicherheit und sagt auch noch nicht zuverlässig aus, ob der Mäher nicht von sich aus aktiv wird. Dazu werden ich in bei Gelegenheit in ein eigenes VLAN stecken und beobachten. Der Webserver outed sich als "Keil Embedded WEB Server V2.00, 2012 " (http://www.keil.com/)

Die folgenden Bilder habe ich einfach per Chrome Browser erstellt.

Allerdings hat die App als auch die Weboberfläche noch deutlich Raum für Verbesserungen. Der Landroid liefert noch durchaus mehr interessante Daten wie z.B. Temperaturen, Batterieladestände etc., die aktuell noch gar nicht angezeigt werden. Die App ist eher ein Safari mit vorgeschalteter Seite zur Konfiguration der IP-Adresse, die auf das gleiche Subnetz festgelegt ist:

Details der HTTP-Nutzung

Ohne Verschlüsselung ist es natürlich sehr einfach, die Kommunikation mitzuschneiden. Dank Fiddler ist das auch recht einfach. Nach dem ersten "anonymen" Zugriff erfolgen die nachfolgenden Zugriffe per Basic-Authentication und liefern ein paar Bilder aber auch Skripte:

Interessanter fand ich da aber schon die beiden folgenden Zeilen:

Der Client sendet einen POST und der Server, als oder Mäher, antwortet mi einer JSON-Strukur:

So ist die Information natürlich noch nicht schön lesbar. Aber ein JSON-Parser kann das schon auseinandernehmen und liefert durchaus interessante Daten, die so nicht auf der Weboberfläche erreichbar sind:

Ein paar Felder habe ich nicht aufgeklappt, da hier anscheinend die Start-Zeit (9) und Laufzeit (14) hinterlegt ist. Wenn ich den "Dialekt" richtig verorte, dann ist zumindest diese Komponente in Italien entwickelt. (tempo frenatura = Bremszeit, rit pioggia = Pause nach Regen, Distance = Entfernung). Wenn über den Browser oder die App entsprechende Werte zurückgeschrieben werden. dann erfolgt dies auch über einen POST auf die jsondata.cgi. Allerdings werden die Daten dann als eigenes Forma übertragen, wenngleich es auch lesbar ist. Hier am Beispiel einer Änderung der Zeiten:

Aber das ist doch schon mal eine Basis für ein erweitertes Monitoring mit PRTG.

Monitoring mit PowerShell

Es sollte Sie nun nicht verwundern, wenn ich per PowerShell schon mal die Daten einsammle. Hier der Rumpfcode, um die JSON-Information abzufragen:

$uri = 'http://192.168.178.76/jsondata.cgi'
$User = "admin"
$pass = "1234"
$basicauth=[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($User+":"+$pass))
$headers=@{}
$headers.Add("Authorization","Basic $basicauth")
$headers.Add("ContentType","application/x-www-form-urlencoded; charset=UTF-8")
$headers.Add("Accept","application/json, text/javascript, */*; q=0.01")

$result = Invoke-RestMethod $uri -headers $headers

In erster Version habe ich also ein Skript gebaut, welches einfach die Daten einsammelt und in eine CSV-Datei schreibt.

while($true) { `
   Start-Sleep -Seconds 1; `
   write-host "." ;`
   Invoke-RestMethod `
      $uri `
      -headers $headers `
   | select perc_batt,state,workReq,message,batteryChargerState,distance,rit_pioggia,tempo_frenatura,perc_rallenta_max `
   | Export-Csv c:\temp\worx.csv -notypeinformation -append `
}

Folgende Werte habe ich zwischenzeitlich gesehen:

Parameter Wert Beschreibung

state

  • home
  • start sequence
  • leaving house
  • grass cutting
  • trapped recovery
  • lift recovery
  • searching wire
  • searching home
  • following wire
  • idle

Dieses Feld beschreibt wohl den aktuellen Staus des Mähers, Er ist an der Basis, mäht, hat sich aus einer Falle befreit, wurde angehoben, Sucht das Kabel, oder folgt dem Kabel zur Basis.

Interessant ist der Status "idle", da er eigentlich immer nur mit Fehlersituationen (Deckel offen, außerhalb des Kabel oder "trapped" zu sehen ist.

workReq

  • scheduler req grass cut
  • landroid req manual homing
  • User req grass cut

Hier steht der Grund, warum er in dem aktuellen Status ist. "User req grass cut" sagt, dass ich manuell einen Mähvorgang angestoßen habe. den "landroid req manual homing" Status habe ich erreicht, weil er die Basis nicht gefunden hat und ich ihn manuell dann dort getragen habe

batteryChargerState

  • idle
  • charging

Hier habe ich bislang nur die beiden selbst erklärenden Werte gesehen.

distance

Ganzzahl

Ich vermute mal, dass er damit die gefahrene Entfernung ermittelt. Die Zahlenfolge gibt einen 1 Sekunden Abstand wieder.  Es könnte also "Millimeter" sein.  30 cm in einer Sekunde könnte der gefahrenen Strecke entsprechen. Er fängt aber wohl nicht bei 0 jedes mal an. Interessanterweise wird ein "Rückwärtsfahren" auch wieder abgezogen.
Wenn der Mäher in der Basis ist, erscheint hier ein negativer Wert, den ich noch nicht interpretieren kann.

perc_batt

100
96

Hier kann man gut sehen, wie der Füllstand der Batterie während der Fahrt sinkt und beim Laden wieder ansteigt. Mein M800 beendet nach ca. 60min Fahrzeit bei 47% das Mähen und startet die Suche nach dem Kabel. Die Anzeige ist nicht 100% akkurat. Sie schwankt immer mal um ein Prozent, was sicher dem variablen Stromverbrauch geschuldet ist. Mit der Einfahrt in die Basis springt der Stand dann um ca. 6% an. Es dürfte also keine richtige Energiemessung sondern einfach eine Schätzung anhand der Spannung sein.

message

  • close door to cut grass
  • outside wire
  • trapped
  • wire missing
  • raining

Hier stehen dann wohl die Meldungen, die auf dem Display für den Anwender angezeigt werden. Es sind aber wohl nur Fehlermeldungen oder Warnungen. Die normalen Meldungen wie "Mähen", "Warten auf nächte Zeit" u.a. stehen hier nicht. Das Feld könnte also schon ein Indikator für "Probleme" oder zumindest eine Warnung sein.

Nachdem ich hier einige Daten gefunden habe, kann man diese Strings natürlich nutzen, um im Internet nach anderen Quellen zu suchen. Sehr schnell wird man dann auch andere Quelle finden, die diese Informationen auswerten und in verschiedene Home-Automation-Systeme zu integrieren. Ich habe am Ende unter "Weitere Links" die entsprechenden Seiten addiert. Einige Werte sind für eine spätere Fehlersuche durchaus interessant wie z.B.

"allarmi": [ // Alarms - flags set to 1 when alarm is active
        0, // [0] "Blade blocked"
        0, // [1] "Repositioning error"
        0, // [2] "Outside wire" ("Outside working area") 
        0, // [3] "Blade blocked"
        0, // [4] "Outside wire" ("Outside working area")
        0, // [5] "Mower lifted" ("Lifted up")
        0, // [6] "error"
        0, // [7] "error" (Set when "Lifted up" - "Upside down"?)
        0, // [8] "error"
        0, // [9] "Collision sensor blocked"
        0, // [10] "Mower tilted"
        0, // [11] "Charge error" (Set when "Lifted up"?)
        0, // [12] "Battery error"

Für ein Monitoring habe ich diese aber nicht mit einbezogen. Auf der anderen Seite enthält meine JSON-Antwort durchaus mehr Felder als die Beschreibungen anderer Quelle. Vermutlich liegt das an meiner neueren Firmware. Insofern sind auch meine Angaben immer nur eine Momentaufnahme.

Sensor mit PRTG HTTP/REST-Sensor

PRTG hat selbst einen HTTP/REST-Sensor, der JSON-Antworten auswerten kann. Das geht recht einfach für einen einzelnen Wert wie die Akkuleistung, der zudem noch numerisch geliefert wird.

Die URL und die Anmeldedaten sind ja bekannt. Aus der obigen JSON-Antwort ist auch der Knoten "perc_batt" einfach zu extrahieren.

Alleine aus der Batteriekurve kann man schön ermessen, wann der Mähvorgang startet (hier um 09:00) und wie lange gemäht wird (1:08h). Er brauchte dieses Mal dann ca. 7 Minuten bis zur Basis um dann von 10:15 bis 10:46 (also ca. 31Min) aufgeladen wird. Das geht schon alleine mit PRTG Bordmitteln.

Allerdings ist genau dies wieder ein Beispiel für die Grenzen eines nicht angepassten Monitoring. Wenn Sie jeden Tag gerade mal eine "Delle" von 2h haben, dann ist auf einem Wochen oder gar Montags oder Jahresdiagramm nicht mehr viel zu sehen.

Da wäre dann eher die Dauer des Mähvorgangs und des Ladevorgangs interessanter.

Firmware 2.47 verrät Debug-Zugang

Der Hersteller ist ja so freundlich entsprechende Updates der Firmware einfach per HTTP-Download bereitzustellen, die man dann per USB-Stick auf den Mäher überspielen kann. Die Datei kann man natürlich auch mit einem beliebigen Editor betrachten. Gleich am Anfang scheint eine Liste der Dateien zu stehen, die in der Firmware irgendwie vorhanden sind. Hier der Anfang der Datei.

Besonders angetan hat es mir da natürlich neben den Bildern auch die "debugPage.html". Die kann sogar mit einem Browser einfach abgerufen werden. Sie zeigt sehr detaillierte Informationen über den Mäher an: http://<ipadresse>/debugPage.html. Beachten Sie, dass die URL Case-sensibel ist.

Hier ist der Mäher aktiv und gerade über den Begrenzungsdraht hinaus gefahren. Er wendet und daher ist ein Motor auf -45%. Interessant fand ich daran, dass die Zahlen sich quasi im Sekundentakt verändert. Also habe ich erneut Fiddler angeworfen und auch hier ist gut zu sehen, dass die Seite keinen "Reload" macht sondern die Werte wieder per JSON-Abfrage ausgelesen und im Browser angezeigt werden. Alle 0,5 Sek werden die Daten aktualisiert:

Diesmal wird aber eine "jsonDebug.cgi" abgerufen, die noch viele weitere interessante Werte liefert z.B. die Batteriespannung und Batterietemperatur, die Board-Temperatur und sogar die Drehzahl des Mähmessers und der einzelnen Motoren. Sogar die Beschleunigungswerte (X,Y,Z) und ein Gyroskop (X,Y,Z) kann ausgelesen werden. Wenn Sie diese Daten oft genug auslesen, sollten Sie sogar den Weg des Mähers durch den Garten nachvollziehen können. Einzig ein GPS-Sensor fehlt hier bei noch. Das eröffnet ja ganz neue Wege das System mit PRTG zu erfassen und auszuwerten.

Auch eine Version der WiFi-Firmware ist unter dem Verzeichnis "/wifi/wifiFwVersion.txt" zu erhalten. (Bei mir 4.8.4a)

Firmware 5.18 (2018-08-31)

Diese Firmware scheint einige größere Änderungen vorgenommen zu haben. Schon beim Bick in die Datei sehe ich ganz andere Dateinamen.

.

Eine "debugPage.HTML" gibt es gar nicht mehr und die Firmware enthält den Begriff "mqtt", was natürlich neugierig auf mehr macht. Allerdings würde das dann natürlich meine PRTG-Überwachung komplett außer Kraft setzen. Ich habe daher das Update noch nicht durchgeführt, da die aktuelle Firmware eigentlich ganz gut arbeitet und ich die "neue" Landroid-App" gar nicht im Einsatz habe. Daher hier erst mal das "Whats New"

This version adds support for the new Worx Landroid app.
New features include:
- State of the art IoT technology
- Automatic OTA (Over-The-Air) firmware updates
- Dramatically improved out-of-home control
- Auto scheduler
- Lawn size calculator (iOS only)
- Push notifications
- Statistics
- Easier multi-zone setting
- Easier pairing process
- Improved scheduler with daily-selectable edge cut

Automatische FW-Updates über WLAN ist sicher im Consumer-Bereich ratsam, wo die Geräte im gleichen WLAN hängen. Beim Rasenschaft hat aber gar keinen Internet-Zugang, sondern ich kann von meinem PRTG-System den Mäher ansprechen.

Die folgende Beschreibung bezieht sich also auf die "alte" Firmware vor dem Herbst 2018

Firmware verrät Cloud remote.worxlandroid.com

Auf der Suche nach weiteren Strings ist mir aber auch eine Adresse "remote.worxlandroid.com" aufgefallen. Außerdem scheint es noch eine dynamisch generierte Statistik-Datei zu geben, die als Name wie folgt formatiert wird: "LOG_%s_%04d%02d%02d_#%d.html". die mittleren Zahlen könnten das Jahr(vierstellig), Monat und Tag sein. Der String davor und die eventuell laufende Nummer danach konnte ich aber noch nicht durch probieren eingrenzen.

Hier ist also auf jeden Fall noch etwas forschen angesagt.

Diagnose mit Sensor-Details auf dem LCD

Mein Landroid hat ein mehrzeiliges LCD-Display, welches zum nicht nur den aktuellen Status anzeigt sondern auch Diagnose-Ausgaben wiedergeben kann. Mit der Taste "2" können Sie eine nette Übersicht der Sensoren im Landroid bekommen:

Angeblich kann man hier auch die Sensoren kalibrieren, wenn Sie nicht auf "0" stehen würden. Das habe ich noch nicht benötigt.

Wenn Sie nach der Taste 2 dann die Taste 5 drücken und dann einen USB-Stick auf der Unterseite einstecken, dann schreibt der Works wohl seine Konfiguration und das Logfile auf den Stick.

Logfile erstellen

Angeblich schreibt der Landroid intern auch ein Logfile, welches man auf den USB-Stick exportieren kann. Dazu muss man folgende Schritte durchlaufen.

  1. Roboter einschalten
    Geben Sie die PIN ein
  2. Taste 2 drücken
    Es erscheint die Info Seite
  3. USB-Stick (FAT32 formatiert) einstecken
    Schalten Sie den Landroid dazu nicht aus. Einfach auf den Rücken legen, Akkufach öffnen und USB-Stick einstecken.
  4. Schreibvorgang überwachen
    Je nach Firmware müssen Sie nun auf das Display schauen und auf die Schlussmeldung warten (manchmal Taste 0 Drücken). Bei älterer Firmware piept der Landroid dreimal, wenn er das Logfile geschrieben hat.
  5. USB Stick entfernen und im PC auslesen
    Auf dem Stick landet eine Datei mit dem Namen LOG_%s_%04d%02d%02d_#%d.html

Bislang hatte ich aber noch nie die Anforderung in diese Logdatei zu schauen oder sonst was dran zu schrauben.

Firmware Update

Etwas ungewöhnlich im Vergleich zu anderen Herstellern ist das Update der Firmware. Der Mähroboter muss dazu nicht eingeschickt werden. Man braucht nur einen USB-Stick, auf den man die Firmware kopiert und dann unten im Batteriefach einsteckt.

WORX Landroid Softwareupdate (Self-Service Anleitung)
https://www.youtube.com/watch?v=YjLRpfCo0ZA

Aktuell ist mein Landroid noch aktuell, d.h. es gibt noch keine aktualisierte Firmware für dieses 2017er Modell.

Winter-Inspektion

Wenn die Tage kürzer und die Nächte kälter werden, ist es Zeit den Rasenmäher einzumotten. Zum einen gibt es im Winter eh nichts zu schneiden und gefrierendes Wasser dehnt sich aus und könnte etwas beschädigen. Viel kritischer ist aber der Akku zu sehen, der Kälte gar nicht mag. Also ...

  • Akku im Mäher in der Basis auf 100% laden
  • Mäher und Ladestation ausschalten
  • Mäher wintersicher machen
    • Schneidmesser abbauen
      Damit man sich nicht bei den Reinigungsarbeiten verletzt.
    • Mäher säubern, z.B. mit Bürste und Staubsauger
      Auch wenn fast alles "Plastik" ist, sollte man dem Rasenmäher zum Winter hin eine Reinigung mit Wurzelbürste und Staubsauger zukommen lassen.
    • Akku entnehmen und zimmerwarm lagern
      LiIO sind empfindlich gegen Temperaturschwankungen und Kälte. Eine gleichmäßige Temperatur im Büro oder Keller sind von Vorteil.
    • Batteriefach wieder schließen.
      Damit kommt kein Schmutz an die Kontakte und die Schrauben können auch nicht verloren gehen.
  • Basis abbauen
    Erst mal mit einer Bürste abfegen und dann die beiden Kabel des Randdrahts abnehmen. Auch die Stromversorgung sollte getrennt und Frostsicher gelagert werden

Ich bin mal gespannt, wie mein M800 den ersten Winter übersteht

WORX Landroid Winterservice (Self-Service Anleitung)
https://www.youtube.com/watch?v=gaeRXFznWe4

Batterieüberwachung mit PRTG

Unter der URL http://<ipaddresse>/jsondata.cgi liefert der Rasenmäher eine fertige JSON/XML-Struktur, die Sie mit PowerShell wie folgt abfragen können. Als Anmeldedaten nutzen Sie bitte der Benutzername "admin" und als Kennwort die PIN des Geräts:

$cred= get-credential admin
Invoke-RestMethod http://192.168.180.1/jsondata.cgi -Credential $cred

versione_fw           : 2,47
lingua                : 1
ore_funz              : {43, 43, 43, 43...}
ora_on                : {9, 9, 9, 9...}
min_on                : {0, 0, 0, 0...}
allarmi               : {0, 0, 0, 0...}
settaggi              : {0, 0, 0, 1...}
mac                   : {0, 35, 167, 166...}
time_format           : 1
date_format           : 1
rit_pioggia           : 120
area                  : 0
enab_bordo            : 1
percent_programmatore : 0
indice_area           : 7
tempo_frenatura       : 20
perc_rallenta_max     : 70
canale                : 0
num_ricariche_batt    : 0
num_aree_lavoro       : 1
dist_area             : {1, 1, 1, 1}
perc_per_area         : {1, 1, 1, 1}
area_in_lavoro        : 0
email                 : frank@carius.de
perc_batt             : 100
ver_proto             : 1
state                 : home
workReq               : landroid req manual homing
message               : none
batteryChargerState   : idle
distance              : -9

Auf Anhieb finde ich hier mal das Feld "perc_batt" interessant. PRTG selbst hat aber auch einen einfachem XML/JSON-Sensor, der solche Werte auslesen kann. Ich habe dazu einfach einen "HTTP XML/REST Value"-Sensor addiert und als Parameter die URL, den Username und Kennwort und natürlich den Knotennamen perc_batt addiert

Anhand der Batterieladung kann man gut erkennen, wann der Rasenmäher losläuft und wie lange der unterwegs ist.

Auch die Dauer bis zum Abschluss der Aufladung ist so einfach zu ermitteln

Sensor mit PRTG Custom-Sensor

Die große Einschränkung des PRTG-Sensors ist, dass er nur genau einen Kanal erfasst. Ich hätte aber schon gerne auch ein paar andere Kanäle irgendwie erfasst und visualisiert. Natürlich kann eine Software wie PRTG erst mal nur numerische Werte erfasst. Aber es spricht ja nichts dagegen, den "State" nummerisch abzubilden und auch die Entfernung aufzuschlüsseln. Einmal in die gefahrene Strecke und einmal die Anzahl der Fahrten. Das ist mit den in PRTG eingebauten Sensoren so natürlich nicht möglich. Hier ist ein PRTG:Custom Sensor eleganter, der gleich alle Daten erfasst und als XML-Datei an PRTG übergibt. Dabei kann der Sensor natürlich direkt von PRTG gestartet werden oder er läuft als eigenständiger Task und sendet die Daten als HTTPPush-Sensor an PRTG. Ich habe mich hier für einen CustomSensor entschieden, der einige Zahlen mehr erfasst.

Wert Bereich Beschreibung

state

  • 9 = Idle
  • 8 = grass cutting
  • 7 = lift recovery
  • 6 = trapped recovery
  • 5 = searching home
  • 4 = start sequence
  • 3 = searching wire
  • 2 = following wire
  • 1 = leaving house
  • 0 = Home

Der Status ist leider nur ein "String und den kann man ja kaum sinnvoll auf einer Grafik aufzeichnen. Daher werde ich die Strings in numerische Werte wandeln.

perc_rallenta_max

 

Anteil an "langsamer Fahrt"

tempo_frenatura

 

Bremsen-Zeit

num_ricariche_batt

 

Batterienachladungen

perc_batt

 

Batterieladung

batteryChargerState

  • 0 = idle
  • 1 = charging

Ladestatus

Message

  • "idle" 0
  • "charging" 1
  • "raining" 2
  • "outside wire" 3
  • "trapped" 4
  • "wire missing" 5
  • "close door to cut grass" 6

Dieses Feld liefert wohl einen guten Hinweis auf echte Probleme, die den Betrieb unterbrechen. Ich habe die verschiedenen Meldungen auf eine Ganzzahl umgesetzt, damit PRTG diese anzeigen kann. Sie könne aber in der Konfiguration nun auch für diesen Kanal einen Grenzwert hinterlegen, ab wann dieser den Status "Warning" erhalten soll.

Dann wir der Kanal z.B. Gelb, wenn es regnet. Ich experimentiere noch etwas mit den verschiedenen Statusmeldungen. Aktuell kann ich 1=Warning und 3=Error setzen um zwischen informellen temporären und wichtigen blockierenden Meldungen zu unterscheiden.

Die erst Version sieht dann wie folgt aus:

Über die Zeit kann man gut sehen, wann der Mähprozess gestartet ist, wie lange er liegt. Der gro0ße graue Block ist die numerische Repräsentation für den Status, wobei 8 = mähen" bedeutet und manchmal (6) ist "Trap Recovery" angesagt. Am Ende ( 2  =following wire) ist die Rückfahrt zur Basis zu sehen.

Die Werte sind natürlich eingeschränkt, da der Sensor nur einmal pro Minute den Status abliest und damit kurzzeitige Events nicht erfasst werden. Es reicht aber aus um einen Fehler, der länger andauert, zu ermitteln. Über mehrere Tage hinweg sehen die Kurven auch interessant aus:

Es ist gut zu sehen, das die Batterietemperatur grob der Außentemperatur folgt und die Ladesteuerung ca. alle 3 Stunden bis auf 28,5 Volt nachlädt, wenn die Spannung auf 27 Volt abgesunken ist. Durch die Ladung erhöht sich auch die Batterietemperatur. Am 27.4 sieht man zwei Mähvorgänge, d.h. die Spannung fällt auf bis ca. 24Volt und das Laden dauert dann wieder länger.

Hier der Code zur Einbindung in PRTG als PRTG - Custom Sensor

prtg-landroid.20180405.ps1.txt

Bitte nach dem Download die Erweiterung .TXT entfernen und das Skript im Verzeichnis EXEXML ablegen. Beachten Sie, dass Sie die Parametrisierung entweder im Skript oder in der PRTG Parameter-Zeile an ihre Umgebung anpassen müssen.

PRTG Sensor über Debug-Datei

In der bislang gelesenen Datei "jsondata.cgi" fehlen mir wichtige Kennzahlen. Die "jsonDebug.cgi" ist sehr viel aufschlussreicher und enthält neben dem Status vor allem die Werte zu Batterie, Ladung, Temperaturen und den Regensensor. Zudem könnte Daten des Schneidmesser mitnehmen. Vielleicht lässt sich daran ja der Verschleiß ermitteln, wenn die Messer nicht mehr so gut schneiden. Oder wir sehen sprichwörtlich "das Gras wachsen". Wobei das hier dann wohl eher Momentaufnahmen sind und keine Mittelwerte.

$cred= get-credential admin
Invoke-RestMethod http://192.168.180.1/jsonDebug.cgi -Credential $cred

state              : home
boardTemperature   : 20,5
distance           : -10671
wheelLeftDistance  : -21333
wheelRightDistance : -9
angle              : -3702
rainSensor         : 3900
aree               : @{index=0; vet=System.Object[]}
battery            : @{percentage=100; voltage=27,94; temperature=16,5; ntcResistance=13945}
batteryCharger     : @{state=charging; chargeCurrent=1067,50}
accelerometer      : @{gravity=System.Object[]; angle=System.Object[]}
gyroscope          : @{angularSpeed=System.Object[]; angle=System.Object[]}
motor              : {@{speed=0; maxSpeed=51; speedReduction=0; rpm=0; feedbackError=0; acceleration=100;
                     deceleration=220; fault=False}, @{speed=0; maxSpeed=51; speedReduction=0; rpm=0; feedbackError=0;
                     acceleration=100; deceleration=220; fault=False}, @{speed=0; maxSpeed=92; speedReduction=0;
                     rpm=0; feedbackError=0; acceleration=100; deceleration=250; fault=False}}
guide              : @{straightSpeed=0; turningSpeed=0; measuredWheelDeltaDistance=0; requiredWheelDeltaDistance=0;
                     deltaSpeedCorrection=0}

Die Datenstruktur ist etwas vreschachtelter aber dennoch einfach mit PRTG zu erfassen. Ich habe dazu einen zweiten Sensor gebaut.

prtg-landroiddebug.20180404.ps1.txt

Bitte nach dem Download die Erweiterung .TXT entfernen und das Skript im Verzeichnis EXEXML ablegen. Beachten Sie, dass Sie die Parametrisierung entweder im Skript oder in der PRTG Parameter-Zeile an ihre Umgebung anpassen müssen. Zudem scheint PRTG die "Unit"-Definition nicht immer zu übernehmen, so dass Sie nach der ersten Messung die Einheit bei den Kanälen Anpassen müssen. Wenn überall nur ein "#" steht, dann zeigen die Grafen durch die gleiche Skalierung nur schlecht an.

Interessant ist auch die Erfassung der Werte über einige Stunden oder Tage. Man kann gut sehen, dass der Akku immer mal wieder nachgeladen wird, auch wenn der Mähroboter nicht gefahren ist. Analog dazu verändert sich die Batterietemperatur und die Spannung.

Ob das auf Dauer für den Akku die richtige Strategie ist?

Kollateralschäden

Bei aller Sensorik kann der Rasenmäher natürlich nicht erkenne, ob Gegenstände auf dem Rasen liegen. Wer also vergisst, den Gartenschlauch beiseite zu räumen oder die Gartenbrause liegen lässt, wird die Spuren der Arbeit sehr schnell daran erkennen können:

Diese Spuren waren die Messer. Sowohl der Mäher als auch die Brause haben den Kontakt überstanden. aber die Messer waren dann natürlich sehr stark gealtert.

Einschätzung

Im Moment macht der kleine Rasenmäher noch fast alles richtig. Er mäht die Fläche recht ordentlich und problemlos. Er kommt mit den Hindernissen und den Rändern halbwegs zurecht. Allerdings muss jedem Klar sein, dass er nicht so perfekt die Ränder und Ecken abmähen kann, wenn der Abstand zu den Randsteinen gewahrt werden soll. Der Messerteller kommt eben nicht bis zum Rand und er "sieht" halt nicht, wo er noch mal nachmähen müsste. Die Konfiguration ist unabhängig von einer Cloud oder App alleine über das Keypad und Display möglich und gelang mir ohne Handbuchstudium. Die Funktion als solches ist erfüllt und ich bin nicht sicher, ob ein anderes Produkt deutlich besser arbeiten könnte. Zur Langlebigkeit kann ich aktuell natürlich noch nichts sagen.

Die WiFi-Integration ist mal abgesehen von der fehlenden Verschlüsselung sehr flexibel auch für eigene Projekte und Hausautomatisation nutzbar. Allerdings muss natürlich die Rasenfläche auch per WiFi ausgeleuchtet sein. Wenn Sie aber nicht gerade einen Park angelegt haben, ist auch dies eigentlich problemlos machbar.

Einzig beim Diebstahlschutz bin ich etwas kritisch. Eine vierstellige PIN beim Einschalten macht nur Sinn, wenn die Sperrintervalle immer länger würden oder nach zu vielen Fehlversuchen das Gerät gesperrt wäre und man so etwas wie eine SuperPIN oder PUK nutzen müsste und nach deren Sperrung eben ein Eigentumsnachweis erbracht werden müsste. Das wird aber ein Baumarkt oder Versandhandel nicht leisten können. Hier sind dann Hersteller mit Fachhändlernetz im Vorteil. Durch die Überwachung mit PRTG kann dann zumindest der Zeitpunkt bestimmt werden.

Weitere Links

Worx Landroid M robotic Lawnmower
https://www.youtube.com/watch?v=v0T89vR6SLU

WORX LANDROID M/L robotic lawn mower INSTALLATION English - www.worxlandroid.com
https://www.youtube.com/watch?v=PRSmEsf_T0o

Worx Landroid Rasenmäher Roboter im Test
https://www.youtube.com/watch?v=W_SlT196EZU