Hallo,
ich habe mir ein notify gebaut das mir die Anzahl der offenen/gekippten/geschlossenen Fenster aufsummieren soll.
Leider finde ich den Fehler nicht, im Log kommt die Fehlermeldung
configfile: Unknown command }, try help.
Ich bitte um Nachsicht, es sind meine ersten Gehversuche in Perl...
hier das notify:
define nfy.fstatus notify Fenster.* {\
my $offene=0;;\
my $gekippte=0;;\
my $geschlossene=0;;\
my @@stati=devspec2array("NAME=/*Fenster.*/*");;\
foreach(@@stati) {\
my $stat=ReadingsVal($_, "state", "closed");;\
if ($stat eq "open") {\
$offene++\
}\
if ($stat eq "closed") {\
$geschlossene++\
}\
if ($stat eq "tilted") {\
$gekippte++\
}\
}\
fhem("set offene_fenster " . $offene);;\
fhem("set gekippte_fenster " . $gekippte);;\
fhem("set geschlossene_fenster " . $geschlossene);;\
fhem("set LCD cls");;\
fhem("set LCD text 1 22 Fenster_offen:".(Value("offene_fenster")));;\
fhem("set LCD text 1 30 Fenster_gekippt:".(Value("gekippte_fenster")))\
}
Wäre schön wenn sich das mal jemand ansehen könnte und mir sagt was ich falsch mache.
Danke und Gruß
Peter
...edit:
habs gefunden, so klappts:
define nfy.fstatus notify Fenster.* {\
my $offene=0;;\
my $gekippte=0;;\
my $geschlossene=0;;\
my @@stati=devspec2array("NAME=/*Fenster.*/*");;\
foreach(@@stati) {\
my $stat=ReadingsVal($_, "state", "closed");;\
if ($stat eq "open") {\
$offene++\
};;\
if ($stat eq "closed") {\
$geschlossene++\
};;\
if ($stat eq "tilted") {\
$gekippte++\
};;\
};;\
fhem("set offene_fenster " . $offene);;\
fhem("set gekippte_fenster " . $gekippte);;\
fhem("set geschlossene_fenster " . $geschlossene);;\
fhem("set LCD cls");;\
fhem("set LCD text 1 22 Fenster_offen:".(Value("offene_fenster")));;\
fhem("set LCD text 1 30 Fenster_gekippt:".(Value("gekippte_fenster")))\
}
Ein ordentlicher Editor wirkt Wunder !
Ich bekomme keine Fehlermeldung.
Ich empfehle trotzdem alles was nicht wirklich ein Einzeiler ist in 99_myUtils.pm als Funktion (d.h. sub) zu definieren, da braucht man kein @@,%%,;; und \, und die Fehlermeldung von perl ist zeilengenau.
Das Regexp /*Fenster.*/* finde ich verwirrend (/* ist 2x ueberfluessig), auch wenn es nicht direkt falsch ist.
Edit: In 99% der Faelle bei einem };; ist das ;; ueberfluessig.
Hallo Rudolf,
danke für die Tips !