FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Feinfinger am 29 Dezember 2020, 07:41:40

Titel: Syntax Error im notify
Beitrag von: Feinfinger am 29 Dezember 2020, 07:41:40
Hallo zusammen,

Ich habe ein Bespiel aus dem Wiki im RAW Editor importiert, bekomme jetzt aber diesen Syntax Error.

define n_batt_chk notify .*:[Bb]attery:|.*:[Bb]atteryS { if($EVENT !~ m/ok/) { \                                                                                                                                       
  {
  my $alias = AttrVal($NAME,"alias",$NAME);;
  fhem ("set pushover msg FHEM Batteriewarnung, $alias: $EVENT:\nBatterien sollten demnächst gewechselt werden!");; \                                                                           
   Log 3, "$NAME: Batteriewarnung $EVENT";; \                                                                                                                                                             
   } \
  } \
}


Fehlermeldung:

syntax error at (eval 1003118) line 1, at EOF
Missing right curly or square bracket at (eval 1003118) line 1, at end of line
syntax error at (eval 1003118) line 1, at EOF


Ich kann aber keine Fehler beim Klammer erkennen.

Vielleicht überseh ich ja was.


Gruß Dirk

Titel: Antw:Syntax Error im notify
Beitrag von: xenos1984 am 29 Dezember 2020, 08:06:02
In der zweiten und dritten Zeile fehlt ein \ am Zeilenende. Ohne das werden die Zeilen einzeln interpretiert, und wenn man nur die ersten beiden Zeilen für sich liest, gibt es tatsächlich mehr öffnende als schließende Klammern.
Titel: Antw:Syntax Error im notify
Beitrag von: Feinfinger am 29 Dezember 2020, 08:12:55
Danke für die Antwort, aber leider besteht das Problem immer noch.

define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) { \                                                                                                                                       
  { \
  my $alias = AttrVal($NAME,"alias",$NAME);; \
  fhem ("set pushover msg FHEM Batteriewarnung, $alias: $EVENT:\nBatterien sollten demnächst gewechselt werden!");; \                                                                           
   Log 3, "$NAME: Batteriewarnung $EVENT";; \                                                                                                                                                             
   } \
  } \
}


syntax error at (eval 1006886) line 1, at EOF
Missing right curly or square bracket at (eval 1006886) line 1, at end of line
syntax error at (eval 1006886) line 1, at EOF
Titel: Antw:Syntax Error im notify
Beitrag von: Beta-User am 29 Dezember 2020, 10:05:09
Hast du mal die Fundstelle im Wiki?

Das "Problem" ist, dass hier nicht der Zeilenumbruch maskiert wird, sondern ein Leerzeichen nach dem "\".

Dann sieht noch die Klammersetzung unnötig kompliziert aus, und statt Log in der "built-in"-Variante sollte man M.E. heutzutage Log3 (in der "normalen" Perl-Syntax) verwenden...

Kannst du mal testen, ob das hier zum gewünschten Ergebnis führt:
defmod n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {\
  my $alias = AttrVal($NAME,"alias",$NAME);; \
  fhem ("set pushover msg FHEM Batteriewarnung, $alias: $EVENT: \nBatterien sollten demnächst gewechselt werden!");; \
  Log3($NAME, 3, "Batteriewarnung $EVENT");; \
  } \
}
Titel: Antw:Syntax Error im notify
Beitrag von: Feinfinger am 29 Dezember 2020, 10:30:22
Zitat von: Beta-User am 29 Dezember 2020, 10:05:09
Kannst du mal testen, ob das hier zum gewünschten Ergebnis führt:
defmod n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {\
  my $alias = AttrVal($NAME,"alias",$NAME);; \
  fhem ("set pushover msg FHEM Batteriewarnung, $alias: $EVENT: \nBatterien sollten demnächst gewechselt werden!");; \
  Log3($NAME, 3, "Batteriewarnung $EVENT");; \
  } \
}


Funktioniert, Danke!

Stelle im Wiki ist hier

https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung (https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung)

wobei ch das mit dem Alias ergänzt habe, was aber nicht ursächlich ist.
Titel: Antw:Syntax Error im notify
Beitrag von: Feinfinger am 29 Dezember 2020, 10:33:03
Zitat von: Beta-User am 29 Dezember 2020, 10:05:09
Das "Problem" ist, dass hier nicht der Zeilenumbruch maskiert wird, sondern ein Leerzeichen nach dem "\".

Also der klassische copy&paste Fehler.
Titel: Antw:Syntax Error im notify
Beitrag von: Beta-User am 29 Dezember 2020, 11:00:29
Zitat von: Feinfinger am 29 Dezember 2020, 10:33:03
Also der klassische copy&paste Fehler.
Jein. Im Wiki war es an zwei von 3 Stellen ohne die Leerzeichen...

Hab's jetzt dort korrigiert und diese eine Variante auf Log3 umgebaut. (Insgesamt ist das aber ein Artikel, der mich beim drüberlesen irgendwie irritiert. Kommt mir so vor, als wäre da noch manches andere eigentlich verbesserungswürdig...)