Neues Modul HMCCU für Homematic CCU

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

Vorheriges Thema - Nächstes Thema

Achiim

#375
Ich kann bestätigen, dass die Installationsanleitung (gemäß HMCCU_README.txt Kapitel 1.2 HMCCU Requirements & Installation) grundsätzlich funktioniert. Mir sind beim installieren aber folgende Dinge aufgefallen, die zu Fragen meinerseits geführt haben und ggf. in der Anleitung ergänzt werden könnten:

Wie soll ich Module wie LWP::UserAgent, Time::HiRes, RPC::XML::Client installieren? Die Antwort ist zwar durch weitere Recherche ermittelbar, ein Hinweis im Readme wäre aber wünschenswert. Ich habe es dann mit "sudo cpan install LWP::UserAgent" usw. gemacht. Da kommt ein ganzer Haufen an Modulen mit und das dauert, bis man alle benötigten Komponenten installiert hat bestimmt eine gefühlte Ewigkeit.... (Bemerkung: RPC::XML::Server hat bei mir auch gleich den RPC::XML::Client installiert. Also scheint es eine gewisse Empfehlung für die Reihenfolge der zu installierenden Komponenten zu geben...)

Eindeutiger fände ich im Readme folgende Beschreibung:

sudo cpan install Time::HiRes
sudo cpan install LWP::UserAgent
sudo cpan install RPC::XML::Server
sudo cpan install RPC::XML::Client
sudo cpan install IO::Socket::INET

am Besten noch in der Reihenfolge, wie es den meisten Sinn macht. Statt des mich in die Irre führenden Textes :"The FHEM module requires the packages LWP::UserAgent, Time::HiRes, RPC::XML::Client  and RPCQueue." Dann braucht man nicht nach einem package "RPCQueue" zu suchen.

Die Sonderstellung des "Moduls RPCQueue": Das ist nicht mit cpan zu installieren, sondern damit ist wohl die Datei "RPCQueue.pm" gemeint. Die ist natürlich nicht mit cpan zu installieren. Es gibt im Readme hierzu folgenden Hinweis, den ich erst spät gesehen habe; "NOTE: RPCQueue.pm is a bug fixed copy of File::Queue and part of the HMCCU installation
package. It's not available via CPAN!".

Leider läuft die Installation bei mir noch nicht, da der rpcserver nicht startet und ich bekomme beim "shutdown restart" von FHEM folgende Meldungen im fhem.log:



2016.04.07 13:24:56 0: Server shutdown
2016.04.07 13:24:57 1: PERL WARNING: Use of uninitialized value $pid in numeric gt (>) at ./FHEM/88_HMCCU.pm line 1431.
2016.04.07 13:24:58 0: HMCCU: RPC server not running



und weiter unten im fhem.log finde ich dann:



2016.04.07 13:28:47 1: HMCCU: 500 Can't connect to meineCCU2-IP-Adresse:8181 (Die Wartezeit für die Verbindung ist abgelaufen)
...
2016.04.07 13:29:28 0: HMCCU: Autostart of RPC server after FHEM initialization in 10 seconds
...
2016.04.07 13:32:17 0: HMCCU: All RPC servers stopped
...



Ein manueller Versuch, den rpcserver mittels "set myCCU2 rpcserver on" zu starten brachte dann folgende Logmeldungen:



2016.04.07 13:37:30 1: HMCCU: myCCU2 Start of RPC server failed
2016.04.07 13:37:42 0: HMCCU: All RPC servers stopped
2016.04.07 13:37:45 1: FHEMWEB SSL/HTTPS error:
2016.04.07 13:39:55 1: Can't connect to CCU port 2001
2016.04.07 13:39:56 1: HMCCU: myCCU2 Start of RPC server failed
2016.04.07 13:40:08 0: HMCCU: All RPC servers stopped



Habe ich noch etwas übersehen? Was kann/muss ich tun?
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

zap

#376
Sorry für die ungenaue Beschreibung bei den notwendigen Modulen. Die Module LWP::Useragent und IO::Socket::Inet werden von vielen FHEM-Modulen benötigt. Bei denen ist die Wahrscheinlichkeit hoch, dass sie schon installiert sind. Viele User bevorzugen auch die Installation der fertigen Debian-Pakete gegenüber CPAN. Aber ich werde die Anleitung nochmal überarbeiten. Vielleicht komme ich auch endlich mal dazu, den ein oder andern Wiki Artikel zu schreiben (so viele Hobbies, so wenig Zeit ;-)

Zu Deinem Problem: Kannst Du bitte mal den define Befehl von dem HMCCU Device posten? Wenn Du hier den Hostname der CCU statt der IP-Adress verwendest, muss dieser auflösbar sein (entweder per DNS oder mittels Eintrag in /etc/hosts). Ich vermute mal, die CCU ist unter dem angegebenen Namen nicht erreichbar.

Kannst Du aber auch mal per ping testen. Wenn also das define so aussieht


define myCCU HMCCU CCUName


muss folgender Befehl funktionieren:


ping CCUName


Das Warning beim Shutdown ist nicht so tragisch. Das kommt daher, dass vorher kein RPC-Server gelaufen ist. Werde ich in der nächsten Version korrigieren.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Achiim

Missverständnis: Mein define erfolgt mit der IP-Adresse, nicht mit dem logischen Namen, der über /etc/hosts aufgelöst werden soll....

define myCCU2 HMCCU 192.168.179.16

Anbei die komplette Definition als list myCCU2:


Internals:
   Clients    :HMCCUDEV:HMCCUCHN:
   DEF        192.168.179.16
   DelDevices 0
   DevCount   -1
   NAME       myCCU2
   NR         1232
   NTFY_ORDER 50-myCCU2
   NewDevices 0
   RPCPID     0
   RPCPRC     none
   RPCState   stopped
   STATE      Error
   TYPE       HMCCU
   host       192.168.179.16
   Readings:
     2016-04-07 13:40:08   rpcstate        stopped
     2016-04-07 13:39:56   state           Error
   Hmccu:
     eventtime  0
     rpccount   0
     updatetime 0
     Rpc:
       Cb2001:
Attributes:
   room       07_Settings
   rpcserver  on



Ping liefert auch vernünftige Werte, siehe beigefügter Screen-Shot.
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

zap

Nutzt Du wireless Komponenten, Wired oder Homematic-IP ? Der Port 2001 ist für wireless.

Vielleicht hilft es, wenn Du das Attribut rpcport auf 2001 setzt (nur ne Vermutung, wäre ein Bug in HMCCU, aber wer weiß ...)

Außerdem habe ich das nie mit der IP-Adresse als Parameter getestet. Du könntest also mal einen Eintrag für 192.168.179.16 in der /etc/hosts machen und dann den festgelegten Namen im define verwenden.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Nic0205

ZitatIch verstehe den Zusammenhang zwischen beiden Logs nicht. Um 20:54 wurde der RPC-Server gestartet, allerdings nicht richtig initialisiert (Meldungen "New Devices" und "ListDevice" fehlen). Um 20:56 wurde er beendet. Hast Du ihn da manuell gestoppt oder hast Du FHEM runtergefahren oder wurde er automatisch beendet?

Zum Fehler beim Starten von FHEM: Kommt daher, dass das Modul HMCCU nicht geladen wurde und ein Gerät mit dem Modul HMCCUDEV angelegt werden soll. Gibt es weiter vorne im Log noch andere Meldungen?

Bitte schicke mir mal die Ausgabe von folgendem Befehl (auszuführen im Verzeichnis, in dem die Datei fhem.cfg liegt):

Code: [Auswählen]
grep HMCCU fhem.cfg

Idealerweise alle Einträge (defines, attr) aus der fhem.cfg, die sich auf Geräte der Module HMCCU, HMCCUDEV, HMCCUCHN beziehen. Bitte in der Reihenfolge, wie sie in der fhem.cfg auftauchen.

So, jetzt habe ich die fhem.cfg als ausgemistet und alles nochmal neu angelegt - funktioniert jetzt soweit. Aber schon wieder ist das nächste  Problem aufgetaucht.

Bei jedem Klick auf "on" oder "off" bekomme ich jetzt die Fehlermeldung HMCCUDEV: CCU busy

Das Log ist zugefüllt von folgendem Eintrag:

2016.04.07 20:10:29 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.07 20:10:34 2: HMCCU: Received no events from CCU since 300 seconds

