NEWS
Adapter für Buderus KM200 (und eventuell auch anderen KMxxx)
-
Hi!
Ich hatte den Adapter am laufen und eben auf 2.0.3 aktualisiert, Seit dem läufts nicht mehr
Hier mal ein Ausschnitt aus dem LOG:km200.0 2019-04-07 16:16:08.625 info Adapter km200 initialization finished with 5 states. km200.0 2019-04-07 16:16:08.620 info Update State system err: 'KM200.get service parameter not as requested \'undefined\'' km200.0 2019-04-07 16:16:08.619 warn KM200.get service parameter not as requested 'undefined' km200.0 2019-04-07 16:16:08.617 info Update State solarCircuits err: 'KM200.get service parameter not as requested \'undefined\'' km200.0 2019-04-07 16:16:08.614 warn KM200.get service parameter not as requested 'undefined' km200.0 2019-04-07 16:16:08.610 info Update State notifications err: 'KM200.get service parameter not as requested \'undefined\'' km200.0 2019-04-07 16:16:08.607 warn KM200.get service parameter not as requested 'undefined' km200.0 2019-04-07 16:16:08.470 info Update State heatingCircuits err: 'KM200.get service parameter not as requested \'undefined\'' km200.0 2019-04-07 16:16:08.469 warn KM200.get service parameter not as requested 'undefined' km200.0 2019-04-07 16:16:08.465 info Update State dhwCircuits err: 'KM200.get service parameter not as requested \'undefined\'' km200.0 2019-04-07 16:16:08.465 warn KM200.get service parameter not as requested 'undefined' km200.0 2019-04-07 16:16:08.465 info debug: updateStates: 'all' @Sun Apr 07 2019 16:16:08 GMT+0200 (CEST) km200.0 2019-04-07 16:16:08.464 info Slow Interval=0 hours, Slow-List: km200.0 2019-04-07 16:16:08.464 info Fast Interval=1 min, Fast-List: dhwCircuits,heatingCircuits,notifications,solarCircuits,system km200.0 2019-04-07 16:16:08.464 info Interval=15 min, Norm-list: km200.0 2019-04-07 16:16:08.464 info KM200 found 5 states, get their values now. km200.0 2019-04-07 16:16:08.447 info debug: ChangeState ack:true of system = { error: SyntaxError: Unexpected token � in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapte km200.0 2019-04-07 16:16:08.402 info debug: ChangeState ack:true of solarCircuits = { error: SyntaxError: Unexpected number in JSON at position 1at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/my km200.0 2019-04-07 16:16:08.374 info debug: ChangeState ack:true of notifications = { error: SyntaxError: Unexpected token in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/m km200.0 2019-04-07 16:16:08.347 info debug: ChangeState ack:true of heatingCircuits = { error: SyntaxError: Unexpected token p in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter km200.0 2019-04-07 16:16:08.324 info debug: ChangeState ack:true of dhwCircuits = { error: SyntaxError: Unexpected token l in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myA km200.0 2019-04-07 16:16:08.304 info Services found: 5 km200.0 2019-04-07 16:16:08.273 info debug: Service[system]={ error: SyntaxError: Unexpected token � in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapter.js:376:24)at A. km200.0 2019-04-07 16:16:08.095 info debug: Service[solarCircuits]={ error: SyntaxError: Unexpected number in JSON at position 1at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapter.js:376:24 km200.0 2019-04-07 16:16:07.815 info debug: Service[notifications]={ error: SyntaxError: Unexpected token in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapter.js:376:2 km200.0 2019-04-07 16:16:07.336 info debug: Service[heatingCircuits]={ error: SyntaxError: Unexpected token p in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapter.js:376 km200.0 2019-04-07 16:16:06.966 info debug: Service[dhwCircuits]={ error: SyntaxError: Unexpected token l in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/@frankjoke/myadapter/myAdapter.js:376:24) km200.0 2019-04-07 16:16:06.806 info debug: add to blocked /.*.*holidayModes.*$/ km200.0 2019-04-07 16:16:06.805 info debug: add to blocked /^\/heatSource.*$/ km200.0 2019-04-07 16:16:06.805 info debug: add to blocked /.*.*switchPrograms.*$/ km200.0 2019-04-07 16:16:06.805 info debug: add to blocked /^\/recordings.*$/ km200.0 2019-04-07 16:16:06.804 info debug: add to blocked /^\/gateway.*$/ km200.0 2019-04-07 16:16:06.804 info debug: KM200 init(192.168.178.70, 248,59,132,195,101,188,251,55,236,148,73,176,66,75,4,74,34,58,122,107,162,95,152,176,0,135,118,148,109,122,214,54) done! km200.0 2019-04-07 16:16:06.804 info km200.0 address: http://192.168.178.70 km200.0 2019-04-07 16:16:06.804 info km200 starting main... km200.0 2019-04-07 16:16:06.803 info km200 initialization started... km200.0 2019-04-07 16:16:02.893 info starting. Version 2.0.3 in /opt/iobroker/node_modules/iobroker.km200, node: v8.11.1
Wo kann ich denn ansetzen?
Danke und Gruß
Micha
-
@micha68
Habs gefunden, Passwort war falschDanke für die Arbeit an dem Adapter!!!
-
Hi!
Was ich noch suche sind Datenpunkte ob die Speicherladepumpe, Zirkulationspumpe und die Heizungspumpe laufen.
Gibt es diese Werte?Danke und Gruß
Micha -
Ich befürchte, wenn du die blacklist leer lässt oder mit '+*' beschreibst kommen alle Punkte die der Adapter hergibt, wenn die dann nicht dabei sind dann ist die Info nicht abgreifbar.
-
Hi!
Alles klar! Ich schau noch mal durch, hatte aber auf die schnelle nichts gefunden.
Danke und Gruß
Micha
-
@micha68
Heizungspumpen lese ich mitheatingCircuits.hc1.pumpModulation heatingCircuits.hc2.pumpModulation
Speicherladepumpe funktioniert bei mir nicht.
Ich leseheatSources.actualDHWPower
Wenn der Wert > 0, dann läuft auch die Ladepumpe.
Die WW-Zirkulationspumpe ist nicht abfragbar und auch nicht schaltbar. -
Hi!
Super! Danke für die Tipps!
Ich bau mal schnell ne Grafik, ob die Datenpunkte passen.
Edit:
Passt!DANKE!
Gruß
Micha -
@ioTechnik
Hallo ioBrokerKann es sein das aus dem Datensatz "km200.0.heatSources.energyMonitoring.consumption" unplausble Werte aus der Kesselanlage gelesen werden. Jedenfalls scheint es bei mir seit Mitte März so. Bis dahin hatte ich sehr plausible Verbrauchsdaten je Brennerstart. Dann nur noch Mist. Der Zählerstand mal steigt er mal fällt er.
Kann das jemand nachvollziehen? -
@ioTechnik
Ja die Werte machen keinen Sinn mehr. Die recordings der Verbräuche sind bei mir mit 3 Prozent Genauigkeit identisch mit dem gemessenen Gasverbrauch. -
Ich lese mit Ausnahme der recordings genau die daten ab die der km liefert. Bei recordings krieg ich zwei were, Anzahl und Summe.
P. S far momentan rür tests aus, Liev km spktL mit 2fachem knoechelbruch und werde operiert... -
@tom57
Hallo tom57! wie liest du die recordings? bei mir sind es zahlenkolonnen. bin kein script-experte.
LG -
@ioTechnik
Ist bei mir etwas kompliziert. Ich habe mcrypt in node-red eingebunden und mache diese Auswertungen in node-red ohne den km200 Adapter.
D.h. ich lese mit https den imbedded Web-Adapter der Heizung, entschlüssele die Daten und berechne den Verbrauch pro Stunde / Tag / Monat schreibe diese dann mit SQL in eigene Datenstrukturen. Diese werden dann mit Flot-Diagrammen dargestellt.
Da ich einen Impulszähler am Gaszähler habe und mit dem Raspi in ioBroker auswerte, kann ich diese exakten Gasverbrauchswerte mit den Buderus-Werten vergleichen. Stimmen sehr genau überein. Ich stelle dann auch den Energieverbrauch für Warmwasser separat da:
(Rot: Verbrauch Gaszähler / Schwarze Linie Buderus / Blau Warmwasser:
In den recordings von Frank stimmen die Stunden und Tageswerte damit überein.
Die letzten Einträge der JSON-Struktur sind jeweils der aktuelle Tag bzw. Stunde und dann jeweils rückwärts. Die Monatswerte vom Adapter stimmen bei mir z.T. nicht (habe ich im Forum weiter oben angemerkt - 1.4.19). -
@tom57 Herzlichen Dank! Aber das ist mir zu speziell, bin eben kein Programmierer.
-
@ioTechnik Ich bin auch noch dabei mich in Javascript einzuarbeiten. Mit 62 Jahren hatte ich auch seit 35 Jahren nicht mehr programmiert ... JS ist speziell aber so langsam bekomme ich Durchblick.
Ich versuche gerade die Verbrauchsdaten im Skript aufzubereiten. Falls es klappt, stelle ich es zur Verfügung.
-
@tom57 Dann muss ich mich mit meinen 61 Lenzen ja auch noch anstrengen
-
@tom57 said in Adapter für Buderus KM200 (und eventuell auch anderen KMxxx):
@ioTechnik
Ist bei mir etwas kompliziert. Ich habe mcrypt in node-red eingebunden und mache diese Auswertungen in node-red ohne den km200 Adapter.
D.h. ich lese mit https den imbedded Web-Adapter der Heizung, entschlüssele die Daten und berechne den Verbrauch pro Stunde / Tag / Monat schreibe diese dann mit SQL in eigene Datenstrukturen. Diese werden dann mit Flot-Diagrammen dargestellt.
Da ich einen Impulszähler am Gaszähler habe und mit dem Raspi in ioBroker auswerte, kann ich diese exakten Gasverbrauchswerte mit den Buderus-Werten vergleichen. Stimmen sehr genau überein. Ich stelle dann auch den Energieverbrauch für Warmwasser separat da:
(Rot: Verbrauch Gaszähler / Schwarze Linie Buderus / Blau Warmwasser:
In den recordings von Frank stimmen die Stunden und Tageswerte damit überein.
Die letzten Einträge der JSON-Struktur sind jeweils der aktuelle Tag bzw. Stunde und dann jeweils rückwärts. Die Monatswerte vom Adapter stimmen bei mir z.T. nicht (habe ich im Forum weiter oben angemerkt - 1.4.19).Würdest du deinen "Genie Streich" mit uns teilen?
Das klingt sehr interessant, dann könnte man sich quasi das "mitschneiden" des Gaszählers ja sparen -
Hallo,
hat es schon mal jemand geschafft mit dem JSON Widget die "notifications" darzustellen?
Die sind Auszug:
[ { cat: 'L', act: 'H', dcd: '9H', ccd: 267, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'L', act: 'H', dcd: '3L', ccd: 214, orig: '0' }, { cat: 'B', act: 'H', dcd: '6L', ccd: 229, orig: '0' }, { cat: 'A', act: 'A', dcd: 'AA0', ccd: 811, orig: '8', t: '2019-04-16T03:59:00' }, { cat: 'A', act: 'A', dcd: 'AA1', ccd: 816, orig: '17', t: '2019-04-15T08:53:00' }, { cat: 'A', act: 'A', dcd: 'AA3', ccd: 816, orig: '33', t: '2019-04-15T08:53:00' }, { cat: 'A', act: 'A', dcd: 'AA0', ccd: 800, orig: '8', t: '2000-01-01T00:01:00' } ] -
@Breiti1234
Es scheint ein Array mit Werten wo man den Sinn halbwegs erahnen kann zu sein. Mit einer Tabelle kann man das darstellen, aber leider hab ich keine Ahnung wie man ein Widget schreibt das eine Tabelle darstellt. -
@Breiti1234
@frankjoke
Es wäre am Besten, wenn Frank irgendwann Zeit hat, das Speichern der Recordings als SQL-Einträge mit in den Adapter aufzunehmen. Das Umrechnen der Werte hatte ich ja bereits erläutert.
Ich habe nur die Möglichkeit mit SQL-Statements gefunden, da der setState Befehl ja immer die aktuelle Zeit nimmt. Also muss der SQL-Adapter installiert sein und dann kann mit enableStates die Fortschreibung aktiviert werden (erzeugt einen Eintrag in der Tabelle datapoints)
So könnte im Adapter anstelle des JSON-Arrays als Werte, diese als SQL-Datensätze erzeugt werden (ts muss dann aus der Array-Position berechnet werden).
Ich habe ein Testprogramm in javascript am laufen .... muss ich aber noch überarbeiten, bevor ich es teilen kann. -
Für diejenigen die es interessiert stelle ich gerne mein Script zur Verfügung, welches den Gesamtenergieverbrauch und den Warmwasseranteil per SQL in die States schreibt. (Zur Darstellung mit Flot). Voraussetzung ist ein aktiver SQL-Adapter mit der Instanz 0 (sql.0).
Es werden States erzeugt und dann für sql.0 enabled.
Es kann sein, dass bei der Javascript-Instanz mcrypt als zusätzliches NPM Modul eingefügt werden muss. Im code wird vorausgesetzt, dass javascript als Instanz 0 läuft. ggfs. anpassen.Ich habe noch ein Timing-Problem, da die States angelegt, dann enabled und danach in der Tabelle datapoints nach der zugehörigen id gesucht wird. Beim ersten Durchlauch können Fehlermeldungen auftreten, da die Datenbankeinträge noch nicht vorhanden sind. Ich habe die beiden Zeilen (create_states, enable_states) nach der Anlage dann auskommentiert.
Wie gesagt, ich bin noch am Anfang JS richtig zu verstehen. Also bitte gerne den Code verbessern.
Im Code sind die IP-Adresse des Buderus-Gateways und die Passwörter analog dem Adapter anzupassen.
Buderus Recordings.txtSchreibt bitte, ob es bei Euch funktioniert.
Grüße Thomas