Fhem stirbt in 10_IT.pm bei Syntaxfehler

Begonnen von heppel, 24 Juni 2015, 17:49:43

Vorheriges Thema - Nächstes Thema

heppel

Moin,

bei mir stirbt der Fhem-Prozess bei bestimmten Syntaxfehlern, z.B. wenn ich folgendes Code-Schnipsel:


set SZ1 off)


über die Kommandozeile oder über ein "at" ausführe. Die Fehlermeldung ist:


Unmatched ) in regex; marked by <-- HERE in m/^off) <-- HERE ($|:)/ at ./FHEM/10_IT.pm line 193.


Ok, die schliessende Klammer sollte da nicht sein. Aber darf der Prozess deshalb sterben ?

Ich habe das Beispiel schon stark vereinfacht. Im Original war das ein "at" mit "IF" und einem Semikolon, das ein Komma hätte sein sollen. Und die Fehlermeldung schaffte es unter den Umständen auch nicht bis in das Log.

Hier noch die Definition des Devices:


define SZ1 IT 11110011111111111111111110 0 1111
attr SZ1 IODev CUL_R
attr SZ1 ITrepetition 9
attr SZ1 model itswitch
attr SZ1 protocol V3
attr SZ1 room Schlafzimmer


Die Platform ist Bananian mit Perl v5.14.2. Update von Fhem ist aktuell (24.6.2015).

// Heppel

heppel

Hmmm,

keine Reaktionen.

Bin ich im falschen Board ? Falls ja, wo sollte ich hingehen ?

Ich habe jetzt mal in meinem 10_IT.pm die fragliche Zeile von


return SetExtensions($hash, $list, $name, @a) if( !grep( $_ =~ /^$a[0]($|:)/, split( ' ', $list ) ) );


nach


return SetExtensions($hash, $list, $name, @a) if( !grep( $_ =~ /^\Q$a[0]\E($|:)/, split( ' ', $list ) ) );


geändert. Das führt bei mir zu dem gewünschten Verhalten. Aber erstens könnte das noch Nebenwirkungen haben und zweitens ist das nach dem nächsten Update von 10_IT.pm wieder weg.

Viele Grüße,
  Heppel

bjoernh

#2
Zitat von: heppel am 06 Juli 2015, 19:00:13
Hmmm,

keine Reaktionen.

Bin ich im falschen Board ? Falls ja, wo sollte ich hingehen ?

Ich habe jetzt mal in meinem 10_IT.pm die fragliche Zeile von


return SetExtensions($hash, $list, $name, @a) if( !grep( $_ =~ /^$a[0]($|:)/, split( ' ', $list ) ) );


nach


return SetExtensions($hash, $list, $name, @a) if( !grep( $_ =~ /^\Q$a[0]\E($|:)/, split( ' ', $list ) ) );


geändert. Das führt bei mir zu dem gewünschten Verhalten. Aber erstens könnte das noch Nebenwirkungen haben und zweitens ist das nach dem nächsten Update von 10_IT.pm wieder weg.

Viele Grüße,
  Heppel
Du bist hier prinzipiell schon richtig.
Ich hatte aber noch keine Zeit mich darum zu kümmmer (ist ja auch etwas Exotisch das Problem ;-) )

Das mit dem \Q könnte schon klappen. Bei dir läuft es so problemlos? Wenn ja, dann würde ich es so in das Modul übernehmen.

So, ich habe es soeben Probiert, sobald ich das \Q einfüge geht bei mir kein IT mehr zu schalten. Das kann also nicht die Lösung sein.

Noch eine Anmerkung, das Problem ist denke ich allgemeiner Natur, andere Module werden wohl die Selben Probleme bekommen.


heppel

Zitat von: bjoernh am 07 Juli 2015, 20:49:01
Du bist hier prinzipiell schon richtig.
Ich hatte aber noch keine Zeit mich darum zu kümmmer (ist ja auch etwas Exotisch das Problem ;-) )

Das mit dem \Q könnte schon klappen. Bei dir läuft es so problemlos? Wenn ja, dann würde ich es so in das Modul übernehmen.

So, ich habe es soeben Probiert, sobald ich das \Q einfüge geht bei mir kein IT mehr zu schalten. Das kann also nicht die Lösung sein.

Noch eine Anmerkung, das Problem ist denke ich allgemeiner Natur, andere Module werden wohl die Selben Probleme bekommen.

Ja, das läuft bei mir. Hast Du das \E auch eingefügt ?

Ich habe das gerade mit einem FBAHA/FBDECT Schalter probiert. Da kommt eine korrekte Fehlermeldung. Ebenso bei einem Squeezebox-Player. Das scheint also kein universelles Problem zu sein. Ich kenne mich in der FHEM-API nicht aus und kann deshalb nicht beurteilen, ob das schon früher abgefangen werden müsste.

Vielen Dank für die super Arbeit an dem Modul und an der CUL-Firmware.

// Heppel

bjoernh

Zitat von: heppel am 07 Juli 2015, 21:52:00
Ja, das läuft bei mir. Hast Du das \E auch eingefügt ?

Ich habe das gerade mit einem FBAHA/FBDECT Schalter probiert. Da kommt eine korrekte Fehlermeldung. Ebenso bei einem Squeezebox-Player. Das scheint also kein universelles Problem zu sein. Ich kenne mich in der FHEM-API nicht aus und kann deshalb nicht beurteilen, ob das schon früher abgefangen werden müsste.

Vielen Dank für die super Arbeit an dem Modul und an der CUL-Firmware.

// Heppel

Das \E hatte ich vergessen, nun geht es. Ich werde es morgen dann mal einchecken.

heppel

Super, seit dem heutigen Update funktioniert es auch mit dem offiziellen Modul.

Danke,
  Heppel