mit einem DOIF auf 2 Ereignisse reagieren

Begonnen von Kurt77, 12 Mai 2022, 17:55:56

Vorheriges Thema - Nächstes Thema

Sany

ZitatIch würde es gleich im Perl-Modus machen, dann spart man sich das do always Attribut, es ist ohne FHEM-Befehle performanter und set_Reading als Perlfunktion ist dafür wie geschaffen. :)

da hast Du völlig recht, würde ich auch, da ich nur noch den Perl-Modus nutze. Da Kurt aber nach einer Lösung für sein Problem gesucht hat, was er mit einem fhem-DOIF aufgeschrieben hat, wollte ich das erst mal so machen, damit er damit auch was anfangen kann.

Aber, vielleicht ist es ja noch hilfreich: hier noch die Version in perl-DOIF:
defmod di_licht_perlmode DOIF licht{\
if(["^licht:^illuminance_lux",20] < 10 and get_Reading("l_$device") eq "hell"){\
Log3 "undef",3,"(perlDOIF) Warnung - Licht aus $device";;\
set_Reading("l_$device","dunkel");;\
set_State("cmd_1");;\
} else {\
set_Reading("l_$device","hell");;\
set_State("cmd_2");;\
}\
}\
\
## die beiden Zeilen set_State dienen nur dazu, diese DOIF so aussehen zu lassen, wie das fhem-DOIF.
attr di_licht_perlmode room di_Licht


Gruß


Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Damian

Zitat von: Sany am 14 Mai 2022, 08:28:32
da hast Du völlig recht, würde ich auch, da ich nur noch den Perl-Modus nutze. Da Kurt aber nach einer Lösung für sein Problem gesucht hat, was er mit einem fhem-DOIF aufgeschrieben hat, wollte ich das erst mal so machen, damit er damit auch was anfangen kann.

Aber, vielleicht ist es ja noch hilfreich: hier noch die Version in perl-DOIF:
defmod di_licht_perlmode DOIF licht{\
if(["^licht:^illuminance_lux",20] < 10 and get_Reading("l_$device") eq "hell"){\
Log3 "undef",3,"(perlDOIF) Warnung - Licht aus $device";;\
set_Reading("l_$device","dunkel");;\
set_State("cmd_1");;\
} else {\
set_Reading("l_$device","hell");;\
set_State("cmd_2");;\
}\
}\
\
## die beiden Zeilen set_State dienen nur dazu, diese DOIF so aussehen zu lassen, wie das fhem-DOIF.
attr di_licht_perlmode room di_Licht


Gruß


Sany

Wenn man schon den Status elegant per set_State setzen kann, dann kann man auch gleich mehr Information reinpacken, z. B. set_State ("$device dunkel") bzw. set_State ("$device hell")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kurt77

Danke, ich werde jetzt mal versuchen, Sany's Vorschlag aus #15 nachzuvollziehen.
Gruß Kurt