Mähroboter überwachen
Mähroboter mit FHEM überwachen und steuern
Viele Mähroboter sind von Haus aus nicht darauf ausgelegt, mit ihrem Besitzer zu kommunizieren. Auf dieser Seite sollen Wege und Möglichkeiten aufgezeigt werden, wie FHEM dennoch entweder Statusmeldungen erzeugen oder auch den Roboter (in Grenzen natürlich) steuern kann.
Diskussionsthread im Forum: Thema
Sinnvoll ist besonders:
- Fehlermeldung erhalten, wenn der Mähroboter zu lange nicht in der Ladestation ist (=> manueller Eingriff nötig)
- Unterbinden den Einsatzes des Mähroboters, wenn eine Beregnungsanlage läuft (oder andersrum, kein Wasser wenn Robi unterwegs ist)
- Besseres Timing von Mäh-/Ladezeiten
- flexiblere und einfachere Programmierung von Mähzyklen in Abhängigkeit vom Wachstum und oder des Wetters
Viele Mähroboter verfügen nicht über ein Interface, welches man ohne Garantieverlust anzapfen könnte. Damit bleibt vor allem der umgekehrte Weg: auswerten was der Mähroboter gerade macht mit externen Sensoren. Hierzu bieten sich zwei Möglichkeiten an:
- Messung des aktuellen Stromverbrauchs
- Anbringen eines Reed Kontaktes (Tür/Fenstersensor)
Stromverbrauch
Die Idee dahinter ist, dass der Mähroboter verschiedene Betriebszustände hat, welche durch den Stromverbrauch gut erkennbar sind. Wenn man den Roboter auch steuern möchte ist es empfehlenswert, eine Strommessdose mit Ein/Aus-Schaltmöglichkeit zu benutzen.
Stromverbrauch in den Phasen einzelner Modelle
Modell | Eco-Modus | Standby | Mähen | Aufladen | Anmerkungen |
---|---|---|---|---|---|
Husqvarna Automower 305 | 0,5 - 0,7 | 1,7 - 2,5 | 1,7 - 2,5 | 25 | 1, 3 |
weiteres Modell | 0815 | 0815 | 0815 | 0815 | 1, 2 |
- Wichtig: Wenn der Strom ausgeschaltet war, dann steigt kurzfristig der Stromverbrauch auf Werte von 5-15 Watt
- Einfach Copy&Pasten, um die Tabelle entsprechend zu erweitern
- Eine Grafik
Tür/Fensterkontakt
Ein Tür/Fenstersensor eignet sich vor allem dazu, schnell herauszufinden, ob sich der Mähroboter in der Ladestation befindet. Weiterhin kann man so die Mähzeit bestimmen (wie lange ist das Fenster offen) um bei Überschreitung eines Zeitwertes eine Alarmmeldung zu generieren.
Beispielcode
Zustand eines Automowers 305 mit Leistungsmessung
Ein 305 wird mit Hilfe eines Funk-Schaltaktors mit Leistungsmessung überwacht.
Der Code ist ein C&P des DOIF Def. Der Schaltaktor heißt ga_Automower_Pwr.
DOIF
Definition:
([ga_Automower_Pwr:power]>21) DOELSEIF ([ga_Automower_Pwr:power]>3) DOELSEIF ([ga_Automower_Pwr:power]>1.5) DOELSEIF ([ga_Automower_Pwr:power]>0.3) DOELSE
Attribute:
attr ga_Automower_State cmdState ladenAnfang|ladenMitte|maeht|standby|aus
attr ga_Automower_State wait 60:60:180:60:10
Anmerkungen
Das DOIF hat als State einen der Ausdrücke ladenAnfang / ladenMitte / maeht / standby/ aus
Diese können z.B. mit einem Notify weiter ausgewertet werden.
Das wait ist nötig, um Fehler bei den Spannungsspitzen zu vermeiden.
Notify
ga_Automower_State:maeht { my $SollWert=ReadingsVal("Dolly_Zyklen_soll","state",0); my $IstWert=ReadingsVal("Dolly_Zyklen_ist","state",0); $IstWert = $IstWert+1; fhem("set Dolly_Zyklen_ist $IstWert"); if ($IstWert >= $SollWert) { fhem("set ga_Automower_Sw on-for-timer 8500"); } fhem("set MyTTS tts Dolly ist beim grasen."); }
Anmerkungen
Das Notify reagiert auf das obige DOIF. ga_Automower_State:maeht
Es wird von zwei Dummies (Dolly_Zyklen_soll, Dolly_Zyklen_ist) der Wert in je eine Variable geschrieben. Anschließend wird der Ist-Wert um eins erhöht, der Dummy wird upgedatet. Nun kommt ein if, welches, wenn der Ist-Wert >= dem Sollwert ist, den Strom nach 8500 Sekunden abdreht. Noch eine kurze Sprachinfo (hier MyTTS genannt), damit man weiß, ob das Notify überhaupt durchgelaufen ist.
Die 8500 Sekunden sind im Moment willkürlich, es sollte in etwa passieren, wenn der Akku zu 80% geladen ist.
Ein at, welches jeden Morgen ausgeführt wird, dreht den Strom wieder auf (damit der Mäher fertig laden kann) und setzt die Ist-Zyklen wieder auf 0.
Weitere Anmerkungen
Prinzipiell ist es unpraktikabel, den Soll-Wert auf 0 zu setzen um ein Starten des Mähroboters zu verhindern, da er schon unterwegs ist, wenn das Notify anschlägt!
Effektiver ist es, kurz bevor der erste Start erfolgen soll, den Strom wieder aus zu drehen. Die Mähzeit im Roboter habe ich mit 5 Stunden einprogrammiert. Das sollte 3 mal mähen entsprechen. Da ich den Huski noch nicht so lange habe, bin ich mir aber noch nicht sicher. Eventuell wird sich das ändern, wenn das Gras mal richtig zu wachsen anfängt ;)
Bin diesbezüglich noch in der Testphase.
Eleganter als ein on-for-timer wäre es, wenn man auf den Ladezustand direkt reagieren würde. Das DOIF würde schon den Zustand abbilden. Dann dürfte aber ein weiteres DOIF besser sein, als das Notify.
Mähroboter ist nicht wieder in der Ladestation, Lösung mit Watchdog
Ein kurzer Watchdog, der prüft ob der Roboter in der Ladestation ist. In dem Beispiel wird auf State:maeht getriggert, siehe obiges Notify. Ein Tür/Fensterkontakt könnte dies aber ebenso.
Die Zeitangabe liegt bei 1 Stunde 30 Minuten, das ist je nach Modell anzupassen.
Ist bis dahin nicht mal der Zustand ladenAnfang eingetreten, gibt es eine Meldung.
Entsprechender Code
define Automower_needs_help watchdog ga_Automower_State:maeht 01:30:00 ga_Automower_State:ladenAnfang set Pushover msg 'Hilfe' 'Der Husky findet nicht mehr nach Hause zurück'; trigger Automower_needs_help .
Anmerkungen
Am Ende das Leerzeichen und den Punkt beachten, Sonst triggert der Watchdog nur einmal!
Mähroboter mit Tür/Fensterkontakt
Hier ein 330X, mit einem Homematic Tür/Fensterkontakt. Ist von hier übernommen!
Entsprechender Code
Inbetriebnahme:
define GA_Automower CUL_HM 2C9F3B attr GA_Automower alias Automower 330X attr GA_Automower group Hinweis attr GA_Automower icon scene_robo_lawnmower attr GA_Automower room Garten attr GA_Automower eventMap open:mäht closed:geparkt
Zwei Notifies:
define ga_mower01 notify GA_Automower:mäht set PushOver msg 'Hinweis' 'Automower fährt los' define ga_mower02 notify GA_Automower:geparkt set PushOver msg 'Hinweis' 'Automower hat geparkt'
Anmerkungen
Praktische Erweiterung Da ich 6 Gardena-Ventile im Garten ebenfalls über FHEM ansteuere kann ich sie stoppen, sobald der Mäher beginnt:
define ga_mower03 notify GA_Automower:mäht set Ventil0[1-6] off
Platzhalter 1
Kurze Beschreibung welcher Mäher mit welchen Geräten mit diesem Code wie gesteuert wird.
Entsprechender Code
Anmerkungen
Besondere Anmerkungen