Openhab --> Homegear --> CUL

Ahhh ok. Ich hab parallel mal in der Google Group für openHAB nachgefragt, aber noch keine Antwort bekommen. Wenn ich was höre, gebe ich Bescheid :slight_smile:

Was ich schon herausgefunden hab, ist, dass der Ergeignisempfang prinzipiell unterstützt wird (siehe https://github.com/openhab/openhab/blob/8930123e5788625ce0c45dc7ccad0665bbc08df5/bundles/binding/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/bus/HomematicBinding.java). Bei mir haperts im Moment noch etwas mit der Konfiguration - hab openHAB noch nie vorher genutzt. Mal sehen, ob ich heute Abend noch was herausbekomme.

Hab das Problem gefunden: Homegear kommt nicht mit dem Serverstring, der von openHAB gesendet wird klar. Dadurch werden die Ereignisse an die falsche Portnummer gesendet und Homegear denkt, openHAB ist nicht erreichbar. Es gibt heute noch ein Update :wink:.

Whoa, das ging ja schnell. Awesome! :slight_smile:

So, neue Version wird gerade kompiliert. Sobald du Version 0.3.0-3 (achte auf die “3” am Ende!) auf der Download-Seite siehst, kannst du sie runterladen :wink:. Damit sollte es funktionieren. Da du vermutlich Version 0.2.x bei dir installiert hast, mach bitte folgendes, da die Konfigurationsdateien sich drastisch geändert haben:

[ul]
[li] Sichere deine Datenbank (in /var/lib/homegear/db.sql).[/li]
[li] Deinstallier Homegear mit:

[li] Lade die neue Homegear-Version herunter und installier sie:

wget http://homegear.eu/downloads/homegear_0.3.0-3_armhf.deb dpkg -i homegear_0.3.0-3_armhf.deb[/li]
[li] Stoppe Homegear nach der Installation

[li] Kopier deine Datenbank zurück nach /var/lib/homegear/db.sql[/li]
[li] Beim ersten Start von Homegear wird die Datenbank konvertiert, beim zweiten Start sollte dann hoffentlich jetzt alles funktionieren :wink: [/li][/ul]

Ok, ich werde es probieren, udn mich dann zurückmelden :slight_smile: Danke!

Hab mich entschlossen, den ganzen 0.2-Zweig mal abzulösen, hat deswegen etwas länger gedauert :wink:. Bin echt gespannt auf dein Feedback :smiley:.

Es hat funktioniert! Nun werden die Werte regelmäßig geupdated :slight_smile: 1A!

Super :smiley:

Hallo zusammen,

ich verzweifel gerade etwas an obenhab bzw homegear bzw homematic bzw CUL … (oder wo auch immer das Problem gerade liegt :wink:

Also das habe ich gemacht:

  • Java installiert
  • Openhab installiert
  • Homegear installiert
  • Gerät (ein HM-CC-TC) erfolgreich mit Homegear gepaart (ich sehe es in der peers list Übersicht)
  • Im homegear Log sehe ich dass Pakete gesendet bzw empfangen werden
  • Homegear in openhab.cfg hinzugefügt: [code]############################### Homematic Binding #####################################

Hostname / IP address of the Homematic CCU

homematic:host=rapsberrypi

Hostname / IP address for the callback server (optional, default is auto-discovery)

This is normally the IP / hostname of the local host

(but not “localhost” or “127.0.0.1”).

homematic:callback.host=raspberrypi

Port number for the callback server. (optional, defaults to 9123)

homematic:callback.port=2001
[/code]

  • Gerät als Item in Openhab hinzugefügt (zB: Number _Temperature_GF_Living "_Temperature [%.1f °C]" <temperature> (Temperature, GF_Living) {homematic="id=JEQ0553522, channel=2, parameter=TEMPERATURE"}

-> Der Wert in Openhab ist immer leer :imp:

Muss ich noch irgendeinen weiteren Schritt machen? Habe ich was übersehen!?
Danke für eure Hilfe!

MM1804

Hey,

setz fürs Debuggen “homematic:host=” und “homematic:callback.host=” mal auf die IP-Adresse des Raspberrys. Da Homegear und openHAB auf dem gleichen Rechner laufen, wäre eigentlich “localhost” korrekt, aber das funktioniert irgendwie nicht (liegt an openHAB - ich muss mal irgendwann schauen, ob ich das Problem im openHAB-Quelltext ausfindig machen kann).
“homematic:callback.port=” darf nicht “2001” sein, da Homegear bereits auf Port 2001 lauscht. Das ist der Port, auf dem openHAB auf Ereignisse wartet - der Rückkanal von Homegear sozusagen. Lass ihn am besten auf dem Standardwert “9123”. Aber auch jeder andere freie Port wäre ok.
In deiner Items-Datei tausch “channel=2” durch “channel=1” aus (TEMPERATURE ist für den HM-CC-TC auf Kanal 1).
Schau mal, wie es dann aussieht. Falls es danach immer noch nicht klappt, poste mal dein Homegear-Log und die Ausgabe von openHAB.

Liebe Grüße

Sathya

Hi,

nur so eine Idee:

versuche mal:

Number _Temperature_GF_Living    "_Temperature [%.1f °C]"   <temperature>   (Temperature, GF_Living) {homematic="id=JEQ0553522, channel=2, parameter=TEMPERATURE, converter=org.openhab.binding.homematic.internal.converter.state.TemperatureConverter"}

Ich spiele selbst auch gerade ein bisschen mit dem homematic binding herum und hatte ein ähnliches Problem mit einem anderen Gerät. Das Homematic-Binding hat eine Bibliothek von sogenannten Convertern, die die Werte umwandeln sollen. Wenn für einen Parameter kein Converter gefunden werden kann, dann wird der Wert ignoriert (zumindest bei mir war das so). Die explizite Angabe eines Konverters behebt das.

Sollte das nicht funktionieren, kannst Du in openhab in der Datei configuration/logback.xml mal folgendes direkt über “” einfügen:

	<logger name="org.openhab.binding.homematic" level="DEBUG">
		<appender-ref ref="STDOUT" />
	</logger>

Dann sollte Dir openhab an der Konsole sagen, was es von homegear empfängt.

Viele Grüße und viel Erfolg
Markus

Noch ein Hinweis an Sathya, weil es hier zum Thema passt:

Irgendwie hatte ich komische Fehlermeldungen in Openhab:

13:32:09.044 ERROR o.o.c.s.AbstractActiveService[:175]- Error while executing background thread Homematic Connection Refresh Thread
org.openhab.binding.homematic.internal.xmlrpc.HomematicBindingException: java.net.BindException: Address already in use: JVM_Bind
	at org.openhab.binding.homematic.internal.xmlrpc.callback.CallbackServer.start(CallbackServer.java:101)
	at org.openhab.binding.homematic.internal.bus.HomematicBinding.registerCallbackHandler(HomematicBinding.java:458)
	at org.openhab.binding.homematic.internal.bus.HomematicBinding.execute(HomematicBinding.java:495)
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156)
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173)
Caused by: java.net.BindException: Address already in use: JVM_Bind
	at java.net.DualStackPlainSocketImpl.bind0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
	at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
	at java.net.PlainSocketImpl.bind(Unknown Source)
	at java.net.ServerSocket.bind(Unknown Source)
	at java.net.ServerSocket.<init>(Unknown Source)

Anscheinend versucht openhab regelmäßig sich als Client ab- und wieder anzumelden (keine Ahnung warum). Es schickt dazu ein “init” bei dem die serveradresse “” ist, mit dem zuvor registrierten Namen.
Erste Registrierung:

2014-04-07 19:26:24 - called init: , 192.168.2.128:9123/OPENHAB

Deregistrierung

2014-04-07 19:26:24 - Check alife timeout reached. Refreshing CCU connection.
2014-04-07 19:26:24 - Removing callback handler.
2014-04-07 19:26:24 - called init: , 192.168.2.128:9123/OPENHAB
2014-04-07 19:26:24 - Error while unregistering callback server. Will be ignored.
org.openhab.binding.homematic.internal.xmlrpc.HomematicBindingException: org.apache.xmlrpc.XmlRpcException: Type error.
	at org.openhab.binding.homematic.internal.xmlrpc.XmlRpcConnection.executeRPC(XmlRpcConnection.java:238) ~[org.openhab.binding.homematic/:na]
	at org.openhab.binding.homematic.internal.xmlrpc.XmlRpcConnection.init(XmlRpcConnection.java:151) ~[org.openhab.binding.homematic/:na]
	at org.openhab.binding.homematic.internal.bus.HomematicBinding.removeCallbackHandler(HomematicBinding.java:475) [org.openhab.binding.homematic/:na]
	at org.openhab.binding.homematic.internal.bus.HomematicBinding.execute(HomematicBinding.java:499) [org.openhab.binding.homematic/:na]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) [org.openhab.core/:na]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) [org.openhab.core/:na]
org.apache.xmlrpc.XmlRpcException: Type error.
	at org.openhab.binding.homematic.internal.xmlrpc.SameEncodingXmlRpcSun15HttpTransport.readResponse(SameEncodingXmlRpcSun15HttpTransport.java:57) ~[na:na]
	at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156) ~[na:na]
	at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143) ~[na:na]
	at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69) ~[na:na]
	at org.apache.xmlrpc.client.XmlRpcClientWorker$1.run(XmlRpcClientWorker.java:80) ~[na:na]
	at java.lang.Thread.run(Unknown Source) ~[na:1.7.0_51]
2014-04-07 19:26:24 - Registering callback handler.

In meiner Konfiguration bekommt er da also von apache-xmlrpc einen Fehler zurück und bricht die Abmeldung ab. Danach versucht er sich trotzdem wieder anzumelden und es kommt klarerweise die obige Fehlermeldung.

Schickt möglicherweise homegear da eine falsche Antwort, oder ist das ein Bug in xmlrpc oder openhab? Die Funktion scheint das auf den ersten Blick nicht zu beeinträchtigen, weil der “alte” Server in Openhab nicht beendet wird.

Viele Grüße
Markus

[quote=“sathya”]Hey,

setz fürs Debuggen “homematic:host=” und “homematic:callback.host=” mal auf die IP-Adresse des Raspberrys. Da Homegear und openHAB auf dem gleichen Rechner laufen, wäre eigentlich “localhost” korrekt, aber das funktioniert irgendwie nicht (liegt an openHAB - ich muss mal irgendwann schauen, ob ich das Problem im openHAB-Quelltext ausfindig machen kann).
“homematic:callback.port=” darf nicht “2001” sein, da Homegear bereits auf Port 2001 lauscht. Das ist der Port, auf dem openHAB auf Ereignisse wartet - der Rückkanal von Homegear sozusagen. Lass ihn am besten auf dem Standardwert “9123”. Aber auch jeder andere freie Port wäre ok.
In deiner Items-Datei tausch “channel=2” durch “channel=1” aus (TEMPERATURE ist für den HM-CC-TC auf Kanal 1).
Schau mal, wie es dann aussieht. Falls es danach immer noch nicht klappt, poste mal dein Homegear-Log und die Ausgabe von openHAB.

Liebe Grüße

Sathya[/quote]

Hi Sathya,
vielen Dank für die schnelle Hilfe!

Das mit dem Port hatte ich schon vorher mal versucht (daran lags also ehr nicht). Auch das mit dem falschen Channel war ehr eine Verzweifelungstat - muss natürlich 1 sein :wink:

Richtig geholfen hat die IP Adresse hart einzutragen.

Vielen Dank - tut jetzt…Ich bastel dann mal weiter :slight_smile:

Grüße
MM1804

@MM1804:

Schön, dass es jetzt klappt :wink:. Generell sollte es natürlich auch mit dem Hostnamen funktionieren. Ich vermute mal, “raspberrypi” kann entweder gar nicht aufgelöst werden oder wird in “127.0.0.1” aufgelöst?

@Markus:
Das liegt an openHAB. Hab den openHAB-Quelltext gerade angepasst und einen pull-Request gesendet [1]. Hab gerade das Ab- und Anmelden mit “init” auch noch einmal manuell getestet und es klappt einwandfrei. Für’s Anmelden muss der erste Parameter “http://192.168.2.128:9123/xmlrpc” und der zweite “http://192.168.2.128:9123/OPENHAB” sein. Für’s Abmelden muss der erste Parameter “http://192.168.2.128:9123/xmlrpc” sein und der zweite wird leer gelassen (laut HomeMatic-Schnittstellenbeschreibung). Als Workaround kann ich es aber auch erst einmal umgekehrt erlauben, bis das Problem in openHAB gefixt ist. Steht jetzt auch auf der Todo-Liste :wink:.
Ich nutze selbst openHAB nicht, von daher teil mir bitte weiterhin jedes Problem mit, das du entdeckst!

Liebe Grüße

Sathya

[1] https://github.com/openhab/openhab/pull/1000

Hallo nochmal,

also ich bin mal wieder am basteln. Das letze mal hatte ich noch die Konfig in die Demo Files mit aufgenommen. Nun wollte ich mit leeren Datein nochmal neu Anfangen um das ganze etwas übersichtlicher zu gestalten - nun habe ich aber wieder das Problem, dass ich keine Werte angezeigt bekomme.

  • Die openhab.cfg zum letzten mal unverändert. -> passt
    Items:
    Number Wohnzimmer_Temperatur “Temperatur[%.1f °C]” (LivingRoom, Temperature) {homematic=“id=IEQ0553522, channel=1, parameter=TEMPERATURE”}
    Number Wohnzimmer_Luftfeuchte “Luftfeuchte [%d %%]” (LivingRoom, Humidity) {homematic=“id=IEQ0553522, channel=1, parameter=HUMIDITY”}
    Number Wohnzimmer_Temperatur_Setpoint “Zieltemperatur [%.1f °C]” (LivingRoom, Temperature) {homematic=“id=IEQ0553522, channel=2, parameter=SETPOINT”}
    Sitemap:
    Text item=Wohnzimmer_Temperatur
    Text item=Wohnzimmer_Luftfeuchte
    Setpoint item=Wohnzimmer_Temperatur_Setpoint minValue=16 maxValue=28 step=0.5

Auszug ausm log:

