Autor Thema: mit einem DOIF auf 2 Ereignisse reagieren  (Gelesen 873 mal)

Offline Sany

  • Full Member
  • ***
  • Beiträge: 383
Antw:mit einem DOIF auf 2 Ereignisse reagieren
« Antwort #15 am: 14 Mai 2022, 08:28:32 »
Zitat
Ich 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 deConz(ZigBee), MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9749
Antw:mit einem DOIF auf 2 Ereignisse reagieren
« Antwort #16 am: 14 Mai 2022, 09:34:47 »
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

Offline Kurt77

  • Full Member
  • ***
  • Beiträge: 255
Antw:mit einem DOIF auf 2 Ereignisse reagieren
« Antwort #17 am: 14 Mai 2022, 11:21:38 »
Danke, ich werde jetzt mal versuchen, Sany's Vorschlag aus #15 nachzuvollziehen.
Gruß Kurt