Verschachteltes DOIF vereinfachen?

Begonnen von andies, 13 August 2023, 14:43:07

Vorheriges Thema - Nächstes Thema

andies

Guten Tag in die Runde, ich habe jetzt eine halbe Stunde vergeblich probiert, für das nachfolgende DOIF eine einfachere Version zu finden:
defmod KlingelAusloesen
DOIF
(([Klingelsensor:Button1_Action] eq "SINGLE") and ([Profil:housemode] eq "normal"))  (set Klingel on-for-timer 1,set TelegramBot message 🛎�)
DOELSEIF (([Klingelsensor:Button1_Action] eq "SINGLE") and ([Profil:housemode] eq "absence")) (set TelegramBot message 🛎�)

Falls jemand im Forum Lust und Zeit hat, hier eine bessere Verschachtelung zu formulieren, wäre ich sehr dankbar. Ich kriege das nicht hin und mir kommt die doppelte Abfrage irgendwie umständlich vor.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

rabehd

Zitat von: andies am 13 August 2023, 14:43:07... und mir kommt die doppelte Abfrage irgendwie umständlich vor.
Mir nicht, aber wenns Dich stört, warum baust Du nicht ein "if" in den Ausführungsteil ein?
Dann würde ich aber gleich ein notify draus machen.
Auch funktionierende Lösungen kann man hinterfragen.

Damian

Zitat von: andies am 13 August 2023, 14:43:07Guten Tag in die Runde, ich habe jetzt eine halbe Stunde vergeblich probiert, für das nachfolgende DOIF eine einfachere Version zu finden:
defmod KlingelAusloesen
DOIF
(([Klingelsensor:Button1_Action] eq "SINGLE") and ([Profil:housemode] eq "normal"))  (set Klingel on-for-timer 1,set TelegramBot message 🛎�)
DOELSEIF (([Klingelsensor:Button1_Action] eq "SINGLE") and ([Profil:housemode] eq "absence")) (set TelegramBot message 🛎�)

Falls jemand im Forum Lust und Zeit hat, hier eine bessere Verschachtelung zu formulieren, wäre ich sehr dankbar. Ich kriege das nicht hin und mir kommt die doppelte Abfrage irgendwie umständlich vor.

Wenn, dann im Perlmodus:

DOIF
{ if ([Klingelsensor:Button1_Action] eq "SINGLE") {
    if  ([Profil:housemode] eq "normal")  {fhem_set "Klingel on-for-timer 1";fhem_set "TelegramBot message 🛎�"}
    elsif ([Profil:housemode] eq "absence") {fhem_set "set TelegramBot message 🛎�"}
  }
}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andies

Danke! Ich bin nicht auf die Idee mit dem Perl-Modus gekommen.

Toll, so ein Forum. Oder besser: die Leute da drin ;-)
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Per

Noch etwas kürzer:
DOIF
{ if ([Klingelsensor:Button1_Action] eq "SINGLE") {
    if  ([Profil:housemode] eq "normal")
      fhem_set "Klingel on-for-timer 1";
fhem_set "set TelegramBot message 🛎�";
  }
}
Geht auch im Fhem Mode, aber so ists eleganter.

MadMax-FHEM

Zitat von: Per am 14 August 2023, 12:16:27Noch etwas kürzer
Aber nur, wenn es außer "normal" und "absence" nichts gibt... 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

andies

Danke! Es gibt noch andere Modi, aber die benutze ich nie. Genau danach habe ich gesucht und ich weiß nicht, wieso mir das nicht gelungen ist. Aber dafür gibt es ja das Forum.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann