Bedingungen mit Statusabfrage

Begonnen von Arnold1991, 02 April 2017, 19:31:11

Vorheriges Thema - Nächstes Thema

Arnold1991

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!


Thorsten Pferdekaemper

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

FUIP

Arnold1991

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)

Thorsten Pferdekaemper

Nein, im ELSE kannst Du keine Bedingung haben. Da müsstest Du schon wieder ein IF reinverschachteln.
Gruß,
   Thorsten
FUIP

Arnold1991

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

Thorsten Pferdekaemper

Nein, jetzt hast Du das ELSE ganz unterschlagen. Das ganze zweite IF ist sozusagen das Kommando im ELSE.
Gruß,
   Thorsten
FUIP

Arnold1991

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  ::)

Thorsten Pferdekaemper

Hi,
so könntes es fast funktionieren. Wahrscheinlich muss das Event aber so angegeben warden:

... notify Gardena:allgemein-status.* ...

Gruß,
   Thorsten
FUIP

Arnold1991

Danke, werd ich später testen!

Arnold1991

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..

Thorsten Pferdekaemper

Also laut Commandref gibt es das Attribut pollInterval...
Gruß,
   Thorsten
FUIP

Arnold1991


Arnold1991

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))

tagedieb

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
FHEM 5.6 auf Cubitruck
CUL und Cul 868 und 2 HM LAN an Zbox
Remoteserver auf 2.Zboxi
HM-CC-RT-DN,HM-LC-Bl1PBU-FM,HM-LC-SW1-FM,HM-LC-SW4-PCB,HM-LC-Sw1PBU-FM,HM-PB-2-WM55,HM-PB-6-WM55,HM-SCI-3-FM,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SC-2,HM-SEC-TIS,HM-WDS10-TH-O u.viele mehr
diverse IT Empfänger und LW3

Thorsten Pferdekaemper

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
FUIP