openHAB und Controme

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

openHAB und Controme

Beitrag von KlausGünther »

Guten Abend,

seit einiger Zeit läuft neben meinem Pi 4 mit openHAB auch noch Controme
und steuert unsere Fussbodenheizung.
Beides läuft soweit erst mal zufriedenstellend. Nun würde ich mich gerne in
der ein oder anderen Übersichtsseite in OH die Werte von Controme holen,
u.a. Temperatur und Luftfeuchtigkeit von mehreren Räumen, Außentemperatur
usw. und möchte dann damit "Sachen machen".
Jetzt gibts ja noch kein Binding, aber ein Script von BoBiene zum freien Download
auf Github, was das erstellen von eine .thing und .items Datei erst mal einfach macht.
Etwas nacharbeit ist noch notwendig.

Was ich jedoch feststelle ist, dass nach einiger Zeit, vermutlich 1-2 Wochen, die Werte
nicht mehr abgerufen werden. D.h. zum Beispiel verläuft dann die Temperaturve in OH
als gerader Strich und in der UI von Controme stehen andere Werte. Nache einem
Neustart von Controme geht das dann alles erst mal wieder. Fehlermeldungen in OH
kann ich keine finden.

Jemand hier der schon mal das gleiche hatte und evtl. eine Lösung dazu hat?

Grüße
KlausGünther

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openHAB und Controme

Beitrag von udo1toni »

Wie läuft die Anbindung, http? passen denn die aktuell angezeigten Werte in openHAB zu denen in Controme? Sprich: werden einfach keine Werte mehr persistiert, oder werden tatsächlich in openHAB keine Werte mehr geholt?

Wie sehen die Scripte aus? Wie sehen die Items aus? Welchen Persistence Service nutzt Du? Hast Du schon mal einen anderen Persistence Service ausprobiert?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

Re: openHAB und Controme

Beitrag von KlausGünther »

Eijeijei, ich hoffe ich kann alle Fragen beantworten.
Also wenn ich jetzt beide Pi´s neu Starte, läuft das alles wie geschmiert und OH holt sich alle 5min die Werte vom Controme Pi. Das läuft auch wie geschrieben eine gewisse Zeit Reibungslos, d.h. die Werte stimmen überein.


Das wäre aus einem Thread des erschaffers des Scriptes, damit man nicht alles einzeln selbst zusammenschreiben muss.
Thinks i do a litte diffrent:

I use the HTTP Binding with the cache functionality
With the JsonPath transform i select the values out of the JSON-Response
With Proxy-Item the Json-Array gets unpacked and the Set-Temperature get send to the Controme-Server


Raus kommt dabei eine .things Datei und eine .items Datei. Kann ich hier einstellen wenn Bedarf besteht.

Ich nutze den RRD4J Service, habe das einfach nicht umgestellt bisher, d.h. das was voreingestellt war, ist auch noch so.

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openHAB und Controme

Beitrag von udo1toni »

Also mein erster Tipp wäre rrd4j, aber nur als Schuss ins Blaue. Siehst Du im Log weiterhin eintrudelnde Werte? Das Proxy Item müsste gefüllt werden.

Wenn Du openHAB3 verwendest, brauchst Du eigentlich kein Proxy Item, der Cache ist der Channel, die Anbindung an die Items (JSONPPATH Transformation) geschieht dann im Link. Wenn Du http.things und http.items hier zeigst, kann ich Dir am Objekt selbst zeigen, was ich meine :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

Re: openHAB und Controme

Beitrag von KlausGünther »

Das geht, kein Problem. Wobei ich es jetzt nur auszugszweise gemacht habe, dass wiederholt sich ja alles irgendwie nur.....

.things

Code: Alles auswählen

Thing http:url:Controme "Controme" [ baseURL="http://111.111.111.11/", refresh=300,commandMethod="POST", contentType="application/x-www-form-urlencoded" ] {
	Channels:
		Type number : Erdgeschoss_Wohnraum "Wohnraum" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)].temperatur", mode="READONLY" ] 
		Type number : Erdgeschoss_Wohnraum_setpoint "Wohnraum soll" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)].solltemperatur", commandExtension="set/json/v1/1/soll/1/",commandTransformation="REGEX:s/(.+)/soll=$1&user=benutzername&password=passwort/g" ] 
		Type number : Erdgeschoss_Wohnraum_RL_1 "Wohnraum Rücklauf #1" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_81_4d_c2_0c_00_00_43')].wert", mode="READONLY" ] 
		Type number : Erdgeschoss_Wohnraum_RL_2 "Wohnraum Rücklauf #2" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_a6_44_c2_0c_00_00_83')].wert", mode="READONLY" ] 
		Type number : Erdgeschoss_Wohnraum_RL_3 "Wohnraum Rücklauf #3" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_eb_44_c0_0c_00_00_bb')].wert", mode="READONLY" ] 
		Type number : Erdgeschoss_Wohnraum_room "Wohnraum Raumtemperatur" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_d7_e7_58_0d_00_00_00')].wert", mode="READONLY" ] 
		Type number : Erdgeschoss_Wohnraum_sensor4 "RS_EG_3_b" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)]..sensoren[?(@.name=='26_07_eb_68_02_00_00_8d')].wert", mode="READONLY" ] 
		Type contact : Erdgeschoss_Wohnraum_Relay_1 "Wohnraum Ausgang 1" [stateExtension="get/json/v1/1/outs/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)].ausgang.['1']",openValue="1",closedValue="0", mode="READONLY" ] 
		Type contact : Erdgeschoss_Wohnraum_Relay_3 "Wohnraum Ausgang 3" [stateExtension="get/json/v1/1/outs/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)].ausgang.[' 3']",openValue="1",closedValue="0", mode="READONLY" ] 
		Type contact : Erdgeschoss_Wohnraum_Relay_2 "Wohnraum Ausgang 2" [stateExtension="get/json/v1/1/outs/", stateTransformation="JSONPATH:$..raeume[?(@.id==1)].ausgang.[' 2']",openValue="1",closedValue="0", mode="READONLY" ] 
		Type number : Erdgeschoss_Kueche "Küche" [stateExtension="get/json/v1/1/temps/", stateTransformation="JSONPATH:$..raeume[?(@.id==2)].temperatur", mode="READONLY" ] 

.items

Code: Alles auswählen

Group gErdgeschoss_WohnraumThermostat "Wohnraum" <heating> ["RadiatorControl"] {alexa = "Endpoint.Thermostat"}
Number:Temperature Controme_Erdgeschoss_Wohnraum "Wohnraum" <temperature> (gErdgeschoss_WohnraumThermostat) ["Point","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum",alexa="TemperatureSensor.temperature" }
Number:Temperature Controme_Erdgeschoss_Wohnraum_setpoint "Wohnraum Soll" <temperature> (gErdgeschoss_WohnraumThermostat) ["Point","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_setpoint",alexa="TemperatureSensor.targetSetpoint" }
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_1 "Wohnraum Rücklauf #1" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_RL_1"}
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_2 "Wohnraum Rücklauf #2" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_RL_2"}
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_3 "Wohnraum Rücklauf #3" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_RL_3"}
Number:Temperature Controme_Erdgeschoss_Wohnraum_room "Wohnraum Raumtemperatur" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_room"}
Number Controme_Erdgeschoss_Wohnraum_sensor4 "RS_EG_3_b" <humidity> (gErdgeschoss_WohnraumThermostat) ["Measurement","Humidity"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_sensor4"}
Contact Controme_Erdgeschoss_Wohnraum_Relay_1 "Wohnraum Ausgang 1" <fire> (gErdgeschoss_WohnraumThermostat) ["OpenState"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_Relay_1"}
Contact Controme_Erdgeschoss_Wohnraum_Relay_3 "Wohnraum Ausgang 3" <fire> (gErdgeschoss_WohnraumThermostat) ["OpenState"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_Relay_3"}
Contact Controme_Erdgeschoss_Wohnraum_Relay_2 "Wohnraum Ausgang 2" <fire> (gErdgeschoss_WohnraumThermostat) ["OpenState"] {channel="http:url:Controme_E128E4EE:Erdgeschoss_Wohnraum_Relay_2"}

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openHAB und Controme

Beitrag von udo1toni »

Ich hatte natürlich etwas verkürzt. :) wie immer...

Dennoch: Ein Teil der Items lässt sich an einen Channel anbinden (und damit eben Channel einsparen):

Code: Alles auswählen

Type string : cache_temp "Cache Channel Temp" [stateExtension="get/json/v1/1/temps/", mode="READONLY" ]
Dies ist der Cache für alle Werte, die nur gelesen werden müssen. Leider gibt es ein paar Channel, die separat gebraucht werden, weil sie nicht readonly sind.
Abzubilden sind folgende Items:

Code: Alles auswählen

Number:Temperature Controme_Erdgeschoss_Wohnraum "Wohnraum" <temperature> (gErdgeschoss_WohnraumThermostat) ["Point","Temperature"]                           {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)].temperatur"],alexa="TemperatureSensor.temperature" }
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_1 "Wohnraum Rücklauf #1" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"]    {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_81_4d_c2_0c_00_00_43')].wert"] }
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_2 "Wohnraum Rücklauf #2" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"]    {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_a6_44_c2_0c_00_00_83')].wert"] }
Number:Temperature Controme_Erdgeschoss_Wohnraum_RL_3 "Wohnraum Rücklauf #3" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"]    {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_eb_44_c0_0c_00_00_bb')].wert"] }
Number:Temperature Controme_Erdgeschoss_Wohnraum_room "Wohnraum Raumtemperatur" <temperature> (gErdgeschoss_WohnraumThermostat) ["Measurement","Temperature"] {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)]..sensoren[?(@.name=='28_d7_e7_58_0d_00_00_00')].wert"] }
Number Controme_Erdgeschoss_Wohnraum_sensor4 "RS_EG_3_b" <humidity> (gErdgeschoss_WohnraumThermostat) ["Measurement","Humidity"]                              {channel="http:url:Controme_E128E4EE:cache_temp" [profile="transform:JOSONPATH", function="$..raeume[?(@.id==1)]..sensoren[?(@.name=='26_07_eb_68_02_00_00_8d')].wert"] }
Man kann schön sehen, dass bis auf den Path die Items quasi identisch bestückt werden. In diesem Zusammenhang möchte ich auch für kurze Item- und Channelnamen werben. Eigentlich ist es egal, dass die Items zu Controme gehören, das Wort kann also weg. Erdgeschoss ist zwar klar, EG im Zusammenhang aber genauso leicht verständlich. Ergäbe dann z.B. EG_Wohnraum_RL_1, kurz, dennoch eindeutig und verständlich.