Habt Ihr eine Idee, woran das liegen könnte?
Grüße
Nic

Achiim

Danke für die schnelle Hilfe... Geholfen hat nun wirklich:

Definition meiner CCU2 in /etc/hosts

danach in fhem Modifikation des define in "define myCCU2 HMCCU myCCU2" und neues straten des rpcserver über "set myCCU2 rpcserver on".... Dann steht im fhem-logfile:



2016.04.07 20:05:31 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/88_HMCCU.pm line 1724.
2016.04.07 20:05:53 0: HMCCU: RPC server started with pid 14898
2016.04.07 20:05:53 1: HMCCU: Registering callback http://192.168.178.21:7401/fh2001 with ID CB2001
2016.04.07 20:05:53 1: HMCCU: RPC callback with URL http://192.168.178.21:7401/fh2001 initialized



Folgendes Ergebnis bei list myCCU2:


Internals:
   Clients    :HMCCUDEV:HMCCUCHN:
   DEF        myCCU2
   DelDevices 0
   DevCount   79
   NAME       myCCU2
   NR         1232
   NTFY_ORDER 50-myCCU2
   NewDevices 0
   RPCPID     14898
   RPCPRC     ./FHEM/ccurpcd.pl
   RPCState   starting
   STATE      OK
   TYPE       HMCCU
   host       myCCU2
   Readings:
     2016-04-07 20:05:53   rpcstate        starting
     2016-04-07 20:05:54   state           OK
.....



Ist normal, dass "rpcstate" bei "starting" verbleibt? Ich hätte nun "started" erwartet....

Scheint jetzt dank deiner Hilfe zu laufen.... Du könntest nun auch den Fall berücksichtigen, dass man das define mit der IP-Adresse macht.... Nur so als Anregung....

3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

zap

#381
Anscheinend habt Ihr ähnliche Probleme: der RPC Server startet nicht. Ist mir ein Rätsel, wieso das bei manchen Usern problemlos läuft und bei anderen nicht. Schaut Euch bitte mal die Datei ccurpcd_2001.log im FHEM Logverzeichnis an. Da sollten am Ende Einträge wie ListDevices, Newdevices stehen. Außerdem sollten in /tmp Dateien ccuqueue_2001.dat und .idx stehen, die permanent aktualisiert werden.

Wächst die .dat Datei oder bleibt die bei 0 Byte und nur der Zeitstempel wird aktualisiert?

@Achiim: hier findest Du eine funktionierende Config eines anderen Users, der bei HMCCU die IP angibt.

https://forum.fhem.de/index.php/topic,40189.msg429972.html#msg429972

bitte mal unbedingt das Attribut rpcport auf 2001 setzen. Ich vermute, da geht beim Setzen des Defaultwertes etwas schief.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Achiim

#382
Hier der Ihnalt meiner ccurpcd_2001.log


07.04.2016 20:06:07 Creating file queue
07.04.2016 20:06:07 Initializing RPC server
07.04.2016 20:06:12 Callback server created listening on port 7401
07.04.2016 20:06:12 Adding callback for events
07.04.2016 20:06:12 Adding callback for new devices
07.04.2016 20:06:12 Adding callback for deleted devices
07.04.2016 20:06:12 Adding callback for modified devices
07.04.2016 20:06:12 Adding callback for replaced devices
07.04.2016 20:06:12 Adding callback for readded devices
07.04.2016 20:06:12 Entering server loop. Use kill -SIGINT 14898 to terminate program
07.04.2016 20:23:34 RPC server terminated
07.04.2016 20:23:34 RPC server received 0 (1) events
07.04.2016 20:27:10 Creating file queue
07.04.2016 20:27:10 Initializing RPC server
07.04.2016 20:27:21 Callback server created listening on port 7401
07.04.2016 20:27:21 Adding callback for events
07.04.2016 20:27:21 Adding callback for new devices
07.04.2016 20:27:21 Adding callback for deleted devices
07.04.2016 20:27:21 Adding callback for modified devices
07.04.2016 20:27:21 Adding callback for replaced devices
07.04.2016 20:27:21 Adding callback for readded devices
07.04.2016 20:27:21 Entering server loop. Use kill -SIGINT 15705 to terminate program
07.04.2016 20:37:40 Creating file queue
07.04.2016 20:37:40 Initializing RPC server
07.04.2016 20:37:49 Callback server created listening on port 7401
07.04.2016 20:37:49 Adding callback for events
07.04.2016 20:37:49 Adding callback for new devices
07.04.2016 20:37:49 Adding callback for deleted devices
07.04.2016 20:37:49 Adding callback for modified devices
07.04.2016 20:37:49 Adding callback for replaced devices
07.04.2016 20:37:49 Adding callback for readded devices
07.04.2016 20:37:49 Entering server loop. Use kill -SIGINT 15790 to terminate program
07.04.2016 20:56:25 RPC server terminated
07.04.2016 20:56:25 RPC server received 86 (87) events



Hinweis:
Ich habe fhem zwischen durch neu gestart mit "shutdown restart" und mit "service fhem stop"  und anschließendem "service fhem start".....

Der rpcserver läuft noch nicht stabil bei mir....

Und hier der Inhalt von ccuqueue_2001.dat:


EV|MEQ0714259:1|LEVEL|1.000000
EV|MEQ0714259:1|WORKING|0
EV|MEQ0714259:1|DIRECTION|0
EV|MEQ0714259:1|ERROR_REDUCED|0
EV|MEQ0714259:1|ERROR_OVERLOAD|0
EV|MEQ0714259:1|ERROR_OVERHEAT|0
EV|MEQ0714259:1|LEVEL_REAL|1.000000
EV|MEQ0714259:2|LEVEL_REAL|1.000000
EV|MEQ0714259:3|LEVEL_REAL|1.000000
EX|SHUTDOWN|15790|CB2001



Die Datei ccuqueue_2001.idx ist 1Byte lang. Und es steht eine "0" drin.
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

zap

Ok, die Events von der CCU kommen, aber der Init nicht. Deshalb wechselt der Status nicht von Starting auf Running. Das ist ein Timing Problem. Abhilfe morgen.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Achiim

#384
Ich habe noch einen Hinweis:

Wenn ich den rpcserver mit "set myCCU2 rpcserver on" starte, erhalte ich folgende fhem-log-Einträge:



2016.04.07 22:34:08 0: HMCCU: RPC server started with pid 16659
2016.04.07 22:34:08 1: HMCCU: Registering callback http://192.168.178.21:7401/fh2001 with ID CB2001
2016.04.07 22:34:08 1: HMCCU: RPC callback with URL http://192.168.178.21:7401/fh2001 initialized
2016.04.07 22:34:19 0: HMCCU: Received EX event. RPC server CB2001 terminated.
2016.04.07 22:34:22 1: HMCCU: Externally launched RPC server(s) detected. Kill process(es) manually with command kill -SIGINT pid for pids 16659 f=1
2016.04.07 22:34:22 0: HMCCU: RPC server(s) with PID(s) 16636 shut down. f=1
2016.04.07 22:34:23 0: HMCCU: All RPC servers stopped



Das sieht für mich so aus, alsob er den soeben gestarteten Prozess nicht als den eigenen erkennt und sich selbt dann wieder beendet...

Hinweis 1:
Das Attribut rpcport habe ich, wie gewünscht, auf 2001 gesetzt. Keine Änderung des Verhaltens.

Hinweis 2:
Ich habe das define meiner HMCCU wieder zurück auf die IP-Adresse umgestellt. Das klappt auch, bis auf die Tatsache, dass der rpcserver im Status "starting" verbleibt.

Hinweis 3:
Im Zustand "starting" fehlen in der FHEM-Web-Oberfläche dann die get und set Kommandos. Blendest Du die aus, solange der rpcserver nicht gestartet ist? Oder was ist das für ein Phänomen? Siehe screen-shot..
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

Nic0205

So, sorry, war gestern schon im Bett  ;D

Das ist meine ccurpcd_2001.log:

05.04.2016 20:50:54 Creating file queue
05.04.2016 20:50:54 Initializing RPC server
05.04.2016 20:50:54 Callback server created listening on port 7401
05.04.2016 20:50:54 Adding callback for events
05.04.2016 20:50:54 Adding callback for new devices
05.04.2016 20:50:54 Adding callback for deleted devices
05.04.2016 20:50:54 Adding callback for modified devices
05.04.2016 20:50:54 Adding callback for replaced devices
05.04.2016 20:50:54 Adding callback for readded devices
05.04.2016 20:50:54 Entering server loop. Use kill -SIGINT 1233 to terminate program
05.04.2016 20:52:07 RPC server terminated
05.04.2016 20:52:07 RPC server received 90 (91) events
05.04.2016 20:52:36 Creating file queue
05.04.2016 20:52:36 Initializing RPC server
05.04.2016 20:52:36 Callback server created listening on port 7401
05.04.2016 20:52:36 Adding callback for events
05.04.2016 20:52:36 Adding callback for new devices
05.04.2016 20:52:36 Adding callback for deleted devices
05.04.2016 20:52:36 Adding callback for modified devices
05.04.2016 20:52:36 Adding callback for replaced devices
05.04.2016 20:52:36 Adding callback for readded devices
05.04.2016 20:52:36 Entering server loop. Use kill -SIGINT 1509 to terminate program
05.04.2016 20:52:52 RPC server terminated
05.04.2016 20:52:52 RPC server received 0 (1) events
05.04.2016 20:54:53 Creating file queue
05.04.2016 20:54:53 Initializing RPC server
05.04.2016 20:54:54 Callback server created listening on port 7401
05.04.2016 20:54:54 Adding callback for events
05.04.2016 20:54:54 Adding callback for new devices
05.04.2016 20:54:54 Adding callback for deleted devices
05.04.2016 20:54:54 Adding callback for modified devices
05.04.2016 20:54:54 Adding callback for replaced devices
05.04.2016 20:54:54 Adding callback for readded devices
05.04.2016 20:54:54 Entering server loop. Use kill -SIGINT 1229 to terminate program
05.04.2016 20:56:41 RPC server terminated
05.04.2016 20:56:41 RPC server received 92 (93) events
05.04.2016 22:24:56 Creating file queue
05.04.2016 22:24:56 Initializing RPC server
05.04.2016 22:24:56 Callback server created listening on port 7401
05.04.2016 22:24:56 Adding callback for events
05.04.2016 22:24:56 Adding callback for new devices
05.04.2016 22:24:56 Adding callback for deleted devices
05.04.2016 22:24:56 Adding callback for modified devices
05.04.2016 22:24:56 Adding callback for replaced devices
05.04.2016 22:24:56 Adding callback for readded devices
05.04.2016 22:24:56 Entering server loop. Use kill -SIGINT 2165 to terminate program
05.04.2016 22:29:04 Received 250 events from CCU since last check
05.04.2016 22:33:38 RPC server terminated
05.04.2016 22:33:38 RPC server received 490 (490) events
05.04.2016 22:35:03 Creating file queue
05.04.2016 22:35:03 Initializing RPC server
05.04.2016 22:35:03 Callback server created listening on port 7401
05.04.2016 22:35:03 Adding callback for events
05.04.2016 22:35:03 Adding callback for new devices
05.04.2016 22:35:03 Adding callback for deleted devices
05.04.2016 22:35:03 Adding callback for modified devices
05.04.2016 22:35:03 Adding callback for replaced devices
05.04.2016 22:35:03 Adding callback for readded devices
05.04.2016 22:35:03 Entering server loop. Use kill -SIGINT 1241 to terminate program
05.04.2016 22:40:37 Received 250 events from CCU since last check
05.04.2016 22:43:41 RPC server terminated
05.04.2016 22:43:41 RPC server received 427 (427) events
05.04.2016 22:44:04 Creating file queue
05.04.2016 22:44:04 Initializing RPC server
05.04.2016 22:44:04 Callback server created listening on port 7401
05.04.2016 22:44:04 Adding callback for events
05.04.2016 22:44:04 Adding callback for new devices
05.04.2016 22:44:04 Adding callback for deleted devices
05.04.2016 22:44:04 Adding callback for modified devices
05.04.2016 22:44:04 Adding callback for replaced devices
05.04.2016 22:44:04 Adding callback for readded devices
05.04.2016 22:44:04 Entering server loop. Use kill -SIGINT 2073 to terminate program
05.04.2016 22:48:36 Received 250 events from CCU since last check
07.04.2016 20:19:53 RPC server terminated
07.04.2016 20:19:53 RPC server received 32642 (32642) events
07.04.2016 20:20:18 Creating file queue
07.04.2016 20:20:18 Initializing RPC server
07.04.2016 20:20:18 Callback server created listening on port 7401
07.04.2016 20:20:18 Adding callback for events
07.04.2016 20:20:18 Adding callback for new devices
07.04.2016 20:20:18 Adding callback for deleted devices
07.04.2016 20:20:18 Adding callback for modified devices
07.04.2016 20:20:18 Adding callback for replaced devices
07.04.2016 20:20:18 Adding callback for readded devices
07.04.2016 20:20:18 Entering server loop. Use kill -SIGINT 22416 to terminate program
07.04.2016 20:24:51 Received 250 events from CCU since last check
07.04.2016 20:35:49 RPC server terminated
07.04.2016 20:35:49 RPC server received 826 (826) events
07.04.2016 20:37:04 Creating file queue
07.04.2016 20:37:04 Initializing RPC server
07.04.2016 20:37:04 Callback server created listening on port 7401
07.04.2016 20:37:04 Adding callback for events
07.04.2016 20:37:04 Adding callback for new devices
07.04.2016 20:37:04 Adding callback for deleted devices
07.04.2016 20:37:04 Adding callback for modified devices
07.04.2016 20:37:04 Adding callback for replaced devices
07.04.2016 20:37:04 Adding callback for readded devices
07.04.2016 20:37:04 Entering server loop. Use kill -SIGINT 1250 to terminate program
07.04.2016 20:42:17 Received 250 events from CCU since last check


Hier die ccuqueue_2001.dat:

cat ccuqueue_2001.dat
EV|LEQ0002140:2|ACTUAL_TEMPERATURE|18.000000
EV|LEQ0002140:2|ACTUAL_HUMIDITY|52.000000
EV|LEQ0002140:2|SET_TEMPERATURE|4.500000
EV|HEQ0508540:1|TEMPERATURE|19.100000
EV|HEQ0508540:1|HUMIDITY|65


Die ccuqueue_2001.idx: hat bei mir auch 1 byte und enthält auch bei mir nur eine 0.


ToM_ToM

Hallo Achiim,

ich hatte vor einiger Zeit ähnliche Probleme wie du.
Jedoch ging bei mir auschließlich define HMCCU mit der IP-Adresse und nicht mit dem Namen.

ZitatHinweis 3:
Im Zustand "starting" fehlen in der FHEM-Web-Oberfläche dann die get und set Kommandos. Blendest Du die aus, solange der rpcserver nicht gestartet ist? Oder was ist das für ein Phänomen? Siehe screen-shot..
Solange dein RPCServer nicht ordnungsgemäß läuft, hast du die "get" und "set" Befehle nicht zur Verfügung.

Kleiner Tipp meinerseits: Oftmals hilft folgendes:

  • RPC Server Stoppen
  • Autostart RPC Server deaktivieren
  • FHEM stoppen
  • CCU sauber neustarten und warten bis sie wieder voll hochgefahren und die Oberfläche erreichbar ist (kann bei vielen Geräten einige Minuten dauern)
  • FHEM starten
  • Aus FHEM heraus über dein HMCCU device den RPC Server starten

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

zap

#387
@Nic0205, Achiim: Die Ursache für Eure Probleme dürfte die gleiche sein. Kurze Erläuterung zum Start des RPC-Servers:

1. Befehl "set rpcserver on" wird abgesetzt
2. HMCCU startet ccurpcd.pl als separaten Prozess. In diesem Prozess wird ein RPC-Server initialisiert, der auf einem TCP-Port LISTENed und auf Daten der CCU wartet.
3. HMCCU wartet nach Step 2 für 2 Sekunden und regisitriert dann den RPC-Server bei der CCU, damit die weiß, wo sie ihre Events hinschicken soll.
4. Die CCU schickt nun diverse Anfragen an den RPC-Server (u.a. ListDevices). Wenn HMCCU dieses "ListDevices" empfängt, wechselt der Status von "starting" auf "running".

Das Problem tritt vermutlich zwischen Step 2 und 3 auf. Die CCU schickt schon ihre Initilaisierungs-Events, der RPC-Server ist aber noch nicht im LISTENing Mode. Daher geht z.B. "ListDevices" ins Leere und der Status bleibt "running". Die später gesendeten normalen Events für die Geräte kommen dann an.

@Achiim: Die get/set Befehle blende ich aus, so lange der RPCState nicht "stopped" oder "running" ist. Grund: während der Initialisierung der Verbindung ist die CCU stark ausgelastet, sodass Befehle nicht zuverlässig ausgeführt werden. Normalerweise geht der Start aber so schnell, dass das nicht relevant ist.

Die Fehlermeldung "Externally launched ..." besagt, dass noch ein ccurpcd.pl Prozess läuft. Vermutlich hast Du FHEM neu gestartet während der RPCState noch "starting" war. Der Prozess wurde dann nicht korrekt beendet. Ich werde die Stop Prozedur des RPC-Servers so ändern, dass grundsätzlich alle Prozesse gekillt werden.

Noch ein Tipp:
Um einen RPC-Server Prozess (ccurpcd.pl) sauber zu beenden, kann man von der Unix-Kommandozeile aus folgenden Befehl nutzen:

ccurpcd.pl shutdown <ccuhost_or_ip> <port> <pid>

Port ist der RPC-Port (bei wireless 2001), pid die Prozess-ID (siehe Log oder ps ax | grep ccurpcd)

Der Vorteil: Bei dieser Methode wird der RPC-Server bei der CCU sauber abgemeldet. Normalerweise wechselt dann auch der Status in HMCCU wieder von "Starting" auf "Stopped".

Wie gesagt: Die Timing Probleme versuche ich noch heute zu beheben. Ist nur etwas aufwändig, da bei mir schon die neue Version läuft (ist aber noch nicht für die Allgemeinheit tauglich). Muss jetzt erst die alte wieder aktivieren, das Problem beheben, testen ...



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

Achiim

Danke für die Unterstützung und wertvollen Tipps. Aber ich komme nicht weiter..
Ich glaube es bestehen zwei Probleme:

Problem 1:
Wie es zap beschreibt, das Timeingproblem beim Start des rpcserver. Hier warte ich ab, ob die von zap angekündigte neue Version eine Besserung bringt.

Problem 2:
Ich habe die von Euch beschriebenen Tipps angewand, aber ich bringe den rpcserver nicht dazu nach dem Start bestehen zu bleiben. Er beendet sich immer wieder (von selbst?)....
Ich habe meine CCU und FHEM wie angeraten neu gestartet, kontrolliert dass kein rpcserver Prozess in Linux läuft und dann über "set myCCU2 rpcserver on" den RPC-Server gestartet und im FHEM-Log sehe ich folgendes:


2016.04.08 11:56:22 0: HMCCU: RPC server started with pid 4246
2016.04.08 11:56:22 1: HMCCU: Registering callback http://192.168.178.21:7401/fh2001 with ID CB2001
2016.04.08 11:56:23 1: HMCCU: RPC callback with URL http://192.168.178.21:7401/fh2001 initialized
2016.04.08 11:56:42 0: HMCCU: Received EX event. RPC server CB2001 terminated.
2016.04.08 11:56:44 1: HMCCU: Externally launched RPC server(s) detected. Kill process(es) manually with command kill -SIGINT pid for pids 4246 f=1
2016.04.08 11:56:44 0: HMCCU: RPC server(s) with PID(s) 4175 shut down. f=1
2016.04.08 11:56:44 0: HMCCU: All RPC servers stopped


a) der RPC server wird mit der PID 4246 gestartet
b) es wird ein "Externally launched RPC server(s) detected" und zwar mit der PID 4246

Das ist der der gerade gestartete Prozess und kein "Externally launched RPC server"..

Danach werden alle Prozesse wieder beendet und der RPC-Server ist wieder weg.

Hat das auch mit dem Timeing zu tun oder ist das ein anderes Problem?
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder

Achiim

#389
Ich habe einen ersten Teilerfolg erzielt...

