Mähroboter überwachen: Unterschied zwischen den Versionen
Rince (Diskussion | Beiträge) |
Trelle (Diskussion | Beiträge) (Ausdruck: Leistungsaufnahme statt Stromverbrauch, [ga_Automower_Pwr:power] misst die Leistung) |
||
(8 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=Mähroboter mit | ==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 | 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: {{Link2Forum|Topic=36611}} | |||
Sinnvoll ist besonders: | Sinnvoll ist besonders: | ||
* Fehlermeldung erhalten, wenn der Mähroboter zu lange nicht in der Ladestation ist (=> manueller Eingriff nötig) | * 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) | * 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 | * Besseres Timing von Mäh-/Ladezeiten | ||
* flexiblere und einfachere Programmierung von Mähzyklen in Abhängigkeit vom Wachstum und oder des Wetters | * 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: | 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 | * Messung der aktuellen Leistungsaufnahme | ||
* Anbringen eines Reed Kontaktes (Tür/Fenstersensor) | * Anbringen eines Reed Kontaktes (Tür/Fenstersensor) | ||
===Leistungsaufnahme=== | |||
Die Idee dahinter ist, dass der Mähroboter verschiedene Betriebszustände hat, welche durch die Leistungsaufnahme gut erkennbar sind. Wenn man den Roboter auch steuern möchte ist es empfehlenswert, eine Strommessdose mit Ein/Aus-Schaltmöglichkeit zu benutzen. | |||
== | ====Leistungsaufnahme / W in den Phasen einzelner Modelle==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Zeile 31: | Zeile 27: | ||
|} | |} | ||
# Wichtig: Wenn der Strom ausgeschaltet war, dann steigt kurzfristig die Leistungsaufnahme auf Werte von 5-15 Watt | |||
Wenn der Strom ausgeschaltet war, dann steigt kurzfristig | # Einfach Copy&Pasten, um die Tabelle entsprechend zu erweitern | ||
# Eine Grafik | |||
[[Datei: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. | |||
==Zustand eines Automowers 305== | ==Beispielcode== | ||
Ein 305 wird mit Hilfe eines [ | ===Zustand eines Automowers 305 mit Leistungsmessung=== | ||
Ein 305 wird mit Hilfe eines [[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung|Funk-Schaltaktors mit Leistungsmessung]] überwacht. | |||
Der Code ist ein C&P des DOIF Def. Der Schaltaktor heißt ga_Automower_Pwr. | Der Code ist ein C&P des DOIF Def. Der Schaltaktor heißt ga_Automower_Pwr. | ||
===DOIF=== | ====DOIF==== | ||
Definition: | |||
:<code>([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</code> | |||
Attribute: | Attribute: | ||
:<code>attr ga_Automower_State cmdState ladenAnfang|ladenMitte|maeht|standby|aus</code> | |||
:<code>attr ga_Automower_State wait 60:60:180:60:10</code> | |||
===Anmerkungen=== | ====Anmerkungen==== | ||
Das DOIF hat als State einen der Ausdrücke ladenAnfang / ladenMitte / maeht / standby/ aus | 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. | Diese können z.B. mit einem [[Notify]] weiter ausgewertet werden. | ||
Das wait ist nötig, um Fehler bei den Spannungsspitzen zu vermeiden. | Das wait ist nötig, um Fehler bei den Spannungsspitzen zu vermeiden. | ||
====Notify==== | |||
===Notify=== | |||
ga_Automower_State:maeht { | ga_Automower_State:maeht { | ||
my $SollWert=ReadingsVal("Dolly_Zyklen_soll","state",0); | my $SollWert=ReadingsVal("Dolly_Zyklen_soll","state",0); | ||
Zeile 73: | Zeile 63: | ||
fhem("set Dolly_Zyklen_ist $IstWert"); | fhem("set Dolly_Zyklen_ist $IstWert"); | ||
if ($IstWert >= $SollWert) { | if ($IstWert >= $SollWert) { | ||
fhem("set ga_Automower_Sw on-for-timer | fhem("set ga_Automower_Sw on-for-timer 8500"); | ||
} | } | ||
fhem("set MyTTS tts Dolly ist beim grasen."); | fhem("set MyTTS tts Dolly ist beim grasen."); | ||
} | } | ||
===Anmerkungen=== | ====Anmerkungen==== | ||
Das Notify reagiert auf das obige DOIF. ga_Automower_State:maeht | Das Notify reagiert auf das obige DOIF. ga_Automower_State:maeht | ||
Es wird von | 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 | 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. | ||
Nun kommt ein if, welches, wenn der Ist-Wert >= dem Sollwert ist, den Strom nach | |||
Noch eine kurze Sprachinfo (hier MyTTS genannt), damit man weiß, ob das Notify überhaupt durchgelaufen ist. | |||
Die | Die 8500 Sekunden sind im Moment willkürlich, es sollte in etwa passieren, wenn der Akku zu 80% geladen ist. | ||
Ein at, welches jeden | 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=== | ====Weitere Anmerkungen==== | ||
Prinzipiell ist es unpraktikabel, den | 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 ;) | 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 ;) | ||
Zeile 98: | Zeile 86: | ||
Bin diesbezüglich noch in der Testphase. | 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. | ||
===Entsprechender Code=== | ===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=== | ===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 [http://www.roboter-forum.com/showthread.php?8523-Wo-isser&p=99027&viewfull=1#post99027 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: | |||
:<code>define ga_mower03 notify GA_Automower:mäht set Ventil0[1-6] off</code> | |||
===Platzhalter 1=== | |||
Kurze Beschreibung welcher Mäher mit welchen Geräten mit diesem Code wie gesteuert wird. | |||
====Entsprechender Code==== | |||
====Anmerkungen==== | |||
Besondere Anmerkungen | Besondere Anmerkungen | ||
== Links == | |||
[[AutomowerConnect]] | |||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] | ||
[[Kategorie:Mähroboter]] |
Aktuelle Version vom 26. Januar 2023, 23:47 Uhr
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 der aktuellen Leistungsaufnahme
- Anbringen eines Reed Kontaktes (Tür/Fenstersensor)
Leistungsaufnahme
Die Idee dahinter ist, dass der Mähroboter verschiedene Betriebszustände hat, welche durch die Leistungsaufnahme gut erkennbar sind. Wenn man den Roboter auch steuern möchte ist es empfehlenswert, eine Strommessdose mit Ein/Aus-Schaltmöglichkeit zu benutzen.
Leistungsaufnahme / W 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 die Leistungsaufnahme 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