Mähroboter überwachen

Aus FHEMWiki
Version vom 12. Februar 2021, 17:28 Uhr von Ph1959de (Diskussion | Beiträge) (Kategorie hinzugefügt + kleine Korrekturen / Änderungen)
Zur Navigation springen Zur Suche springen

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
  1. Wichtig: Wenn der Strom ausgeschaltet war, dann steigt kurzfristig der Stromverbrauch auf Werte von 5-15 Watt
  2. Einfach Copy&Pasten, um die Tabelle entsprechend zu erweitern
  3. Eine Grafik

Automower Stromverbrauch.png

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