Hallöchien Zusammen :),
Ich bin noch frisch in dem ganzen FHEM Thema und finde mir zu meinem Problem keine passende Lösung..
Kurze Infos zum Projekt:
Mein Gardena Mähroboter ist mit dem Robonect Hx Modul ausgestattet (in FHEM schon integriert), ich möchte gerne, wenn der Status ,,suche" oder ,,suche-base" ausgegeben wird, das Tor, vorerst ein Dummy, nach oben geht ("Garagentor Oben").
Bei ,,meahen" und ,,laden" soll das Tor unten sein (Garagentor Unten).
Mein erster Ansatz wäre jetzt der Folgende gewesen, läuft aber nicht. Zudem müsste ich die Abfrage des Status auf 5 Sekunden legen.
define Torsteuerung notify Gardena IF ([Gardena:&STATE] eq "suche") (set Garagentor Oben) else ([Gardena:&STATE] eq "laden") (set Garagentor Unten) else ([Gardena:&STATE] eq "meahen") (set Garagentor Unten) else ([Gardena:&STATE] eq "suche-base") (set Garagentor Oben)
Ich wäre über jeden Tipp und Hilfe mehr wie Dankbar!
Hi,
1. Ich würde niemals STATE verwenden. Besser ist immer ein Reading. Such Dir also in Gardena ein geeignetes Reading.
2. Ich bin mir relativ sicher, dass es nicht "meahen" heißt.
3. "else" geht nicht, es muss "ELSE" heißen.
4. Man kann die ELSE-Zweige nicht so verketten. Es geht so:
IF (<condition>) (...)
ELSE ( IF (<condition> (...) ELSE (...) )
5. In der condition müsste auch "or" gehen, also z.B.:
IF ([Gardena:blabla] eq "suche" or [Gardena:blabla] eq "suche-base") ( ... )
Gruß,
Thorsten
Hi, danke für die Antwort, folgend müsste es ja dann so lauten?
define Torsteuerung notify Gardena:allgemein-status IF ([Gardena:allgemein-status] eq "suche" or [Gardena:allgemein-status] eq "suche-base") (set Garagentor Oben) ELSE ([Gardena:allgemein-status] eq "schlafen" or [Gardena:allgemein-status] eq "maehen") (set Garagentor Unten)
Nein, im ELSE kannst Du keine Bedingung haben. Da müsstest Du schon wieder ein IF reinverschachteln.
Gruß,
Thorsten
Also so?
define Torsteuerung notify Gardena:allgemein-status IF ([Gardena:allgemein-status] eq "suche" or [Gardena:allgemein-status] eq "suche-base") (set Garagentor Oben) IF ([Gardena:allgemein-status] eq "schlafen" or [Gardena:allgemein-status] eq "maehen") (set Garagentor Unten)
Danke für die rasche Antwort
Nein, jetzt hast Du das ELSE ganz unterschlagen. Das ganze zweite IF ist sozusagen das Kommando im ELSE.
Gruß,
Thorsten
define Torsteuerung notify Gardena:allgemein-status IF ([Gardena:allgemein-status] eq "suche" or [Gardena:allgemein-status] eq "suche-base") (set Garagentor Oben) ELSE (IF ([Gardena:allgemein-status] eq "schlafen" or [Gardena:allgemein-status] eq "maehen") (set Garagentor Unten))
Ich denke schön langsam kommen wir so zum Ziel ::)
Hi,
so könntes es fast funktionieren. Wahrscheinlich muss das Event aber so angegeben warden:
... notify Gardena:allgemein-status.* ...
Gruß,
Thorsten
Danke, werd ich später testen!
So, ich hab jetzt vorhin den CUL-Stick installiert und in betriebgenommen, den Code dementsprechen angepasst, läuft!
Nur ein Problem stellt sich mir noch, wie kann ich das Modul "Robonect" in Sekundentakt aktualisieren, um immer den aktuellen Status zu bekommen?
Ich müsste das modul immer von hand mit "get Gardena status" updaten..
Also laut Commandref gibt es das Attribut pollInterval...
Gruß,
Thorsten
steht bei mir schon auf 1
Der Vollständigkeit halber der Code mit 10 sekunden Timer:
define GardenaTor notify Gardena:allgemein-status.* IF ([Gardena:allgemein-status] eq "suche" or [Gardena:allgemein-status] eq "suche-base") (set Output_2 on-for-timer 10) ELSE (IF ([Gardena:allgemein-status] eq "laden" or [Gardena:allgemein-status] eq "maehen") (set Output_1 on-for-timer 10))
Hallo Arnold1991
warum regelst du das nicht mit einem DOIF?
define Torsteuerung DOIF ([ Gardena:allgemein-status] eq "suche" or [Gardena:allgemein-status] eq "suche-base") (set Garagentor Oben) DOELSEIF ([Gardena:allgemein-status] eq "schlafen" or [Gardena:allgemein-status] eq "maehen") (set Garagentor Unten)
ich habe bei mir noch einen Kontakt mit eingebaut, um zu kontrollieren, ober der Mäher in der Garage ist
gruss tagedieb
Zitat von: tagedieb am 04 April 2017, 22:25:20
warum regelst du das nicht mit einem DOIF?
Warum sollte er, wenn es doch mit einem notify funktioniert?
Ich z.B. bin zu blöd für DOIF. Da passiert irgendwie zu viel implizit, so dass ich schon bei einfachen Sachen nicht mehr durchblicke. Da ist mir notify und at lieber, da weiß ich irgendwie was ich habe. DOIF ist mir persönlich zu komplex.
Gruß,
Thorsten
Guten Morgen,
ich habs Grad noch schnell getestet, da komme ich aufs gleiche Ergebnis, ich muss mit set Garden status abfragen um eine Änderung im Status zu bekommen, so passiert da nix.. Kann ich da in pm nicht eine get status schleife schreiben?
Zitat von: Arnold1991 am 05 April 2017, 07:13:12ich habs Grad noch schnell getestet, da komme ich aufs gleiche Ergebnis, ich muss mit set Garden status abfragen um eine Änderung im Status zu bekommen, so passiert da nix.. Kann ich da in pm nicht eine get status schleife schreiben?
Also ich würde da empfehlen, das mal im Unterforum zum Modul zu fragen.
Ansonsten ist das etwas für ein at.
Gruß,
Thorsten
Hab den Fehler gefunden.. ::) natürlich eine kleinigkeit, das Robonect-Modul besitzt die Funktion Winterschlaf, die ist im Hintergrund anscheinend auf ON gestanden, habs auf OFF gestellt und siehe da, die Readings werden jede Sekunde geupdatet.
Noch eine Frage... Wie bekomme ich das hin, das wenn Output_2 on ist gleichzeitig Output_1 off und andersrum ist?
Danke nochmal für die Unterstützung!
Hi,
ich habe seit heute, Update auf
Version: 86_Robonect.pm 13571 2017-03-01 19:35:51Z
auch das Problem, daß nicht mehr gepollt wird. :o
Ein manuelles Update der Readings per "get robot Status" funktioniert problemlos.
Zitat von: Arnold1991 am 05 April 2017, 18:40:26
... das Robonect-Modul besitzt die Funktion Winterschlaf, die ist im Hintergrund anscheinend auf ON gestanden, habs auf OFF gestellt
Wo find ich diesen "Winterschlaf", ich bin alle Menüpunkte im WebUI durchgegangen.
(Robonect Version V0.9c)
Gruß
Hat sich erledigt. ;D
Der Winterschlaf stand auf "0", habe ihn auf "off" gesetzt.