Connecting to http://192.168.178.37:2001 18:54:08.901 DEBUG o.o.p.l.i.LoggingPersistenceActivator[:31] - Logging persistence bundle has been started. 18:54:09.164 DEBUG o.o.c.p.i.PersistenceManager[:146] - Initializing logging persistence service. 18:54:09.486 INFO o.o.b.h.internal.ccu.CCURF[:60] - Connected to CCU at 192.168.178.37:2001 18:54:09.500 DEBUG o.o.b.h.i.bus.HomematicBinding[:448] - Registering callback handler. 18:54:09.536 DEBUG o.o.b.h.i.x.c.CallbackServer[:99] - CallbackReceiver registered: org.openhab.binding.homematic.internal.ccu.CCURF@1e5cde7 18:54:09.559 DEBUG o.o.b.h.i.x.c.CallbackServer[:99] - CallbackReceiver registered: org.openhab.binding.homematic.internal.bus.HomematicBinding@16e4140 18:54:09.759 DEBUG o.o.b.h.i.x.c.CallbackServer[:57] - CallbackServer will listen on port 9123 18:54:10.137 DEBUG o.o.p.e.i.ExecPersistenceServiceActivator[:33] - Exec persistence bundle has been started. 18:54:10.391 DEBUG o.o.c.p.i.PersistenceManager[:146] - Initializing exec persistence service. 18:54:10.546 DEBUG o.o.b.h.i.x.c.CallbackServer[:97] - Starting webserver ... 18:54:10.628 DEBUG o.o.b.h.i.x.XmlRpcConnectionRF[:149] - called init: http://192.168.178.37:9123/xmlrpc, 192.168.178.37:9123/OPENHAB 18:54:11.253 DEBUG o.o.c.p.i.PersistenceManager[:428] - Scheduled strategy exec.everyMinute with cron expression 0 * * * * ? 18:54:11.428 DEBUG o.o.b.h.i.bus.HomematicBinding[:461] - Callback handler registered. 18:54:11.449 DEBUG o.o.b.h.i.bus.HomematicBinding[:348] - Updating item state for items [Wohnzimmer_Luftfeuchte, Wohnzimmer_Temperatur_Setpoint, Wohnzimmer_Temperatur] 18:54:11.455 INFO o.o.c.s.AbstractActiveService[:169] - Homematic Connection Refresh Thread has been started 18:54:11.481 DEBUG o.o.b.h.i.bus.HomematicBinding[:490] - Last event was only 53ms ago. No need to refresh connection. 18:54:11.487 DEBUG o.o.b.h.i.c.l.ConverterLookup[:69] - Configuring item Wohnzimmer_Luftfeuchte on address {deviceId=IEQ0553522, channelId=1, parameterId=HUMIDITY} 18:54:11.503 DEBUG o.o.b.h.internal.ccu.CCURF[:119] - listing physical device with address IEQ0553522 18:54:11.530 DEBUG o.o.b.h.internal.ccu.CCURF[:124] - device IEQ0553522 not found in cache - trying to load ... 18:54:11.553 DEBUG o.o.b.h.i.x.XmlRpcConnectionRF[:59] - called getDeviceDescription: IEQ0553522 18:54:11.664 DEBUG o.o.p.r.i.RRD4jActivator[:31] - RRD4j persistence bundle has been started. 18:54:12.122 DEBUG o.o.c.p.i.PersistenceManager[:146] - Initializing rrd4j persistence service. 18:54:12.139 ERROR o.o.b.h.i.d.HMDeviceFactory[:37] - Could not create Device with address IEQ0553522 org.openhab.binding.homematic.internal.xmlrpc.HomematicBindingException: org.apache.xmlrpc.XmlRpcException: Device not found. at org.openhab.binding.homematic.internal.xmlrpc.XmlRpcConnection.executeRPC(XmlRpcConnection.java:238)

Sieht also irgendwie so aus als ob die Registrierung nicht klappt - seltsamerweise habe ich später im Log follgende Einträge:

19:08:28.869 DEBUG o.o.b.h.i.bus.HomematicBinding[:194] - Received new value 21.6 for device at {deviceId=JEQ0553522, channelId=1, parameterId=TEMPERATURE} 19:08:28.876 DEBUG o.o.b.h.internal.ccu.CCURF[:189] - received callback event 192.168.178.37:9123/OPENHAB for device JEQ0553522:1#TEMPERATURE with value 21.6 19:08:28.882 DEBUG o.o.b.h.i.x.c.SystemHandler[:96] - end of multicall

Sieht also so aus, also ob der Thermostat schon irgendwie Werte zurück liefert die auch verarbeitet werden - aber es wird halt kein Wert angezeigt…

Hat da jemand eine Idee woran das liegen könnte?

Danke schon mal

Gruß
MM1804

Hey,

es scheint, als seien die Seriennummern in der Konfig nicht korrekt. In der Konfig nutzt du “IEQ0553522”, die Daten im zweiten Logabschnitt kommen aber von “JEQ0553522”.

Falls es das nicht war, müssen wir nochmal schauen :wink:.

Liebe Grüße

Sathya

Ah stimmt, allerdings ist die jeq0… Die zugehörige Seriennummer für den Ventilsteuerer (hm-cc-vd). Hilft also nicht richtig weiter…

Hmm, ok, irgendwas ist da faul… Im zweiten Log sendet das Gerät “JEQ0553522” nämlich eine Temperatur. Das tut der HM-CC-VD aber nicht…

Poste mal einen etwa 5- bis 10-minütigen Abschnitt aus deinem Homegear-Log. Das hilft vielleicht schon weiter. Außerdem vielleicht noch die Liste aller angelernten Geräte. Die bekommst du mit:

