Problemen und Fragen zu HM IP / HMCCU via CCU2 (via Debmatic) in FHEM

Begonnen von mackshot, 26 August 2020, 08:54:26

Vorheriges Thema - Nächstes Thema

mackshot

Hallo zusammen,

ich nutze FHEM auf einem Raspberry und nutzen viele verschiedene Hausautomationsdienst, u.a. Homematic via CUL und Homematic IP via CCU2 via Debmatic.

Von Anfang an hat die Integration von Homematic IP mir einige Schwierigkeiten und Bauchschmerzen bereitet... wie es begannt:

Ich habe brav https://wiki.fhem.de/wiki/HMCCU und https://wiki.fhem.de/wiki/HMCCU_Best_Practice gelesen und dann ein Device HMCCU angelegt:


define HMCCU HMCCU 192.168.5.20 ccudelay=180
setuuid HMCCU 5e5ace90-f33f-38b5-93af-f00aed624d88422d
attr HMCCU ccuGetVars 120 ^_fhemVar
attr HMCCU ccudef-readingfilter .*
attr HMCCU ccudef-readingname ^(.+\.)?LOW_?BAT$:battery;;;;^(.+\.)?UNREACH$:Activity
attr HMCCU 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 HMCCU ccuflags procrpc
attr HMCCU event-on-change-reading .*
attr HMCCU room Server:HomematicIP
attr HMCCU rpcserver on
attr HMCCU stateFormat rpcstate/state
attr HMCCU userReadings Activity { if (ReadingsVal("$NAME", "rpcstate", "") eq "running" && ReadingsVal("$NAME", "state", "") eq "OK") { return "alive";; } else { return "dead";; }


Nach dem "createn" der Devices kamen leider Statusänderung der Devices, die ich in der CCU2 sehen konnte, nicht in FHEM an.
Nach einigem "rumgespiele" habe ich dann festgestellt, dass sobald ich in der CCU2 ein Programm zu den Devices anlege, welches irgendwelche (selbstausgedachten) Systemvariablen setzt, alle Statusänderungen der Devices in FHEM ankommen.
Das war unschön, aber es funktionierte erstmal und ich konnte mich drängenderen Aufgaben widmen.

Nun habe ich FHEM vor wenigen Tagen aktualisiert und seitdem funktioniert dieser "Trick"(?) nicht mehr. Auch ein Update von Debmatic/CCU2 konnte die  Funktion nicht wiederherstellen.

Konkret heißt das, eine Statusänderung, die ich in der CCU2 sehe, kommt nicht in FHEM an. Weiter kann ich eine Statusänderung jederzeit im Device manuell abrufen via get devstate. Ein get rpcevents scheint mir auch zu bestätigen, dass die Kommunikation grundsätzlich funktioniert:

Event statistics for server CB2001005021005020
Average event delay = 0.0869565217391304
========================================
ET Sent by RPC server   Received by FHEM
----------------------------------------
EV                  0                 23
ND                  0                 52
DD                  0                  0
RD                  0                  0
RA                  0                  0
UD                  0                  0
IN                  0                  0
EX                  0                  0
SL                  0                  1
TO                  0                  0


Hier die Definition eines Geräts (Drehtaster), bei dem die Ereignisse nicht in FHEM ankommen (bei anderen Geräten ist dies leider auch so der Fall):

efine HmIP_SWDO_I_00109BE989DDC0 HMCCUDEV 00109BE989DDC0
setuuid HmIP_SWDO_I_00109BE989DDC0 5e709841-f33f-38b5-3e23-e6085f5a966c332b
attr HmIP_SWDO_I_00109BE989DDC0 IODev HMCCU
attr HmIP_SWDO_I_00109BE989DDC0 alias a_HMIP_Kueche.Fenster_OpenSensor
attr HmIP_SWDO_I_00109BE989DDC0 ccureadingfilter .*
attr HmIP_SWDO_I_00109BE989DDC0 hmstatevals SABOTAGE!1:sabotage
attr HmIP_SWDO_I_00109BE989DDC0 room OG:Küche
attr HmIP_SWDO_I_00109BE989DDC0 statedatapoint 1.STATE
attr HmIP_SWDO_I_00109BE989DDC0 substitute STATE!(0|false):closed,(1|true):open
attr HmIP_SWDO_I_00109BE989DDC0 userReadings opensensor-og { return ReadingsVal("$NAME","state","") },\
batteryState { ReadingsVal("$NAME", "battery", "");; }


Hier also nun die Masterfrage: Was mache ich falsch? Wie bekomme ich FHEM, die HMCCU oder die CCU2 dazu micht über Statusänderungen zu informieren / diese zu verarbeiten?

Gerne reiche ich Loggings nach - weiß im Moment nur noch nicht worauf ich da achten / diese abstellen soll.

Freue mich sehr auf Meinungen / Hilfe.

Danke
Markus

P.S.: Ich habe zurzeit kein Indiz dafür, dass das eine Debmatic/PiCCU spezifische Frage ist, und habe daher hier im FHEM Forum gefragt. Sollte ich damit falsch liegen, ziehe ich selbstverständlich weiter ;)

schwatter

Nutze das auch so wie du. Debmatic nur für HM-IP.
Bei HMCCU fehlt was ich so sehe rpcinterfaces.
In deinem Fall HmIP-RF. Ist das angelegt sollte unter
HMCCURPCPROC, CCU RPC HmIP-RF angelegt werden.

edit:
Weil mitm Handy tippern ist doof   ;D

mackshot

Vielen Dank für den Input.

Ohja, das ist wohl abhanden gekommen. Habe das attr rpcinterfaces entsprechend gesetzt und das Device "CCU RPC HmIP-RF" ist da und läuft. Bekomme jedoch weiterhin keine Daten in FHEM.

Was mir hierbei aufgefallen ist und mir komisch vorkommt. Im HMCCU stehen folgende Internals:
Zitatccuaddr BidCoS-RF
ccuif BidCos-RF

In beiden Fällen würde ich doch eher HmIP-RF erwarten, oder?


zap

Zitat von: mackshot am 26 August 2020, 13:51:45
Vielen Dank für den Input.

Ohja, das ist wohl abhanden gekommen. Habe das attr rpcinterfaces entsprechend gesetzt und das Device "CCU RPC HmIP-RF" ist da und läuft. Bekomme jedoch weiterhin keine Daten in FHEM.

Was mir hierbei aufgefallen ist und mir komisch vorkommt. Im HMCCU stehen folgende Internals:
In beiden Fällen würde ich doch eher HmIP-RF erwarten, oder?

Das ccuaddr Internal sollte OK sein. Man beachte das große 'S' in BidCoS. Das ist tatsächlich die CCU Adresse.

ccuif ist auch ok. Interessanter wäre, was in ccuinterfaces drin steht ??

Kann sein, dass auf der CCU der HMIP-Server abgeschmiert ist. Versuche es erst mal mit einem Neustart von FHEM. Wenn sich an ccuinterfaces nichts ändert, solltest Du die CCU mal neu starten, 5 Minuten warten und dann FHEM ebenfalls neu starten.



2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

mackshot

Vielen Dank Euch beiden.

Es lag wohl in der Tat an rpcinterfaces. Danach startete der RPC Server nicht mehr, bis ich den Server komplett neu gestartet habe. Grund, eine alte Instanz des Servers hatte den Port geblockt und somit konnte der Server nicht neustarten. Ist das eigentlich ein bekanntes Problem für das es eine smarte Lösung gibt?

Zur Verwirrung beigetragen hat dann noch, dass von meinem Testgerät die Batterien zeitgleich zu dem Problem aufgegeben haben, sodass ich plötzlich ein in Teilen funktionierendes Setup hatte. Aber auch das ist erledigt.

Danke nochmals
Markus