Neues Modul HMCCU für Homematic CCU

Begonnen von zap, 19 August 2015, 19:45:30

Vorheriges Thema - Nächstes Thema

Ralli

Hallo zap,

bekommst Du über die XML-RPC-Schnittstelle der CCU eine HMIP-Steckdose geschaltet?

Ich kann mit dem HMRPC-Modul machen was ich will, ich bekomme immer ein -5 (Invalid parameter or value). Der Aufruf ist korrekt, im Log der CCU steht nix besonderes, eine Dubug von einem CCU-internen Schaltvorgang bestätigt mir, dass die Syntax richtig ist.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

zap

In HMCCU wird XML-RPC nur für das Setzen/Lesen von Geräteparametern verwendet. Alles andere läuft über Homematic Script. Damit funktioniert das Ein-/Ausschalten von HM-IP Steckdosen einwandfrei. Der RPC-Server liefert dann den neuen Status zurück.

Ich teste mal heute abend, ob ich per RPC Parameter der Steckdose lesen bzw. verändern kann. Getestet habe ich das bei HM-IP noch nicht (shame on me).

Würde mich aber nicht wundern, wenn EQ-3 hier noch ein gewisses Defizit hätte ;-)
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

zap

Zitat von: Ralli am 22 März 2016, 11:31:54
Hallo zap,

bekommst Du über die XML-RPC-Schnittstelle der CCU eine HMIP-Steckdose geschaltet?

Ich kann mit dem HMRPC-Modul machen was ich will, ich bekomme immer ein -5 (Invalid parameter or value). Der Aufruf ist korrekt, im Log der CCU steht nix besonderes, eine Dubug von einem CCU-internen Schaltvorgang bestätigt mir, dass die Syntax richtig ist.

So, gerade getestet. Das Setzen eines MASTER Parameters der Steckdose Typ HMIP-PS (z.B. LONG_PRESS_TIME=0.5) funktioniert bei mir ohne Code Änderung. Ich gehe davon aus, dass dann auch das Setzen eines VALUES funktioniert. Aber wie gesagt, das kann ich nicht testen, da ich dafür Homematic Script verwende.

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

Ralli

#243
Problem gefunden und gelöst.

Der XML-RPC-Server für HMIP ist etwas zickiger weniger tolerant als für Standard-Homematic.

Will sagen: nach wie vor kann auf der Standard-Homematic-Schnittstelle ein setValue oder ein putParamset für eine Variable, deren Typ Boolean ist, der XML-Request ohne große Verrenkungen gesendet werden. Im Standard-XML-Request ist zwar der Variablen-Typ mit String angegeben, das interessiert die Schnittstelle aber nicht. Auf der HMIP-Schnittstelle sieht das hingegen anders aus. Hier möchte die Schnittstelle im XML-Request tatsächlich auch den Variablen-Typ Boolean definiert haben. Das gleiche gilt auch für die Float und die Integer.

Siehe auch https://forum.fhem.de/index.php/topic,41060.msg429362.html#msg429362 .
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

ToM_ToM

Hallo Zusammen,

ich habe gerade mal wieder mein FHEM sowie die HMCCU files geupdated und nun sehe ich dass die get- und set-Befehle aus dem CCU-device HMCCU entfernt wurden.
Auch der RPCState bleibt im Status "starting".
Hat jemand eine Idee?
Die CCU2 hat noch die Firmware 2.15.5.

Vielen Dank

Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

ToM_ToM

Okay, wenn ich die Portangabe weglase und die Definition nur so lautet, kann ich wieder get und set ausführen.
define CCU2 HMCCU 192.168.178.42
attr CCU2 rpcserver on

Allerdings bekommt der RPC Server immer nach starting den Status stopped.
Ein anschließendes get CCU2 devicelist dump liefert aber dennoch ca. 190 Ergebnisse.

VG, Thomas.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

zap

Solange der RPC Server startet, stoppt oder neu startet, werden die Set und Get Befehle deaktiviert. Da. Wenn in diesem Zustand trotzdem per Eingabefeld ein Befehl abgsetzt wird, wird er ignoriert und STATE des IO Devices geht auf "busy". Das habe ich eingebaut, da CCU Zugriffe während der o.g. Phasen sehr unzuverlässig sind. Allerdings sollte in der aktuellen Version das Starten nur noch 10 Sekunden dauern.

Bitte schau Dir mal das FHEM Logfile sowie das Logfile des RPC Servers an (ccurpc*log) und poste evtl. Fehlermeldungen. Der RPC Server wird offensichtlich nicht richtig gestartet.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

ToM_ToM

Hi Zap,

anbei das FHEM-Log:

2016.03.23 21:06:25 0: HMCCU: RPC server started with pid 1577
2016.03.23 21:06:25 1: HMCCU: Registering callback http://192.168.178.58:7401/fh2001 with ID CB2001
2016.03.23 21:06:25 1: HMCCU: RPC callback with URL http://192.168.178.58:7401/fh2001 initialized
...
2016.03.23 21:06:35 2: HMCCU: Can't open file queue /tmp/ccuqueue_2001
2016.03.23 21:06:35 0: HMCCU: All RPC servers stopped
2016.03.23 21:06:59 0: Server shutdown
2016.03.23 21:06:59 1: HMCCU: Deregistering RPC server http://192.168.178.58:7401/fh2001
2016.03.23 21:06:59 0: HMCCU: RPC server not running


Es gibt aber 2 Dateien /tmp - Verzeichnis - beide Dateien auch mit aktuellem Änderungs-Timestamp.
ccuqueue_2001.dat
ccuqueue_2001.idx


Logfile des RPC-Servers:

23.03.2016 14:18:27 Creating file queue
23.03.2016 15:05:43 Creating file queue
23.03.2016 15:11:10 Creating file queue
23.03.2016 15:21:16 Creating file queue
23.03.2016 15:26:39 Creating file queue
23.03.2016 15:33:51 Creating file queue
23.03.2016 15:55:14 Creating file queue
23.03.2016 20:04:40 Creating file queue
23.03.2016 20:18:39 Creating file queue
23.03.2016 20:20:07 Creating file queue
23.03.2016 21:06:25 Creating file queue


Ich hoffe, du kannst damit mehr anfangen als ich...? ;)

LG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

mAr86sEb05

#248
ich kann dir bestimmt helfen, da ich das gleiche Problem hatte. Schau mal bitte nach welche Rechte die Dateien ccuqueue_2001.dat ccuqueue_2001.idx haben
--w---x--T 1 fhem dialout 0 Mär 22 13:06 /tmp/ccuqueue_2001.dat
--w---x--T 1 fhem dialout 1 Mär 22 13:06 /tmp/ccuqueue_2001.idx

so sahen meine aus

richtig
-rw-r--r-- 1 fhem dialout 0 Mar 22 17:09 /tmp/ccuqueue_2001.dat
-rw-r--r-- 1 fhem dialout 1 Mar 22 17:09 /tmp/ccuqueue_2001.idx


Lösung
chmod 744 /tmp/ccu*


update :

da diese Dateien bei dir auch warscheinlich im tmp ordner liegen und bei einen Geräteneustart gelöscht werden empfiehlt es sich den chmod Befehl in rc.local zu schreiben

cho

Hallo,

ich habe eine CCU2 mit verschiedenen Aktoren und Sensoren im Einsatz.
Jetzt versuche ich gerade, einen Heizkörperthermostat in Fhem mit HMCCU (auf einem Raspberry Pi) einzurichten:

define CCU2 HMCCU homematic.fritz.box
attr CCU2 ccureadings 1
attr CCU2 group Zentrale
attr CCU2 room HomeMatic
attr CCU2 rpcqueue /opt/fhem/tmp/ccuqueue
attr CCU2 rpcserver on

define HKT_Arbeitszimmer HMCCUDEV HM-CC-RT-DN_xxxxxxxxxx 4
attr HKT_Arbeitszimmer IODev CCU2
attr HKT_Arbeitszimmer controldatapoint HM-CC-RT-DN_xxxxxxxxxx.SET_TEMPERATURE
attr HKT_Arbeitszimmer group Arbeitszimmer
attr HKT_Arbeitszimmer room HomeMatic
attr HKT_Arbeitszimmer statechannel 4
attr HKT_Arbeitszimmer statedatapoint ACTUAL_TEMPERATURE
attr HKT_Arbeitszimmer webCmd control
attr HKT_Arbeitszimmer widgetOverride control:slider,10,1,25

Ich wollte damit gerne den aktuellen Temperaturwert angezeigt bekommen und gleichzeitig den Sollwert für die Temperatur einstellen können. (Den Code habe ich in der HMCCU_README.txt grfunden.)

Die Installation hat soweit funktioniert, die Readings werden angezeigt. Aber die Tempetratur läßt sich nicht ändern.

Die Anzeige sieht so aus:

Arbeitszimmer
HKT_Arbeitszimmer 19.600000 control

Zentrale
CCU2 OK

Wenn ich nun control drücke, erscheint folgende Meldung:

HMCCUDEV: CCU busy

Hat vielleicht einer eine Idee, was ich falsch mache?

Viele Grüße
Christian

zap

#250
@cho: Versuch mal das (ich glaube, bei einem Heizkörperthermostat ist der Datenpunkt SET_TEMPERATURE in Kanal 4, ansonsten korrigieren):


attr HKT_Arbeitszimmer controldatapoint 4.SET_TEMPERATURE


Das Attribut controldatapoint erwartet folgende Syntax: Kanalnummer.Datenpunkt (also nicht Kanal.Datenpunkt, Kanal würde ja auf Kanaladresse:Kanalnummer verweisen).

@ALL (insbesondere cho, mAr86sEb05, ToM_ToM):

Mit der Version 3.0 habe ich die Filequeue Funktionen in HMCCU integriert, um die Abhängigkeit von RPCQueue los zu werden. Dabei scheint mir ein Fehler unterlaufen zu sein, der sich nur bemerkbar macht, wenn die Queue-Dateien in /tmp neu angelegt werden. Ich muss das allerdings heute Abend nochmal bei mit nachvollziehen. Ob Ihr betroffen seid, könnt Ihr wie von mAr86sEb05 oben beschrieben prüfen.

Hintergrund: Wenn die Queue-Dateien in /tmp bei Euch nicht "rw" für den User fhem gesetzt haben, wird der RPC-Server nicht korrekt gestartet bzw. HMCCU bekommt nicht mit, dass er gestartet wurde, da es keinen Zugriff auf die Queue hat. In diesem Fall wartet HMCCU endlos auf einen Event "IN|INIT". Da beim Starten des RPC-Servers alle Set/Get Befehle deaktiviert werden, kommt es zu der Meldung "CCU busy".

Sorry dafür. Ich hoffe, ich kann heute Abend einen Fix bereit stellen.

Temporärer Workaround:

  • Prüfen, ob der RPC-Server läuft (ps ax | grep ccurpc). Ggf. mit attr rpcserver off beenden oder mit kill -SIGINT <PID> nachhelfen.
  • Wie von mAr86sEb05 beschrieben die Rechte der Queue-Files anpassen (geht bei Reboot wieder verloren)
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

cho

#251
Hallo zap,
vielen Dank für die schnelle Antwort!

Für das Problem mit der ccuqueue Datei hatte ich schon folgenden Workaround gefunden:
- neues Verzeichnis /opt/fhem/tmp anlegen und hier .dat/.idx manuell mit rw Rechten versehen
- in Fhem mit "attr CCU2 rpcqueue /opt/fhem/tmp/ccuqueue" bekannt geben
- damit gibt es dann auch keine Probleme beim Reboot

ps ax | grep ccurpc findet entsprechend:
4251  ?  S  1:34  /usr/bin/perl ./FHEM/ccurpcd.pl homematic.fritz.box 2001 /opt/fhem/tmp/ccuqueue_2001 ./log/ccurpcd_2001.log

Das ccurpcd_2001.log sieht so aus:
24.03.2016 09:31:17 RPC server terminated
24.03.2016 09:31:49 Creating file queue
24.03.2016 09:31:49 Initializing RPC server
24.03.2016 09:31:49 Callback server created listening on port 7401
24.03.2016 09:31:49 Adding callback for events
24.03.2016 09:31:49 Adding callback for new devices
24.03.2016 09:31:49 Adding callback for deleted devices
24.03.2016 09:31:49 Adding callback for modified devices
24.03.2016 09:31:49 Adding callback for replaced devices
24.03.2016 09:31:49 Adding callback for readded devices
24.03.2016 09:31:49 Entering server loop. Use kill -SIGINT 712 to terminate program

Das fhem-2016-03.log ist sauber ohne Fehlermeldung.
Den controldatapoint habe ich wie angegeben geändert.
Aber ich bekomme nach wie vor die Meldung CCU busy.
Ich warte jetzt erst einmal auf Deinen Fix.

Viele Grüße
Christian

mAr86sEb05

ich habe die Dateien in einer Ramdisk tmpfs da ich eine SSD als Festplatte habe und bei jedem Statuswechsel werden die Dateien neu geschrieben bzw gelesen und aus der Ramdisk fliegen sie nach jeden Neustart des Servers raus

zap

Zitat von: cho am 24 März 2016, 09:37:22

Das fhem-2016-03.log ist sauber ohne Fehlermeldung.
Den controldatapoint habe ich wie angegeben geändert.
Aber ich bekomme nach wie vor die Meldung CCU busy.
Ich warte jetzt erst einmal auf Deinen Fix.

Viele Grüße
Christian

Bitte schau nochmal, ob im fhem log beim Starten des RPC-Servers irgendwelche Meldungen von HMCCU auftauchen. Insbesondere ""HMCCU: Received IN event. RPC server initialized."

Kannst Du nur den Control Befehl nicht ausführen? Was wird im HMCCU Device im Internal RPCState angezeigt ("starting", "running", ...) ?
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

ToM_ToM

Hallo mAr86sEb05, hallo zap,

vielen Dank für eure Antworten.
Ich habe das jetzt mal so gemacht wie aufgeführt.
Der eintrag in der rc.local greift nach dem Neustart nicht da der Inahlt des tmp - Verzeichnis ja beim Neustart gelöscht wird.
Nach dem Starten des RPC Servers werden die Dateien mit falschen CHMOD angelegt. Ich korrigiere die dann sofort und der RPC-Server bleibt nun nicht mehr im Status "Starting" hängen sondern geht nach einigen Sekunden in den Status "Stopped".

@zap: Du schreibst hier was von FHEM-User... Bei mir läuft alles als root, um diverse Probleme zu umgehen. Ich hoffe, das stellt hier kein Problem da...?

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8