Homegear sagt ja im openHAB-Log, das Gerät “IEQ0553522” sei unbekannt. Mich wundert, dass dein Stellantrieb und der Wandthermostat fast die gleiche Seriennummer haben? Ich vermute, dass entweder die Seriennummer “IEQ0553522” falsch ist oder das Gerät nicht an Homegear angelernt ist.

:unamused: :neutral_face: ich glaub ich grab mir dann mal ein Loch zum drin verstecken - die Seriennummer war wirklich falsch grummel - manchmal sieht man den Wald vor lauter Bäumen nicht :frowning:

Also jetzt bekomme ich Werte gezeigt. Allerdings scheint es trotzdem noch nicht rund zu laufen:

  • Ich habe einmal ein Temperaturupdate auf 19.6 bekommen. Auf dem Thermostet wird nun 21.7 angezeigt (vermutlich weil ich ihn jetzt in der Hand halte) in der Openhab zeigt aber immer noch 19.6 (auch wenn ich ein refresh mache)
  • Ändere ich etwas an der Zieltemperatur wird dies auch von openhab übernommen - Thermostat zeigt immer noch den selben Zielwert an

Hier der Auszug aus dem Log:

Setting new value 23.5 on parameter {deviceId=JEQ0553522, channelId=2, parameterId=SETPOINT} 11:31:32.079 DEBUG o.o.b.h.i.d.c.AbstractHMChannel[:95] - Setting new value 23.5 of type class java.lang.Double on parameter JEQ0553522:2#SETPOINT 11:31:32.085 DEBUG o.o.b.h.i.x.XmlRpcConnectionRF[:227] - called setValue: JEQ0553522:2, SETPOINT, 23.5 11:31:32.196 DEBUG o.o.b.h.i.x.c.SystemHandler[:69] - multicall: [{methodName=event, params=[Ljava.lang.Object;@95a00e}] 11:31:32.202 DEBUG o.o.b.h.i.x.c.SystemHandler[:76] - calls to event with params [{methodName=event, params=[Ljava.lang.Object;@95a00e}] 11:31:32.208 DEBUG o.o.b.h.i.x.c.CallbackServer[:121] - called event (Double) => dispatching to event (Object) 11:31:32.214 DEBUG o.o.b.h.i.x.c.CallbackServer[:45] - dispatching event to 2 receivers 11:31:32.220 DEBUG o.o.b.h.i.bus.HomematicBinding[:194] - Received new value 23.5 for device at {deviceId=JEQ0553522, channelId=2, parameterId=SETPOINT} 11:31:32.226 DEBUG o.o.b.h.i.c.l.ConverterLookup[:41] - getBindingValueToStateConverter(Wohnzimmer_Temperatur_Setpoint) 11:31:32.238 DEBUG o.o.b.h.i.c.l.ConverterLookup[:48] - getBindingValueToStateConverter(Wohnzimmer_Temperatur_Setpoint): org.openhab.binding.homematic.internal.converter.state.TemperatureConverter@245740 11:31:32.246 DEBUG o.o.b.h.i.bus.HomematicBinding[:204] - Received new value 23.5 for item Wohnzimmer_Temperatur_Setpoint 11:31:32.254 INFO runtime.busevents[:26] - Wohnzimmer_Temperatur_Setpoint state updated to 23.5 11:31:32.259 DEBUG o.o.b.h.internal.ccu.CCURF[:189] - received callback event 192.168.178.37:9123/OPENHAB for device JEQ0553522:2#SETPOINT with value 23.5

Wenn ich das “setting new value” richtig interpretiere schickt Openhab was los. Den Callback würde ich so interpretieren, dass die Temperatur eingestellt wurde - aber irgendwas passt trotzdem nicht!?

Gibt es eigentlich keine komplette Beispielkonfiguration für homematic die man sich mal runterziehen kann um darauf dann entsprechende Anpassungen für seine Geräte machen zu können?

Danke für deine Geduld und deine Hilfe!