Mähroboter überwachen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Ausdruck: Leistungsaufnahme statt Stromverbrauch, [ga_Automower_Pwr:power] misst die Leistung)
 
(4 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Mähroboter mit fhem überwachen und steuern=
==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.
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: [http://forum.fhem.de/index.php/topic,36611.0.html]


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 des aktuellen Stromverbrauchs
* 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.


==Stromverbrauch==
====Leistungsaufnahme / W in den Phasen einzelner Modelle====
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===
 
{| class="wikitable"
{| class="wikitable"
|-
|-
Zeile 33: Zeile 27:
|}
|}


1 Wichtig:
# 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 der Stromverbrauch auf Werte von 5-15 Watt
# Einfach Copy&Pasten, um die Tabelle entsprechend zu erweitern
 
# Eine Grafik
2 Einfach Copy&Pasten, um die Tabelle entsprechend zu erweitern
[[Datei:Automower_Stromverbrauch.png]]
 
3 Eine Grafik
[http://www.fhemwiki.de/w/images/d/d6/Automower_Stromverbrauch.png]
 
==Tür/Fensterkontakt==
Ein Tür/Fenstersensor eignet sich vor allem dazu um 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=


===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 mit Leistungsmessung==
==Beispielcode==
Ein 305 wird mit Hilfe eines [http://www.fhemwiki.de/wiki/HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung Funk-Schaltaktors mit Leistungsmessung] überwacht.
===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====
([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
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:
attr ga_Automower_State cmdState ladenAnfang|ladenMitte|maeht|standby|aus
:<code>attr ga_Automower_State cmdState ladenAnfang|ladenMitte|maeht|standby|aus</code>
attr ga_Automower_State wait 60:60:60:60:10
:<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 74: 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 6800");
  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 2 Dummies (Dolly_Zyklen_soll, Dolly_Zyklen_ist) der Wert in je eine Variable geschrieben.
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 1 erhöht, der Dummy wird upgedatet.
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 6800 Sekunden abdreht.
Noch eine kurze Sprachinfo (hier MyTTS genannt), damit man weiß, ob das Notify überhaupt durchgelaufen ist.


Die 6800 Sekunden sind im Moment willkürlich, es sollte in etwa passieren, wenn der Akku zu 80% geladen 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.
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 Soll-Wert auf 0 zu setzen um ein Starten des Mähroboters zu verhindern, da er schon unterwegs ist, wenn das Notify anschlägt!
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!


Zeile 99: 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.
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 .


==Platzhalter 1==
Kurze Beschreibung welcher Mäher mit welchen Geräten mit diesem Code wie gesteuert wird
===Entsprechender Code===
===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
  1. Wichtig: Wenn der Strom ausgeschaltet war, dann steigt kurzfristig die Leistungsaufnahme 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

Links

AutomowerConnect