Lange Channelnamen führen vor allem zu viel Tipparbeit :)

Was die Relais Rückmeldung betrifft, warum verwendest Du da contact? Schon READONLY sollte reichen, auch einen switch Channel ohne Eingabemöglichkeit zu generieren. Leider wird statt ON und OFF 0 und 1 geliefert, so dass Du nicht um on="1" und off="0" herum kommst. Deshalb lassen sich die Relais nicht so schön zu einem Channel zusammenfassen. Bei den übrigen Sensoren klappt das aber ganz gut...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

Re: openHAB und Controme

Beitrag von KlausGünther »

Ich muss ehrlich gesagt gestehen das ich keine Ahnung habe wovon Du sprichst :-D

Ich habe es mir einfach gemacht und ein Script benutzt das jemand entwickelt hat der jetzt wohl auch dabei ist ein Binding für OH3 zu entwickeln.
Daher verstehe ich und bin auch ganz bei Dir, dass man sich Tipparbeit ersparen kann, aber die hatte ich nicht. Und Aufteilung in Ober u Erdgeschoss kommt übrigens daher, dass da zwei verschiedene Gateways laufen.
Das "Relay" wird auch so nicht funktionieren da es sich dabei um einen Wert zwischen 0-100% liegen kann, also kein klassischer Stellantrieb der Nur an oder Aus ist, da würde der Switch ja gehen.
Und dann ist es eh noch etas durcheinander, weil der Luftfeuchtigkeitssensor "RS_EG_3_b" nur als Temperatur erkannt wird. Wobei er ja auch so angelegt ist.

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openHAB und Controme

Beitrag von udo1toni »

Ja, die tollen Scripte, die so im Umlauf sind... :)

Ich sag mal so: Für den Entwickler des jeweiligen Scripts ist das Ergebnis ideal. Aber nicht alle Menschen sind gleich. Ich habe mir solche Dinge auch schon angeschaut, aber sie sind einfach viel zu unflexibel. Ich möchte an dieser Stelle einfließen lassen, dass ich mich beruflich viel mit Automation von Abläufen in der Steuerung beschäftige, und zwar als Anwender. Ich sitze aber mit den Entwicklern zusammen, wenn neue Automationen entwickelt werden, und das ist immer mit extrem viel Handarbeit verbunden (und wir reden von Steuersystemen, deren Einstiegspreis jenseits der 200.000 € liegt - Grenze nach oben einigermaßen offen, es gibt auch Beispielsysteme, die im siebenstelligen Bereich angesiedelt sind.
Worauf ich damit hinaus will: Es ist Handarbeit. Scripte, und seien sie noch so ausgeklügelt, werden niemals alles berücksichtigen können, was der Anwender haben mag.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

Re: openHAB und Controme

Beitrag von KlausGünther »

Also ob es jetzt die Lösung ist weiß ich nicht, aber:

- Ich habe die vom Script erstellten Dateien mal aufgeräumt und z.B. die Contacts auskommentiert.
- Ich habe die Channel u Items mal etwas weniger lang benannt und überflüssiges rausgeworfen und verkürzt (z.B. aus Oberschoss wurde OG)

Nun scheint es (teu teu teu) zu laufen. Das einzige was noch nicht stimmt, ist das der Luftfeuchtigkeit keine Einheiten hinzugefügt wurden.

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openHAB und Controme

Beitrag von udo1toni »

KlausGünther hat geschrieben: 30. Jun 2022 10:36 Das einzige was noch nicht stimmt, ist das der Luftfeuchtigkeit keine Einheiten hinzugefügt wurden.
Ja, da steht ja auch nur Number und nicht Number:Dimensionless (relative Luftfeuchte wird in % angegeben, sie ist dimensionslos...)
Es kann allerdings sein, dass der Wert dann um Faktor 100 zu hoch ist (also z.B. 4000 % statt 40 %), dann wäre es vermutlich das Einfachste, die Einheit in der Formatierung des Labels zu ergänzen. "RS_EG_3_b [%d %%]"
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten