Hauptmenü

UND Verknüpfung

Begonnen von rodnic, 09 September 2020, 05:08:28

Vorheriges Thema - Nächstes Thema

rodnic

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?

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rabehd

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?
Auch funktionierende Lösungen kann man hinterfragen.

Beta-User

...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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

#4
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

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...
Auch funktionierende Lösungen kann man hinterfragen.

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rodnic

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.

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

#9
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rodnic

Vielen dank, das hat sehr geholfen.
Ja es war ein at.

Wie kann man ein "list" liefern?

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Als nächstes stellt sich die Frage: Wenn man eine Minute nach Sonnenuntergang den "Taster" auf " Ja " stellt, soll der Rollladen dann nicht runter?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF