FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Peter am 13 Juli 2014, 18:07:04

Titel: Ich finde den Syntaxfehler nicht...
Beitrag von: Peter am 13 Juli 2014, 18:07:04
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 !
Titel: Antw:Ich finde den Syntaxfehler nicht...
Beitrag von: rudolfkoenig am 13 Juli 2014, 18:55:48
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.
Titel: Antw:Ich finde den Syntaxfehler nicht...
Beitrag von: Peter am 14 Juli 2014, 10:32:33
Hallo Rudolf,

danke für die Tips !