fhem.pl/Dispatch case insensitive pattern matching führt zu Problemen

Begonnen von kaihs, 24 Juni 2014, 20:59:10

Vorheriges Thema - Nächstes Thema

kaihs

Hallo,

in

# $Id: fhem.pl 6080 2014-06-07 16:12:09Z rudolfkoenig $


findet sich in Dispatch() die Zeile

   next if($dmsg !~ m/$modules{$m}{Match}/i);


d.h. case insensitives pattern matching.
Das führt zu Problemen wenn Intertechno Empfang in der culfw aktiviert wird.
Die culfw sendet nämlich i für einen erkannten Intertechno Code.

Für IR-Empfang wird I gesendet.

Dadurch, dass großes und kleines i nicht unterschieden werden, werden beide Module (CUL_IR und IT) aufgerufen, CUL_IR kann mit dem Code aber verständlicherweise nichts anfangen.

Gibt es einen Grund dafür, dass Groß- und Kleinschreibung nicht unterschieden werden?

Bei einem ersten Test mit

   next if($dmsg !~ m/$modules{$m}{Match}/);


habe ich zumindest keine Probleme feststellen können.

Gruß,

Kai


Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

rudolfkoenig

Der Grund ist sehr alt, und eigentlich nur eine Bequemlichkeit: das in $hash->{Match} enthaltene String muss dem gelieferten String entsprechen, und der Hex-Code wird mal klein mal gross geliefert. Das zu beheben waere zwar "nur" Fleissarbeit, es zu testen aber nicht trivial. Waere es nicht moeglich die beiden Codes an der Laenge oder anderen Parameter auseinanderzuhalten? Und wieso faellt das erst jetzt auf?

kaihs

Das ist wohl noch nicht aufgefallen weil kaum jemand IT Empfang in der culfw aktiviert hat und 10_IT.pm Empfang noch gar nicht offiziell unterstützt.
Ich habe nur die diesbezüglichen Änderungen von mehf in die aktuelle 10_IT.pm eingebaut und teste jetzt den IT-Empfang.

Die beiden Matches sehen so aus:
CUL_IR

  $hash->{Match}     = "^I............";


IT

  $hash->{Match}     = "^i(......|................)\$";


Aber nach genauerer Analyse scheint das Problem nur aufzutreten wenn das Attribut itrepetition gesetzt ist und dann IT gesendet wird:


2014.06.24 20:22:23 2: CUL_433: unknown message 6
2014.06.24 20:22:26 2: IT IODev device didn't answer is command correctly:   raw => 5
2014.06.24 20:22:26 2: IR-Reception: isf0f0f0fffff0


Da gibt es noch ein Problem mit itrepetition das wohl zuerst gelöst werden sollte.

Ich denke du musst da jetzt nicht weiter tätig werden.

Danke erstmal,

Kai
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation