HMCCU / HMCCUDEV / Homegear --> Cannot detect IO device / Use of uninitialized

Begonnen von fhemputty, 06 März 2017, 22:51:12

Vorheriges Thema - Nächstes Thema

fhemputty

Hallo,
ich versuche fhem 5.8 zusammen mit Homegear 0.6.14-874 zu nutzen.
Homegear "simuliert" eine CCU2. In fhem läßt sich per HMCCU eine Verbindung zu Homegear herstellen; per HMCCUDEV die Device Verbindung zum HMCCU.

Nur leider hält dieses Konstrukt keinen Restart von Fhem aus, da HMCCU sich 12 Sekunden Zeit zur Initialisierung läßt, während der HMCCUDEV entnervt "Cannot detect IO device" murmelt um dann aufzugeben. Das Ganze flankiert von der ein oder anderen "Use of uninitialized value" Meldung.

Deshalb die Frage: was tun ?   Ist das ein beabsichtiges Verhalten von HMCCU / HMCCUDEV ?

Fhem config:
define Homegear HMCCU 192.168.100.80
attr Homegear ccudef-readingfilter ^(LOW_?BAT|UNREACH)$
attr Homegear ccudef-readingformat datapoint
attr Homegear ccudef-readingname ^(.+\.)?AES_KEY$:sign;;^(.+\.)?LOW_?BAT$:battery;;^(.+\.)?BATTERY_STATE$:batteryLevel;;^(.+\.)?UNREACH$:Activity;;^(.+\.)?TEMPERATURE$:+temperature;;^(.+\.)?SET_TEMPERATURE$:+desired-temp;;^(.+\.)?HUMIDITY$:+humidity;;^(.+\.)?LEVEL$:+pct;;^(.+\.)?CONTROL_MODE$:+controlMode
attr Homegear ccudef-substitute AES_KEY!(0|false):off,(1|true):on;;LOWBAT,LOW_BAT!(0|false):ok,(1|true):low;;UNREACH!(0|false):alive,(1|true):dead;;MOTION!(0|false):noMotion,(1|true):motion;;DIRECTION!0:stop,1:up,2:down,3:undefined;;WORKING!0:false,1:true;;INHIBIT!(0|false):unlocked,(1|true):locked
attr Homegear ccureadings 1
attr Homegear icon 1
attr Homegear room Homegear,3Raum
attr Homegear rpcinterfaces Homegear
attr Homegear rpcinterval 10
attr Homegear rpcport 2003
attr Homegear rpcqueue /tmp/ccuqueue
attr Homegear rpcserver on
attr Homegear stateFormat rpcstate/state
attr Homegear substitute false:closed,true:open
attr Homegear verbose 5

define HM_Termostat_Bad_1 HMCCUDEV Homegear.LEQ0400034 1
attr HM_Termostat_Bad_1 IODev Homegear
attr HM_Termostat_Bad_1 statechannel 1


Fhem Log:
2017.03.06 22:29:53 1: HMCCU: HMScript failed. 500 Can't connect to 192.168.100.80:8181
2017.03.06 22:29:53 1: define HM_Termostat_Bad_1 HMCCUDEV Homegear.LEQ0400034 1: Cannot detect IO device
2017.03.06 22:29:53 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 2764, <$fh> line 108.
2017.03.06 22:29:53 1: configfile: Cannot detect IO device

2017.03.06 22:29:53 0: HMCCU: Start of RPC server after FHEM initialization in 12 seconds
2017.03.06 22:29:53 2: Messages collected while initializing FHEM: configfile: Cannot detect IO device
2017.03.06 22:29:53 0: Featurelevel: 5.8
2017.03.06 22:29:53 0: Server started with 23 defined entities (fhem.pl:13622/2017-03-05 perl:5.022003 os:linux user:fhem pid:3163)
2017.03.06 22:30:05 2: HMCCU: Create child process with timeouts 0.01 and 0.25
2017.03.06 22:30:05 0: HMCCU: Child process for server CB2003 started with PID 3176
2017.03.06 22:30:05 0: CCURPC: CB2003 Creating file queue /tmp/ccuqueue_2003_1
2017.03.06 22:30:05 0: CCURPC: Initializing RPC server CB2003
2017.03.06 22:30:05 0: RPC server(s) starting
2017.03.06 22:30:05 0: CCURPC: Callback server created listening on port 7413
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for events
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for new devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for deleted devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for modified devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for replaced devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for readded devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for list devices
2017.03.06 22:30:05 1: CCURPC: CB2003 Adding callback for event query
2017.03.06 22:30:05 0: CCURPC: CB2003 Entering server loop
2017.03.06 22:30:15 0: HMCCU: Received SL event. RPC server CB2003 enters server loop
2017.03.06 22:30:22 1: HMCCU: Registering callback http://192.168.100.80:7413/fh2003 with ID CB2003 at http://192.168.100.80:2003/
2017.03.06 22:30:22 1: HMCCU: RPC callback with URL http://192.168.100.80:7413/fh2003 initialized
2017.03.06 22:30:23 1: CCURPC: CB2003 ListDevices. Sending init to HMCCU
2017.03.06 22:30:23 2: CCURPC: CB2003 NewDevice received 32 device specifications
2017.03.06 22:30:32 0: HMCCU: Received IN event. RPC server CB2003 initialized.
2017.03.06 22:30:32 2: HMCCU: Updated devices. Success=0 Failed=0
2017.03.06 22:30:32 1: HMCCU: All RPC servers running
2017.03.06 22:30:32 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/88_HMCCU.pm line 1995.
2017.03.06 22:30:32 1: PERL WARNING: Use of uninitialized value $cc in numeric lt (<) at ./FHEM/88_HMCCU.pm line 1999.


In freudiger Erwartung grüßt
fhemputty

zap

Bei der Definition des IO Device versucht HMCCU sich die Liste der Geräte von CCU bzw Homegear zu holen. Das geht schief bzw läuft in einen Timeout. Deshalb dauert auch die Initialisierung so lange.

Ich vermute, dass Homegear hier nicht vollständig eine CCU abbildet und z.B. kein HomeMatic Script oder die tclrega Schnittstelle unterstützt.

Wenn dann HMCCUDEV ein Device definieren möchte, sucht es nach einem IO Device, das dieses Gerät kennt. Da aber HMCCU sich keine Geräte holen könnte, gibt es die Fehlermeldung mit dem IO Device. Diese könnte aber tatsächlich etwas sprechender sein.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

fhemputty

Hallo zap,
ich teile deine Einschätzung dass Homegear keine vollwertige CCU2 abbildet. Wobei beispielsweise das Homematic Tool "Homematic Konfigurator" schmerzfrei das Homegear als "entfernter BidCos Service" akzepiert.

ABER: definiere ich die HMCCUDEV nach FHEM & HMCCU Start "per Hand" kann ich ebenfalls ohne Probleme auf die Homematic Device zugreifen. HMCCU wird auch sauber per RFC über Statiänderungen informiert. Klicke ich auf das Device "HCCU" sind dort alle Devices verzeichnet die (ich zumindest) definiert habe.

Wäre es möglich da einen "Homegear != CCU2" Workaround zu bauen, der die Script Ausführung (dürfte "get devlist" sein) unterbindet ?
Zumal das relativ elegant am Attribut "rfcinterface = Homegear" abgefragt werden könnte ?
[ich kann mal im Homegear versuchen herauszubekommen worin der Unterschied von HMCCU und dem "Homematic Konfigurator" liegt.

Was meinst du ?

Viele Grüße

zap

Es ist mir ein Rätsel, wie Du mit HMCCUDEV ein Device definieren kannst, wenn sich HMCCU keine Devices holen kann.

Hast Du auf 192.168.100.80 eine Firewall aktiv, die Port 8181 blockiert?
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

fhemputty

Servus.
Die Gerätschaften sind alle im gleichen lokalen Netz.
Ich bin mir nicht 100% sicher, aber als ich "set defaults" für das HMCCU abgesetzt hatte war´s ´rum mit schönen Datapoints im HMCCUDEV.
Aber funktioniert.
Welche Daten kann / soll ich dir zur Verfügung stellen ?

zap

Die Ausgabe von "list IODevice" wäre hilfreich (IODevice natürlich ersetzt durch den Namen deines IODevice)
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

fhemputty

Variante mit nachdefiniertem HMCCUDEV.


list Homegear


Internals:
   CCUNum     1
   ChnCount
   Clients    :HMCCUDEV:HMCCUCHN:
   DEF        192.168.100.80
   DelDevices 0
   DevCount   -1
   NAME       Homegear
   NR         52
   NTFY_ORDER 50-Homegear
   NewDevices 32
   RPCPID     8616
   RPCPRC     internal
   RPCState   running
   STATE      running/OK
   TYPE       HMCCU
   ccutype    CCU2
   host       192.168.100.80
   version    3.9.006
   Readings:
     2017-03-07 20:45:56   rpcstate        running
     2017-03-07 20:45:56   state           OK
   Hmccu:
     evtime     1488916069
     evtimeout  0
     localaddr  192.168.100.80
     rpccount   1
     rpcinit    1
     rpcports   2003
     updatetime 0
     Adr:
       :
         valid      1
     Agg:
     Dev:
       Leq0400034:
         chntype    HM-CC-RT-DN
         valid      1
       Leq0400034:0:
         chntype    MAINTENANCE
         valid      1
       Leq0400034:1:
         chntype    WEATHER_RECEIVER
         valid      1
       Leq0400034:2:
         chntype    CLIMATECONTROL_RECEIVER
         valid      1
       Leq0400034:3:
         chntype    WINDOW_SWITCH_RECEIVER
         valid      1
       Leq0400034:4:
         chntype    CLIMATECONTROL_RT_TRANSCEIVER
         valid      1
       Leq0400034:5:
         chntype    CLIMATECONTROL_RT_RECEIVER
         valid      1
       Leq0400034:6:
         chntype    REMOTECONTROL_RECEIVER
         valid      1
       Leq0777313:
         chntype    HM-CC-RT-DN
         valid      1
       Leq0777313:0:
         chntype    MAINTENANCE
         valid      1
       Leq0777313:1:
         chntype    WEATHER_RECEIVER
         valid      1
       Leq0777313:2:
         chntype    CLIMATECONTROL_RECEIVER
         valid      1
       Leq0777313:3:
         chntype    WINDOW_SWITCH_RECEIVER
         valid      1
       Leq0777313:4:
         chntype    CLIMATECONTROL_RT_TRANSCEIVER
         valid      1
       Leq0777313:5:
         chntype    CLIMATECONTROL_RT_RECEIVER
         valid      1
       Leq0777313:6:
         chntype    REMOTECONTROL_RECEIVER
         valid      1
       Leq0777386:
         chntype    HM-CC-RT-DN
         valid      1
       Leq0777386:0:
         chntype    MAINTENANCE
         valid      1
       Leq0777386:1:
         chntype    WEATHER_RECEIVER
         valid      1
       Leq0777386:2:
         chntype    CLIMATECONTROL_RECEIVER
         valid      1
       Leq0777386:3:
         chntype    WINDOW_SWITCH_RECEIVER
         valid      1
       Leq0777386:4:
         chntype    CLIMATECONTROL_RT_TRANSCEIVER
         valid      1
       Leq0777386:5:
         chntype    CLIMATECONTROL_RT_RECEIVER
         valid      1
       Leq0777386:6:
         chntype    REMOTECONTROL_RECEIVER
         valid      1
       Leq0778063:
         chntype    HM-CC-RT-DN
         valid      1
       Leq0778063:0:
         chntype    MAINTENANCE
         valid      1
       Leq0778063:1:
         chntype    WEATHER_RECEIVER
         valid      1
       Leq0778063:2:
         chntype    CLIMATECONTROL_RECEIVER
         valid      1
       Leq0778063:3:
         chntype    WINDOW_SWITCH_RECEIVER
         valid      1
       Leq0778063:4:
         chntype    CLIMATECONTROL_RT_TRANSCEIVER
         valid      1
       Leq0778063:5:
         chntype    CLIMATECONTROL_RT_RECEIVER
         valid      1
       Leq0778063:6:
         chntype    REMOTECONTROL_RECEIVER
         valid      1
     Ev:
       DD         0
       EV         27
       EX         0
       IN         1
       ND         32
       RA         0
       RD         0
       SL         1
       ST         0
       UD         0
       total      61
     Rpc:
       Cb2003:
         cbport     7413
         cburl      http://192.168.100.80:7413/fh2003
         clurl      http://192.168.100.80:2003/
         loop       2
         pid        8616
         port       2003
         queue      /tmp/ccuqueue_2003_1
         state      running
Attributes:
   ccureadings 1
   icon       1
   room       Homegear,3Raum
   rpcinterfaces Homegear
   rpcinterval 10
   rpcport    2003
   rpcqueue   /tmp/ccuqueue
   rpcserver  on
   stateFormat rpcstate/state
   substitute false:closed,true:open
   verbose    5