Syntax Error im notify

Begonnen von Feinfinger, 29 Dezember 2020, 07:41:40

Vorheriges Thema - Nächstes Thema

Feinfinger

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

Proxmox VM - MAPLE-CUL - SIGNALDINO

xenos1984

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.

Feinfinger

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
Proxmox VM - MAPLE-CUL - SIGNALDINO

Beta-User

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");; \
  } \
}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Feinfinger

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

wobei ch das mit dem Alias ergänzt habe, was aber nicht ursächlich ist.
Proxmox VM - MAPLE-CUL - SIGNALDINO

Feinfinger

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.
Proxmox VM - MAPLE-CUL - SIGNALDINO

Beta-User

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...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors