notify if geschachtelt mit elsif

Begonnen von perseusarm, 27 Dezember 2016, 00:49:01

Vorheriges Thema - Nächstes Thema

perseusarm

Ich und die vielen Klammern [](){} bei einem notify...

Da meine Frau ein WhatsApp-Junkie ist wollte ich sie unseren Weichnachtsbaum und ein paar andere Dinge per WA schalten lassen.
Dafür hab ich einen Notify erstellt der funktioniert:

define not_SaschaWhatsApp notify WhatsAppSascha:message:.* {\
    if ($EVTPART1 eq 'Weihnachtsbaum') {\
        if ($EVENT =~ 'an') {fhem("set Steckdose433_XMasTree on");;fhem("set WhatsAppSascha send Weihnachtsbaum ist an");;}\
        elsif ($EVENT =~ 'aus') {fhem("set Steckdose433_XMasTree off");;fhem("set WhatsAppSascha send Weihnachtsbaum ist aus");;}\
    }\
    elsif ($EVTPART1 eq 'Status') {my $msg = "Waschmaschine: ". Value("WaschmaschineZustand"). " - Garage rechts: ". Value("SensorGarageRechts"). " - Abfall: ". ReadingsVal("Abfall","next_text","unbekannt"). " in ".ReadingsVal("Abfall","next_tage","unbekannt"). " Tagen, also am ". ReadingsVal("Abfall","next_wochentag","unbekannt"). ", den ". ReadingsVal("Abfall","next_datum","unbekannt");; fhem("set WhatsAppSascha send $msg");;}\
    else {fhem("set WhatsAppSascha send Befehl nicht bekannt");;}\
}


So weit so gut, WAF fast bei 100% (oder 90%), denn gleich kam die Frage "Geht das mit dem Licht hinterm Fernseher auch?"
Ich sag "Klar, warte kurz." .. und kämpfe jetzt schon seit Stunden mit

Unknown command if, try help. Unknown command {, try help. Unknown command if, try help. Unknown command elsif, try help. Unknown command }, try help. Unknown command elsif, try help. Unknown command {, try help. Unknown command if, try help. Unknown command elsif, try help. Unknown command }, try help. Unknown command elsif, try help. Unknown command {, try help. Unknown command my, try help. Unknown command }, try help. Unknown command else, try help. Unknown command }, try help.

bei:


define not_SaschaWhatsApp notify WhatsAppSascha:message:.* {
    if ($EVTPART1 eq 'Weihnachtsbaum')
{
        if ($EVENT =~ 'an') {fhem("set Steckdose433_XMasTree on");;fhem("set WhatsAppSascha send Weihnachtsbaum ist an");;}
        elsif ($EVENT =~ 'aus') {fhem("set Steckdose433_XMasTree off");;fhem("set WhatsAppSascha send Weihnachtsbaum ist aus");;}
   }
   elsif ($EVTPART1 eq 'TVLicht')
   {
        if ($EVENT =~ 'an') {fhem("set WZ_wifiLight on");;fhem("set WhatsAppSascha send TVLicht ist an");;}
        elsif ($EVENT =~ 'aus') {fhem("set WZ_wifiLight off");;fhem("set WhatsAppSascha send TVLicht ist aus");;}
}
elsif ($EVTPART1 eq 'Status')
{
my $msg = "Waschmaschine: ". Value("WaschmaschineZustand"). " - Garage rechts: ". Value("SensorGarageRechts"). " - Abfall: ". ReadingsVal("Abfall","next_text","unbekannt"). " in ".ReadingsVal("Abfall","next_tage","unbekannt"). " Tagen, also am ". ReadingsVal("Abfall","next_wochentag","unbekannt"). ", den ". ReadingsVal("Abfall","next_datum","unbekannt");; fhem("set WhatsAppSascha send $msg");;
}
    else {fhem("set WhatsAppSascha send Befehl nicht bekannt");;}
   }

   
   Irgendwie müssen wohl die Klammern falsch sein, aber ich bekomms nicht hin.
   Ich würde mich freuen wenn mir dabei mal jemand helfen könnte.
Vielen Dank   
FHEM auf NUC, CUL866, HM-.*, Raspimatc, ...

rudolfkoenig

Falls diese Definition aus der fhem.cfg kommt: es fehlt ein \ am Ende jeder Zeile.
Insb. fuer Anfaenger empfiehlt sich ein Klick auf DEF in der FHEMWEB Detailansicht um Definitionen zu bearbeiten, da kann man auf \ und ;; verzichten. Ich wuerde aber etwas, was nicht auf eine Zeile passt, als Funktion in 99_myUtils.pm bauen, da kann man auf ;; und \ verzichten, und eine gescheite Fehlermeldung kriegt man auch. Also in 99_myUtils.pm:
sub
not_SaschaWhatsAppFn($$)
{
  my ($EVENT, $EVTPART1) = @_;
  if($EVTPART1 eq ...
}
und Aufruf mit
define not_SaschaWhatsApp notify WhatsAppSascha:message:.* { not_SaschaWhatsAppFn($EVENT, $EVTPART1) }

perseusarm

Hallo Rudolf,

vielen Dank. Hab nochmal von vorne angefangen und alles etwas strukturierter geschrieben (mit korrekten Einrückungen Linebreaks damits lesbarer wird.)
Als Funktion in die 99_myUtils.pm werd ich´s dann jetzt wo es prinzipiell funktioniert mal einbauen, das ist tatsächlich viel übersichtlicher.
Vielen Dank
FHEM auf NUC, CUL866, HM-.*, Raspimatc, ...