Hallo,
ich möchte folgenden DEF Befehl : " *{sunset(900,"17:00","22:00")} set MQTT2_Rolladenaktor2_WG close " mit einem UND/AND verknüpfen.
Und zwar mit " Taster_Rollo Ja "
Wie könnte ich das am besten anstellen?
Wieso ist es eigentlich so aus der Mode gekommen, ein "list" der beteiligten Geräte zu liefern?
In https://wiki.fhem.de/wiki/If-condition gibt es gleich zu Beginn ein Beispiel, wie man den Ausführungsteil mit einer Bedingung versehen kann...
Allerdings würde ich empfehlen, Value() zu meiden und stattdessen mit ReadingsVal("geraet","state","default") (oder was anderem "eindeutigem") zu arbeiten.
Zitat von: rodnic am 09 September 2020, 05:08:28
Hallo,
ich möchte folgenden DEF Befehl : " *{sunset(900,"17:00","22:00")} set MQTT2_Rolladenaktor2_WG close " mit einem UND/AND verknüpfen.
Und zwar mit " Taster_Rollo Ja "
Wie könnte ich das am besten anstellen?
Mal über ein DOIF nachgedacht?
...oder AutoShuttersControl...?
Aber davon unabhängig: Du (rodnic) wirst nicht glücklich werden mit FHEM, wenn du dich nicht mit Perl auseinandersetzt. Von daher würde ich empfehlen, erst zu verstehen, wie die Programmiersprache an sich "tickt", bevor du intensiver in die diversen Helferlein einsteigst, die es für verschiedene Aufgaben so gibt... (DOIF ist mAn. auch nur scheinbar "einfach").
Just my2ct.
Zitat von: rodnic am 09 September 2020, 05:08:28
Hallo,
ich möchte folgenden DEF Befehl : " *{sunset(900,"17:00","22:00")} set MQTT2_Rolladenaktor2_WG close " mit einem UND/AND verknüpfen.
Und zwar mit " Taster_Rollo Ja "
Wie könnte ich das am besten anstellen?
Ein Taster generiert nur ein Event und hat im Gegensatz zu einem Schalter keinen dauerhaften Zustand, auch sunset generiert nur ein Timer-Event und ist damit kein Zustand.
In FHEM werden Events sequentiell (nacheinander) abgearbeitet, damit können zwei verschiedene Events niemals zum gleichen Zeitpunkt (UND-Verknüpfung) wahr sein.
Hier sollte man wohl erstmal den UseCase klären.
Im Moment ist der wohl: Wenn ich genau zum Zeitpunkt des Sonnenunterganges den Taster drücke, dann...
Zitat von: rabehd am 10 September 2020, 07:05:21
Hier sollte man wohl erstmal den UseCase klären.
Im Moment ist der wohl: Wenn ich genau zum Zeitpunkt des Sonnenunterganges den Taster drücke, dann...
1) Wenn er tatsächlich Taster meint, dann kann er nur "nach Sonnenuntergang" meinen, was einem dauerhaften Zustand entspreche.
2) Wenn Taster aber Schalter wäre, dann meint er vielleicht, wenn Schalter auf "ja" steht, dann beim Sonnenuntergang etwas tun.
3) Oder wenn beim Sonnenuntergang der Schalter auf "ja" steht, oder nach Sonnenuntergang auf "ja" gestellt wird, dann etwas tun.
Ich nutze derzeit den DEF Befehl : " *{sunset(900,"17:00","22:00")} set MQTT2_Rolladenaktor2_WG close "
Mit einem Hardwareschalter schalte ich den "virtuellen" Taster um.
Dieser hat dann diesen Namen " Taster_Rollo" und diesen STATE " Ja "
Ich möchten nun den o.g. sunset Zustand und den Taster STATE und verknüpfen.
Quasi wenn der Schalter "Taster_Rollo" auf Ja steht und der Sonnenuntergangszustand anliegen das Rollo zu fahren.
Zitat von: rodnic am 10 September 2020, 17:49:29
Ich nutze derzeit den DEF Befehl : " *{sunset(900,"17:00","22:00")} set MQTT2_Rolladenaktor2_WG close "
Mit einem Hardwareschalter schalte ich den "virtuellen" Taster um.
Dieser hat dann diesen Namen " Taster_Rollo" und diesen STATE " Ja "
Ich möchten nun den o.g. sunset Zustand und den Taster STATE und verknüpfen.
Quasi wenn der Schalter "Taster_Rollo" auf Ja steht und der Sonnenuntergangszustand anliegen das Rollo zu fahren.
Dann z. B.
DOIF ([Taster_Rollo:state] eq "Ja" and [{sunset(900,"17:00","22:00")}]) (set MQTT2_Rolladenaktor2_WG close)
attr do always
Hi,
mal geraten: Das ist ein at!? - "ich nutze den DEF Befehl ..." :-X
FHEM Variante
*{sunset(900,"17:00","22:00")} IF ([Taster_Rollo] eq " Ja ") (set MQTT2_Rolladenaktor2_WG close)
Perl Variante:
*{sunset(900,"17:00","22:00")} {fhem ("set MQTT2_Rolladenaktor2_WG close") if (Value("Taster_Rollo") eq " Ja ")}
Man beachte, da kein list geliefert wurde :( (man sollte sowas bei Ignoranz eigentlich nicht mehr beantworten) habe ich stur die Textaufgabe übernommen:
STATE und nicht state - also nicht [Taster_Rollo:state] sondern [Taster_Rollo] bzw. Value("Taster_Rollo")
Und der gewünschte Inhalt " Ja " - also mit Leerzeichen!
Gruß und wahrscheinlich raus
Otto
Vielen dank, das hat sehr geholfen.
Ja es war ein at.
Wie kann man ein "list" liefern?
steht alles hier ;)
https://forum.fhem.de/index.php/topic,71806.0.html
Als nächstes stellt sich die Frage: Wenn man eine Minute nach Sonnenuntergang den "Taster" auf " Ja " stellt, soll der Rollladen dann nicht runter?