Seite 1 von 2

OpenHAB3 und KM200

Verfasst: 14. Okt 2021 22:11
von Chris5020
So, nachdem ich jetzt wochenlang das Forum und andere Seiten durchforstet habe, bin ich schon relativ weit mit meinem KM200, aber die Heizkreise bekomme ich einfach nicht hin.

Habe mir extra ein PHP-Script geschrieben, das die REST-API ausliest direkt am KM200, dort bekomme ich für meine 3 Heizkreise z.B. folgende Endpunkte:

Code: Alles auswählen

        /heatingCircuit/hc1/currentRoomSetpoint	21	C		floatValue	
        /heatingCircuit/hc1/actualSupplyTemperature	24.3	C		floatValue	
        /heatingCircuit/hc1/operationMode	auto		W	stringValue	auto (0); manual (1);
        /heatingCircuit/hc1/temperatureLevels/eco	15	C	W	floatValue	min=5; max=20.5;
        /heatingCircuit/hc1/temperatureLevels/comfort2	21	C	W	floatValue	min=15.5; max=30;
        /heatingCircuit/hc1/pumpModulation	0	%		floatValue	
        /heatingCircuit/hc1/suWiThreshold	17	C	W	floatValue	min=10; max=30;
        /heatingCircuit/hc1/suWiSwitchMode	automatic		W	stringValue	off (0); automatic (1); forced (2);
        /heatingCircuit/hc1/status	ACTIVE			stringValue	INACTIVE (0); ACTIVE (1); 
das ganze auch noch mit hc2 und hc3 für die anderen beiden Kreise.

Daraus habe ich mir dann eine km200.items gebastelt, die funktioniert für fast alle Endpunkte der Rest-API, aber die Heizkreise klappen nicht.
Anhand dem Forum und anderen Quellen habe ich verschiedene Schreibweisen dafür gefunden, z.B. diese Varianten

Code: Alles auswählen

Number  bud_HCTest1      	"TEST1-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:actualTemp" [scale="Celsius"]}
Number  bud_HCTest2      	"TEST2-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:2:actualTemp" [scale="Celsius"]}
Number  bud_HCTest3      	"TEST3-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:3:actualTemp" [scale="Celsius"]}
Number  bud_HCTest4      	"TEST4-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:hc1:actualTemp" [scale="Celsius"]}
Number  bud_HCTest5      	"TEST5-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:hc1:actualTemp" [scale="Celsius"]}
Number  bud_HCTest6      	"TEST6-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:hc1_actualTemp" [scale="Celsius"]}
Keine der Varianten liefert Werte, im item-Browser steht immer:
(unknown)lock_fill
Invalid Link
km200:heatingCircuit:KM200KG:1:hc1_actualTemp
Im Vergleich dazu die Warmwasser-Temperatur, die funktioniert
Number:Temperature bud_HW1Temp "WW IST [%.1f %unit%]" <temperature> (G_Num) {channel="km200:dhwCircuit:KM200KG:1:dhw1_actualTemp"}

Hat jemand einen Tipp für mich?

danke, Chris

Re: OpenHAB3 und KM200

Verfasst: 15. Okt 2021 07:50
von int5749
Hast Du einmal über Rest Api den Channel/UID gelesen?? Dies möglichen Channels kannst Du dort ja sehen (wenn das thing online ist)
Mancmal ist da noch ein #?

z.B.

Code: Alles auswählen

"yamahamusiccast:device:vMusiccast:WX030_Schlaf:zone2#sleep"
Aber das ist im Moment etwas Glaskugel schauen. Evtl. postest Du mal den Auszug aus der Rest Api, wie der sich dort darstellt?

VG

Re: OpenHAB3 und KM200

Verfasst: 15. Okt 2021 16:25
von Chris5020
Danke für die Rückmeldung, irgenwie weiss ich nicht ganz was du meinst wo ich nachsehen soll

mein thing sieht so aus:

Code: Alles auswählen

Bridge km200:kmdevice:KM200KG "KM200KG" @ "Waschkueche" [ privateKey= "c3efbbbdfc467c95933ca25c04737b6a8dd21419412a1070cd24d74fdecea6d8", maxnbrrepeats=10.0, readDelay=100, refreshInterval=30, maxNbrRepeats=10, ip4Address="10.0.0.127", refreshinterval=30.0, readdelay=100.0 ] {



    appliance       1   "Appliance Info"                    // ok
    dhwCircuit      1   "Hot Water Circuit"                 // ok
    gateway         1   "Gateway"                           // ok
    heatingCircuit   1   "Heating Circuit 1 (KG)"        // paper ui-configured
    heatingCircuit   2   "Heating Circuit 2 (EG+OG)"        // paper ui-configured
    heatingCircuit   3   "Heating Circuit 3 (OG)"        // paper ui-configured
    heatSource      1   "Heat Source"                       // empty
    holidayMode     1   "Holiday Mode"                      // empty
    sensor          1   "Sensors"                           // ok
    solarCircuit    1   "Solar Circuit"                     // empty
    system          1   "System"                            // empty
    notification    1   "Notification"                      // empty
    systemStates    1   "System States"                     // ok

}
Und das sind die Urls und die Antwort direkt aus der RESt-Api am KM200 bzgl. HC1

Code: Alles auswählen

heatingCircuits/hc1	-			refEnum	
/heatingCircuits/hc1/currentRoomSetpoint	0	C		floatValue	
/heatingCircuits/hc1/actualSupplyTemperature	28	C		floatValue	
/heatingCircuits/hc1/actualSupplyTempSetpoint	ERROR
/heatingCircuits/hc1/operationMode	auto		W	stringValue	auto (0); manual (1);
/heatingCircuits/hc1/supplyTemperatureSetpoint	0	C		floatValue	
/heatingCircuits/hc1/temporaryRoomSetpoint	-1	C	W	floatValue	min=5; max=30;
/heatingCircuits/hc1/roomtemperature	-3276.8	C	R	floatValue	
/heatingCircuits/hc1/activeSwitchProgram	A		W	stringValue	A (0); B (1);
/heatingCircuits/hc1/timeToNextSetpoint	ERROR
/heatingCircuits/hc1/nextSetpoint	ERROR
/heatingCircuits/hc1/switchProgramMode	levels		W	stringValue	levels (0); absolute (1);
/heatingCircuits/hc1/switchPrograms	-			refEnum	
/heatingCircuits/hc1/switchPrograms/A	-		W	switchProgram	
/heatingCircuits/hc1/switchPrograms/B	-		W	switchProgram	
/heatingCircuits/hc1/temperatureLevels	-			refEnum	
/heatingCircuits/hc1/temperatureLevels/eco	0	C	W	floatValue	min=5; max=15.5;
/heatingCircuits/hc1/temperatureLevels/comfort2	16	C	W	floatValue	min=5.5; max=30;
/heatingCircuits/hc1/pumpModulation	0	%		floatValue	
/heatingCircuits/hc1/suWiThreshold	17	C	W	floatValue	min=10; max=30;
/heatingCircuits/hc1/designTemp	ERROR
/heatingCircuits/hc1/roomTempOffset	ERROR
/heatingCircuits/hc1/heatCurveMax	ERROR
/heatingCircuits/hc1/controlType	ERROR
/heatingCircuits/hc1/roomInfluence	ERROR
/heatingCircuits/hc1/fastHeatupFactor	0	%	W	floatValue	min=1; max=100;
/heatingCircuits/hc1/suWiSwitchMode	automatic		W	stringValue	off (0); automatic (1); forced (2);
/heatingCircuits/hc1/currentOpModeInfo	ERROR
/heatingCircuits/hc1/cooling	-			refEnum	
/heatingCircuits/hc1/currentSuWiMode	off			stringValue	off (0); forced (1); cooling (2);
/heatingCircuits/hc1/holidayMode	-			refEnum	
/heatingCircuits/hc1/holidayMode/activated				stringValue	(0); hm1 (1); hm2 (2); hm3 (3); hm4 (4); hm5 (5);
/heatingCircuits/hc1/status	ACTIVE			stringValue	INACTIVE (0); ACTIVE (1); 

Aber bei der Gelegenheit habe ich gesehen, dass ich die falschen things gepostet habe

Code: Alles auswählen

Number  bud_HCTest1      	"TEST1-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:actualSupplyTemperature" [scale="Celsius"]}
Number  bud_HCTest2      	"TEST2-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:2:actualSupplyTemperature" [scale="Celsius"]}
Number  bud_HCTest3      	"TEST3-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:3:actualSupplyTemperature" [scale="Celsius"]}
Number  bud_HCTest4      	"TEST4-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:hc1:actualSupplyTemperature" [scale="Celsius"]}
Number  bud_HCTest5      	"TEST5-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:hc1:actualSupplyTemperature" [scale="Celsius"]}
Number  bud_HCTest6      	"TEST6-Temperatur [%.1f %unit%]"          <temperature>   (G_Num)       	["Control", "Temperature"]  	{channel="km200:heatingCircuit:KM200KG:1:hc1_actualSupplyTemperature" [scale="Celsius"]}
Vielleicht hat wer eine funktionierende Variante, bei der er aus dem KM200 Daten der Heizkreise rausliest.

Re: OpenHAB3 und KM200

Verfasst: 15. Okt 2021 20:00
von udo1toni
Also so, wie ich das interpretiere (Wissen ist Macht - nichts wissen macht auch nichts), musst Du die zur Verfügung stehenden Channel auf eine andere Weise ermitteln. Dazu wechselst Du in die UI (bei OH2 Paper UI, bei OH3 Main UI) und schaust Dir dort das angelegte Thing an. Findest Du dort nur den einen Channel, den Du schon hast, dann schau noch mal nach, ob es eventuell versteckte Channel gibt (bei OH2 auf der rechten Seite "Show more", bei OH3 in der Channelansicht zum Thing oben rechts "Show advanced") Wenn dort zusätzliche Channel gelistet werden, steht auch jeweils dabei, wie die UIDs der Channel heißen.
Alternativ kannst Du, wenn Du VSCode in Verbindung mit dem openHAB Plugin nutzt (und dieses korrekt eingerichtet hast) die möglichen Channel auch direkt über die Things Liste einfügen.

Channel, die dort nicht auftauchen, werden aber nicht funktionieren. Da wäre die einzige Möglichkeit, sich mit dem Entwickler in Verbindung zu setzen und diesen beim ergänzen der notwendigen Funktionen zu unterstützen ;)

Re: OpenHAB3 und KM200

Verfasst: 15. Okt 2021 22:23
von Chris5020
Hallo Udo,
danke für das Feedback, grundsätzlich dürfte dein Ansatz gut sein, in die Richtung bin ich auch schon unterwegs gewesen.

Und das liefert ein Problem, über das ich auch bei Google was gefunden habe. Das Binding dürfte grundsätzlich einen Bug haben, vor allem wenn mehr als 1 Heizkreis existiert.

Im "Thing Explorer" vom OH3 liefert das Heizkreis den Fehler
>HANDLER_INITIALIZING_ERROR
>Duplicate channels km200:heatingCircuit:KM200KG:1:temperatureLevels_eco

Den Button "Show Advanced" finde ich irgendwie nur auf Screenshots, nicht aber in meinem OH 3.1

Blöderweise bekomme ich das ganze auch mit nur einem konfigurierten Kreis nicht zum Laufen.

Irgendwie habe ich bei Google keinen gefunden, der das zum Laufen gebraucht hat, irgendwie haben alle die gleichen Probleme.
Hab mal versucht Kai Kreuzer anzuschreiben, vielleicht hilft das was.

danke für eure Unterstützung!

Re: OpenHAB3 und KM200

Verfasst: 15. Okt 2021 23:37
von udo1toni
Autor des ursprünglichen Bindings ist Markus Eckhardt, nicht Kai Kreuzer. Leider finde ich keine Mailadresse dazu. Es gibt aber noch einige andere Leute, die an dem Binding rumgeschrieben haben.
Hast Du denn mal versucht, die Bridge automatisch anlegen zu lassen, also ohne über die Textdatei zu gehen? Es geht dabei in erster Linie darum, zu testen, ob es über Autodiscovery funktioniert.

Re: OpenHAB3 und KM200

Verfasst: 16. Okt 2021 08:16
von Chris5020
Ich habe jetzt mal Things und items vom KM200 gelöscht, das Binding ist aktiv. Wie kann ich das "Autodiscover" anstossen, dass es das Device wieder findet, oder geht das nicht mehr, wenn es mal im Code angelegt war?
Eigentlich sollte das Modul Autodiscover unterstützen

Re: OpenHAB3 und KM200

Verfasst: 16. Okt 2021 08:23
von Chris5020
Wer lesen kann ist im Vorteil :)

Wenn man beim Anlegen des Things auf Scan geht, dann findet er das Gerät, nach Angabe des PK geht es auf INIT und das dauert dann ein paar Minuten.
Dann sagt er aber "this thing has no channels" :(

Gut, dann muss man nochmal auf "Add Thing" und Scan, dann findet er weitere Elemente.
Mal sehen wie ich damit weiter komme

Re: OpenHAB3 und KM200

Verfasst: 16. Okt 2021 19:01
von Chris5020
Kurzes Update:
Habt die Textkonfiguration jetzt gelöscht, erst das Bindung discovered, dann die Unterdinge.

AKtuell sieht es so aus als habe ich Zugriff auf alle Elemente.
Bin mal gespannt, ob ich das auch wieder in Text bekomme, werde weiter berichten

Re: OpenHAB3 und KM200

Verfasst: 17. Okt 2021 01:03
von udo1toni
Die Überführung in Text sollte kein großes Problem darstellen. Die einfachste Methode führt über die API. Du liest die Daten des Thing (bzw. der Things) über die API aus und erhältst ein JSON Objekt. Damit bekommst Du alle Parameter, die durch Autodiscovery gesetzt wurden.
Das Format ist natürlich komplett anders, aber Du hast damit zuverlässig alle Parameternamen und wie sie gesetzt sind.
Damit kannst Du dann recht einfach die entsprechenden Things mittels Text nachbilden.