Ich hatte bisher nur meine CCU2 definiert mit: "define myCCU2 HMCCU 192.....". Nachdem ich nun auch ein erstes Device definiert habe mit: "define d_Stehlampe HMCCUDEV MEQ... 1" habe sogar Statuswerte von diesem Gerät erhalten, obwohl definitiv kein rpcserver lief.


Internals:
   CFGFN
   DEF        MEQ0714259 1
   IODev      myCCU
   NAME       d_Stehlampe
   NR         1392
   STATE      Error
   TYPE       HMCCUDEV
   ccuaddr    MEQ0714259
   ccudevstate Active
   ccuif      BidCos-RF
   ccuname    HM-LC-Dim1T-Pl-3 MEQ0714259
   ccutype    HM-LC-Dim1T-Pl-3
   channels   4
   statevals  devstate|on|off
   Readings:
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.DIRECTION 0
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.ERROR_OVERHEAT false
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.ERROR_OVERLOAD false
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.ERROR_REDUCED false
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.INHIBIT false
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.LEVEL 0.000000
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.LEVEL_REAL 0.000000
     2016-04-08 13:36:03   HM-LC-Dim1T-Pl-3_MEQ0714259.1.WORKING false
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.DIRECTION 0
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.ERROR_OVERHEAT false
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.ERROR_OVERLOAD false
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.ERROR_REDUCED false
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.INHIBIT false
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.LEVEL 0.000000
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.LEVEL_REAL 0.000000
     2016-04-08 13:36:22   HM-LC-Dim1T-Pl-3_MEQ0714259.2.WORKING false
     2016-04-08 13:43:23   state           Error
Attributes:
   IODev      myCCU
   room       HMCCU
   statechannel 1
   statevals  on:true,off:false
   substitute true:on,false:off,1:on,0:off


Ich habe dann die CCU neu gestartet und den RPS-Server dann mit "set myCCU rpcserver on" gestartet. Dann ist er tatsächlich losgelaufen und oben geblieben. Siehe Logfile-Auszug.


2016.04.08 15:04:52 0: HMCCU: RPC server started with pid 4320
2016.04.08 15:04:52 1: HMCCU: Registering callback http://192.168.178.21:7401/fh2001 with ID CB2001
2016.04.08 15:04:54 1: HMCCU: RPC callback with URL http://192.168.178.21:7401/fh2001 initialized
2016.04.08 15:05:04 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:10 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:16 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:21 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:27 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:45 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:51 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:05:57 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:03 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:09 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:15 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:21 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:27 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:45 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:51 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:06:56 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:03 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:09 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:15 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:21 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:27 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:45 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:51 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:07:57 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:03 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:09 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:15 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:21 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:27 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:45 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:51 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:08:57 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:03 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:09 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:15 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:21 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:27 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:44 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:50 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:09:56 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:02 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:08 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:14 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:20 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:26 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:38 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:44 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:50 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:10:56 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:01 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:07 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:14 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:20 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:26 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:33 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:39 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:46 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:52 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:11:58 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:03 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:09 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:14 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:20 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:26 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:32 2: HMCCU: Received no events from CCU since 300 seconds
2016.04.08 15:12:38 0: HMCCU: Received EX event. RPC server CB2001 terminated.
2016.04.08 15:12:39 0: HMCCU: RPC server(s) with PID(s) 4320 shut down. f=1
2016.04.08 15:12:39 0: HMCCU: All RPC servers stopped


Der Status des RPC-Server in "starting" verbleibt, habe ich dann den rpcserver mit "ccurpcd.pl shutdown <ccuhost_or_ip> <port> <pid>" beendet. Das sieht man auch um Log "...4320 shut down..."

Kann das sein, dass ohne die Definition eines Devices der RPC-Server nicht läuft?

Die Meldung mit den 300s kommt alle 6 Sekunden. Hier könnte der Code auch noch optimiert werden.
3x Raspberry PI, 2x DUB-H7, 3x CUL868, 2x CUL433, 1x RFXTRX, 1x Jeelink, Max! 8x Wand- + 14x Heizkörperthermostate + 13x Fensterkontakte, 3x HM Schaltaktoren + Dimmer + Leistungsmessung, 8x HM Rauchmelder, Intertechno, LW12, LED Strip 5050, Foscam, FS20 Dim-Slider FS20DIS, FS20 Bewegungsmelder