Notify mit IF Anweisung

Begonnen von baerm, 11 September 2022, 16:57:11

Vorheriges Thema - Nächstes Thema

baerm

Hallo,
ich brauche ein Notify mit IF / ELSEIF Anweisungen. Leider funktioniert das nicht wie gewollt.

Ein IF + ELSE funktioniert.
defmod ntfy_WPM_RR1 notify KNX_0104044:WERT.* { \
  if (fhem"[KNX_0104042:state] eq 50") { \
  fhem"set MessageTxt ntfy_test 50"  \
    } else {   \
  fhem"set MessageTxt ntfy_test ELSE" }  \
       }
       

       
So hätte ich mir das mit ELSEIF gedacht. Geht leider nicht.
defmod ntfy_WPM_RR1 notify KNX_0104044:WERT.* { \
  if (fhem"[KNX_0104042:state] eq 50") { \
  fhem"set MessageTxt ntfy_test 50"  \
    }  elseif (fhem"[KNX_0104042:state] eq 51") {  \
  fhem"set MessageTxt ntfy_test 51"  \
    }  else {  \
  fhem"set MessageTxt ntfy_test ELSE" }  \
    }


Was mache ich falsch?
lg
Matthias

rudolfkoenig

Da geht einiges schief, ich vermute aber, dass die Ursache die freie Kombination der IF/DOIF Befehle mit dem perl if ist.

Fuer "einfaches" perl schlage ich Folgendes vor (ungetestet):
defmod ntfy_WPM_RR1 notify KNX_0104044:WERT.* { \
  if (ReadingsNum("KNX_0104042","state",0) eq "50") {\
  fhem "set MessageTxt ntfy_test 50"\
  } elsif (ReadingsNum("KNX_0104042","state",0) eq "51") {\
  fhem "set MessageTxt ntfy_test 51"\
  } else {\
  fhem "set MessageTxt ntfy_test ELSE"\
  }\
}

MadMax-FHEM

Es heißt (in Perl) auf jeden Fall schon mal nicht "elseif" sondern "elsif"... ;)

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)

baerm

Vielen Dank für die rasche Hilfe! Hat geklappt.