Fehlermeldungen von 10_EnOcean.pm auf STDERR

Begonnen von g.carls, 17 April 2014, 09:25:06

Vorheriges Thema - Nächstes Thema

g.carls

Hallo,

nach Start von FHEM via Kommandozeile ist mir aufgefallen, dass das Encocean Modul sehr viele Fehlermeldungen, wahrscheinlich beim Eintreffen bestimmter Nachrichten) nach STDERR ausgibt:

Use of uninitialized value $odata in pattern match (m//) at ./FHEM/10_EnOcean.pm line 2123.
Use of uninitialized value $1 in hex at ./FHEM/10_EnOcean.pm line 2124.
Use of uninitialized value $3 in hex at ./FHEM/10_EnOcean.pm line 2124.
Use of uninitialized value $4 in hex at ./FHEM/10_EnOcean.pm line 2124.

Es sind diese zwei Zeilen, die den Fehler verursachen:
$odata =~ m/^(..)(........)(..)(..)$/;
  my ($subTelNum, $destinationID, $RSSI, $securityLevel) = (hex($1), $2, hex($3), hex($4)); 

da die Telegrammdaten vom TCM-Modul kommen , habe ich den Loglevel einmal erhöht:
Im Log findet man keinerlei Fehlermeldungen. Die einzige Vermutung die ich habe ist, dass das rot markierte Telegramm solche Fehlermeldungen verursacht,
da aufgrund der abweichenden Länge die Regular Expression nicht mehr zutrifft.
Offensichtlich tritt der Fehler bei Telegrammen mit ORG=07 bzw A5 auf (07 wird auf A5 gemappt).
Bitte beachten: Ich verwende nicht die Funkschnittstelle, sondern das FGW14 Gateway von Eltako.
Das heisst, die Telegramme treffen als Receive Message Telegram (RMT) und nicht als Receive Radio Telegram ein.


2014.04.17 09:01:08 5: TCM Parse 8B05700000000000000730
2014.04.17 09:01:08 5: TCM120 dispatch EnOcean:1:F6:70:00000007:30
2014.04.17 09:01:08 5: TCM TCM120 RAW: A55A8B05000000000000000820B8
2014.04.17 09:01:08 5: TCM Parse 8B05000000000000000820
2014.04.17 09:01:08 5: TCM120 dispatch EnOcean:1:F6:00:00000008:20
2014.04.17 09:01:08 5: TCM TCM120 RAW: A55A8B070000000C0000000900A7
2014.04.17 09:01:08 5: TCM Parse 8B070000000C0000000900
2014.04.17 09:01:08 5: TCM120 dispatch EnOcean:1:A5:0000000C:00000009:00

2014.04.17 09:01:08 5: TCM TCM120 RAW: A55A8B05500000000000000A301A
2014.04.17 09:01:08 5: TCM Parse 8B05500000000000000A30
2014.04.17 09:01:08 5: TCM120 dispatch EnOcean:1:F6:50:0000000A:30
2014.04.17 09:01:08 5: TCM TCM120 RAW: A55A8B05500000000000000B301B
2014.04.17 09:01:08 5: TCM Parse 8B05500000000000000B30


Falls ich noch weitere Logs generieren soll, bitte einfach melden.

Viele Grüße,

Guido


klaus.schauer

Der Fehler tritt wahrscheinlich nur bei ESP2-Telegrammen oder nur in der speziellen Konfiguration für das FGW14 auf. Bei ESP2 gibt des Optional Data nicht. Es wird wahrscheinlich reichen, die vier Werte beim Empfang mit ESP2 passend vorzubelegen. Ich sehe mir das an.

Was wird denn bei den einzelnen Devices für die Werte

- RSSI
- SecurityLevel
- DestinationID
- SubTelNum

angezeigt. Richtig wäre z. B.


Internals:
   DEF        <SenderID>
   IODev      TCM_0
   LASTInputDev TCM_0
   MSGCNT     10
   NAME       Bewegungsmelder_Flur
   NOTIFYDEV  global
   NR         448
   STATE      off
   TCM_0_DestinationID FFFFFFFF
   TCM_0_MSGCNT 10
   TCM_0_PacketType 1
   TCM_0_RSSI -52
   TCM_0_ReceivingQuality excellent
   TCM_0_RepeatingCounter 0
   TCM_0_SecurityLevel 0
   TCM_0_SubTelNum 1
   TCM_0_TIME 2014-04-17 07:55:20
   TYPE       EnOcean
   Readings:
     2014-04-17 07:55:21   current         8.5
     2014-04-17 07:55:21   motion          off
     2014-04-17 07:55:21   sensorType      wall
     2014-04-17 07:55:21   state           off
     2014-03-14 14:18:59   teach-in        EEP A5-07-01 Manufacturer: EnOcean GmbH
     2014-04-17 07:55:21   voltage         3.2
Attributes:
   IODev      TCM_0
   icon       message_presence
   manufID    00B
   room       Sensoren
   subType    occupSensor.01

g.carls

#2
Bei mir sieht es wie folgt aus:
Bestimmte Werte sind also nicht belegt.
Es handelt sich hier um ein Eltako FSR14-4x.

Internals:
   CHANGED   
   DEF        0000000C
   IODev      TCM120
   LASTInputDev TCM120
   MSGCNT     2925
   NAME       EnO_switch_0000000C
   NOTIFYDEV  global
   NR         690
   STATE      off
   TCM120_MSGCNT 2925
   TCM120_TIME 2014-04-17 11:59:41
   TYPE       EnOcean
   Readings:
     2014-04-17 10:20:11   buttons         pressed
     2014-04-17 10:20:11   channelB        BI
     2014-04-17 11:59:41   state           off
Attributes:
   IODev      TCM120
   event-on-change-reading state
   gwCmd      switching
   room       EnOcean
   subDef     0010000C
   subType    gateway

Viele Grüße,

Guido

g.carls

#3
Hallo,

ich hab einmal in der ESP3 Spec nachgesehen. Dort gibt es eine Gegenüberstellung von ESP2 und ESP3 (siehe beigefügtes Screenshot).
Demnach unterstützt ESP2 folgendes nicht:
- Subtelegram count
- Receive signal strength (RSSI)
- Optional Data

Wobei Optional Data bei ESP3 folgende Attribute transportiert:
- SubTelNum
- Destination ID
- dBm
- SecurityLevel

D.h., auch diese Daten fehlen bei ESP2.

Die entsprechenden Attribute einfach auf einen Default Wert zu setzen halte ich für eine gute einfache Idee.

Viele Grüße,

Guido

klaus.schauer

Fehler sollte morgen weg sein. Bitte testen, ich habe keine Transceiver mit ESP2.

g.carls

Vielen Dank für das schnelle Update!
Das Enocean Modul erzeugt nun keine Fehlermeldungen mehr auf STDERR und die Enocean Aktoren und Sensoren funktionieren alle einwandfrei
über die ESP2 Schnittstelle des FGW14.
Ich erhalte nun allerdings von fhem.pl Fehlermeldungen, wobei ich nicht weiss ob diese im Zusammenhang mit dem Enocean-Modul stehen, da fhem.pl ja auch aktualisiert wurde. Die Fehler werden von readingsBulkUpdate() in fhem.pl gemeldet:

^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3631.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3632.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3645.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3631.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3632.

VG,

Guido

rudolfkoenig

@g.carls: die erwaehnte Fehlermeldung hat vermutlich nichts mit EnOcean zu tun.

Die event-on-change-reading usw. Attribute muessen Regexps enthalten, das ist nicht das, was man im Shell/Cmd verwendet (die nennt man Glob). Hier muss vermutlich * durch .* ersetzt werden.

g.carls

Danke Rudi!
Ich hatte bei meiner Eltako WS die . in der event_on_change Konfiguration anzugeben.
VG,
Guido