NEWS
Adapter für Buderus KM200 (und eventuell auch anderen KMxxx)
-
@tom57
Bitte prüfe ob das private Passwort leer ist, es darf nicht leer sein. Wenn du von deiner Alten Installation den Accesskey übernommen hast (Im Feld Gerätepasswort) dann ist zwar egal was im privaten Passwort drinsteht aber es darf nicht leer sein!
Wenn der Accesskey oder die Gerätepasswort/Privates-Passwort -Kombination nicht stimmt dann komt sowas im log:
km200.0 2019-03-23 20:49:16.509 info KM200 found 6 states, get their values now. km200.0 2019-03-23 20:49:16.487 info debug: Make State ack:true system = '{ error: SyntaxError: Unexpected token h in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_modules/@fr km200.0 2019-03-23 20:49:16.468 info debug: Make State ack:true solarCircuits = '{ error: SyntaxError: Unexpected token v in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_modu km200.0 2019-03-23 20:49:16.437 info debug: Make State ack:true recordings = '{ error: SyntaxError: Unexpected token � in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_modules km200.0 2019-03-23 20:49:16.416 info debug: Make State ack:true notifications = '{ error: SyntaxError: Unexpected token ܀ in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_modu km200.0 2019-03-23 20:49:16.395 info debug: Make State ack:true heatingCircuits = '{ error: SyntaxError: Unexpected token � in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_mo km200.0 2019-03-23 20:49:16.374 info debug: Make State ack:true dhwCircuits = '{ error: SyntaxError: Unexpected token ϱ in JSON at position 0at JSON.parse (<anonymous>)at Function.J (/opt/iobroker/node_modules/iobroker.km200/node_module km200.0 2019-03-23 20:49:16.371 info Services found: 6@frankjoke
Ich bin am Verzweifeln. Wie ich unter dem Thema "km200 - findet nicht die service parameter" beschrieben habe, komme ich mit Deinem Adapter nicht weiter. Ich erhalte ein ähnliches Bild wie Du es beschrieben hast. Ich habe alles versucht, die Heizung zurückgesetzt und neues Passwort vergeben, benutze die neue Version, mit Gerätepasswort und habe auch das private Passwort eingetragen. Leider erhalte ich immer die Fehlermeldung. Was kann ich noch falsch machen? -
Guten morgen,
ich hatte den adapter vorgestern ans laufen bekommen, habe auch die korrekten Werte usw ablesen können.Gestern Abend habe ich dran rumgespielt um einige Objekte anzulegen und die Blacklist geändert und den Datenpunktordner "recordings"entfernt. Heute morgen schaue ich ins log vom iobroker und sehe das hier:
t.iobrokerpi 2019-10-28 07:21:02.706 info Restart adapter system.adapter.km200.0 because enabled host.iobrokerpi 2019-10-28 07:21:02.705 error instance system.adapter.km200.0 terminated with code 7 (Adapter already running) host.iobrokerpi 2019-10-28 07:21:01.470 info instance system.adapter.km200.0 started with pid 11760 host.iobrokerpi 2019-10-28 07:20:31.404 info Restart adapter system.adapter.km200.0 because enabled host.iobrokerpi 2019-10-28 07:20:31.403 error instance system.adapter.km200.0 terminated with code 7 (Adapter already running) host.iobrokerpi 2019-10-28 07:20:30.194 info instance system.adapter.km200.0 started with pid 11734 host.iobrokerpi 2019-10-28 07:20:00.163 info Restart adapter system.adapter.km200.0 because enabled host.iobrokerpi 2019-10-28 07:20:00.161 error instance system.adapter.km200.0 terminated with code 7 (Adapter already running) host.iobrokerpi 2019-10-28 07:19:58.916 info instance system.adapter.km200.0 started with pid 11723 host.iobrokerpi 2019-10-28 07:19:28.885 info Restart adapter system.adapter.km200.0 because enabled host.iobrokerpi 2019-10-28 07:19:28.885 error instance system.adapter.km200.0 terminated with code 7 (Adapter already running) host.iobrokerpi 2019-10-28 07:19:27.653 info instance system.adapter.km200.0 started with pid 11696 host.iobrokerpi 2019-10-28 07:18:57.622 info Restart adapter system.adapter.km200.0 because enabled host.iobrokerpi 2019-10-28 07:18:57.620 error instance system.adapter.km200.0 terminated with code 7 (Adapter already running)Ich habe meines Wissens nach nichts am Code o.ä. geändert.
Was hab ich kaputt gemacht?
Nils@jmeister79 , die Fehlermeldung gibt doch das Problem aus. Der Adapter läuft schon und du startest diesen nochamls. Entweder stoppst du die Instanz über Komandozeile oder Du startest ioBroker komplett neu. Ist vielleicht am einfachsten.
-
@jmeister79 , die Fehlermeldung gibt doch das Problem aus. Der Adapter läuft schon und du startest diesen nochamls. Entweder stoppst du die Instanz über Komandozeile oder Du startest ioBroker komplett neu. Ist vielleicht am einfachsten.
-
Hab mal neu gestartet, vielleicht hab ich zuviel rumgespielt.
Könnt ihr mir mal erklären was die Datenpunkte bedeuten, bei den meißten hab ich es rausbekommen.
Ganz besonders der Punkt Consumption bereitet mir kopfzerbrechen:
Tag 1:74,8 kWh
Tag2: 230,1kWh
Tag3: 516 kWhZwischen Tag 2 und 3 hab ich 9,25m³ Gas verbaucht aber er redet von 286kWh.
Öhm.....
Nils
-
Ich hab da mal eine Frage :)
Der Datenpunkt km200.0.heatSources.supplyTemperatureSetpoint sollte die eingestellte Vorlauftemperatur anzeigen? Bei mir ist 50°C eingestellt, der Datenpunkt zeigt aber meist nur 5°C. (Sporadisch mal 50) Verwende 2.03
Zum Adapter: Dieser hat meiner Therme ganz neues Leben eingehaucht. Danke und Daumen hoch.
-
Hi, hat keiner eine Meinung zu Consumption? Der Wert wird jetzt sogar manchmal wieder kleiner...
Vielleicht ist das der Verbrauch aller Buderus System im nähen PLZ Bereich? LOLWas Anderes: Kann es sein, dass Datenpunkte ab und an verschwinden?
Ich hatte neulich noch zwei Datenpunkte:
km200.0.heatingCircuits.hc1.temperatureLevels.comfort2
und
km200.0.heatingCircuits.hc1.temperatureLevels.ecoDie haben die Tag und Absenkungstemperatur der PRogramme geregelt.
Jetzt
War das ein Update des KM200 oder sogar der ganzen Heizung?
Nils
-
Hi, hat keiner eine Meinung zu Consumption? Der Wert wird jetzt sogar manchmal wieder kleiner...
Vielleicht ist das der Verbrauch aller Buderus System im nähen PLZ Bereich? LOLWas Anderes: Kann es sein, dass Datenpunkte ab und an verschwinden?
Ich hatte neulich noch zwei Datenpunkte:
km200.0.heatingCircuits.hc1.temperatureLevels.comfort2
und
km200.0.heatingCircuits.hc1.temperatureLevels.ecoDie haben die Tag und Absenkungstemperatur der PRogramme geregelt.
Jetzt
War das ein Update des KM200 oder sogar der ganzen Heizung?
Nils
@jmeister79 Habe den Datenpunkt mal schreiben lassen und die Brennzeit der Flamme und die Leistung actualPower darüber gelegt.
Schlauer wird man dadurch aber nicht, was den Datenpunkt Consumption betrifft.

Sieht nach einem gerechneten Wert aus.
Über einen Tag steigt die Kurve aber immer an.
-
@jmeister79 Habe den Datenpunkt mal schreiben lassen und die Brennzeit der Flamme und die Leistung actualPower darüber gelegt.
Schlauer wird man dadurch aber nicht, was den Datenpunkt Consumption betrifft.

Sieht nach einem gerechneten Wert aus.
Über einen Tag steigt die Kurve aber immer an.
Den Wert Consumption könnt ihr vergessen .....
Verbrauchswerte kommen aus dem Array Recordings .
Schaut Euch mal meine Antworten vom April 2019 an. (zurückblättern)Ich schreibe die Recordingswerte in eigene Datenobjekte per SQL um diese dann per Flot auszuwerten.
Am 29.4. habe ich ein Beispiel-Script gepostet !(Läuft bei mir seit vielen Monaten - Werte sind fast identisch mit der Auswertung vom Gaszähler. So macht es auch das Buderus Portal)
-
Den Wert Consumption könnt ihr vergessen .....
Verbrauchswerte kommen aus dem Array Recordings .
Schaut Euch mal meine Antworten vom April 2019 an. (zurückblättern)Ich schreibe die Recordingswerte in eigene Datenobjekte per SQL um diese dann per Flot auszuwerten.
Am 29.4. habe ich ein Beispiel-Script gepostet !(Läuft bei mir seit vielen Monaten - Werte sind fast identisch mit der Auswertung vom Gaszähler. So macht es auch das Buderus Portal)
@tom57 Super. Werde das mal anschauen. Ich bin gerade noch am Ausdünnen der Werte, ist ja vieles doppelt oder überflüssig oder inaktiv.
Interessanterweise ist mir aufgefallen, dass das JSON Objekt der Schaltprogramme fehlerhaft ist, oder das Widget das nicht richtig ausliest, hab mir jetzt damit geholfen, es bei änderung (bzw momentan minütlich) über ein Javascript durch string replace in html umbauen zu lassen:
createState("javascript.0.Heizung.ProgramA_HTML", 0.0, {name: "HTML Tabelle Program A", type: 'string'}); schedule("* * * * *", function () { var header ="<table><tr><th>Wochentag</th><th>Solltemperatur</th><th>Schaltzeit(min)</th></tr>"; var worker = getState('km200.0.heatingCircuits.hc1.switchPrograms.A').val; worker = worker.replace(/dayOfWeek:/g, ""); worker = worker.replace(/setpoint:/g, ""); worker = worker.replace(/time:/g, ""); worker = worker.replace(/\ /g, ""); worker = worker.replace(/\'/g, ""); worker = worker.replace(/\[/g, ""); worker = worker.replace(/\]/g, ""); worker = worker.replace(/\{/g, "<tr><td>"); worker = worker.replace(/\}/g, "</td></tr>"); worker = worker.replace(/\,/g, "</td><td>"); worker = header.concat(worker); setState("javascript.0.Heizung.ProgramA_HTML", worker, true); });Jetzt fällt mir grad, ein, dass ich natürlich auch das JSON Objekt korrigieren könnte (innerhalb einer Hilfsvariablen) da ja die eifnachen Anführungsstriche offenbar falsch sind, bzw die fehlenden auch problematisch.
Ich weß, dass man das viel besser programmieren könnte, aber erstmal hilfts.
Lg
Nils -
Hier nochmal beide :
Einmal json, einmale htmlcreateState("javascript.0.Heizung.ProgramA_HTML", 0.0, {name: "HTML Tabelle Program A", type: 'string'}); createState("javascript.0.Heizung.ProgramA_json", 0.0, {name: "JSON Tabelle Program A", type: 'string'}); schedule("* * * * *", function () { var header ="<table><tr><th>Wochentag</th><th>Solltemperatur</th><th>Schaltzeit(min)</th></tr>"; var worker = getState('km200.0.heatingCircuits.hc1.switchPrograms.A').val; worker = worker.replace(/dayOfWeek:/g, ""); worker = worker.replace(/setpoint:/g, ""); worker = worker.replace(/time:/g, ""); worker = worker.replace(/\ /g, ""); worker = worker.replace(/\'/g, ""); worker = worker.replace(/\[/g, ""); worker = worker.replace(/\]/g, ""); worker = worker.replace(/\{/g, "<tr><td>"); worker = worker.replace(/\}/g, "</td></tr>"); worker = worker.replace(/\,/g, "</td><td>"); worker = header.concat(worker); setState("javascript.0.Heizung.ProgramA_HTML", worker, true); var worker2 = getState('km200.0.heatingCircuits.hc1.switchPrograms.A').val; worker2 = worker2.replace(/\'/g, ""); worker2 = worker2.replace(/\ /g, ""); worker2 = worker2.replace(/\{/g, '{"'); worker2 = worker2.replace(/\}/g, '"}'); worker2 = worker2.replace(/\:/g, '":"'); worker2 = worker2.replace(/\,/g, '","'); worker2 = worker2.replace(/\}","{/g, '},{'); setState("javascript.0.Heizung.ProgramA_json", worker2, true); });Nils
-
Hi,
basic tableNils
-
Moin,
Unter welchem Objekt kann ich die Zirkulationspumpe steuern?
Ich habe das Zeitprogramm an der Therme deaktiviert. Ich sehe aber keine Änderung unter den Objekten. Ziel soll sein die Pumpe manuell über HomeKit-yahka zu schalten. -
@frankjoke
Ich bin am Verzweifeln. Wie ich unter dem Thema "km200 - findet nicht die service parameter" beschrieben habe, komme ich mit Deinem Adapter nicht weiter. Ich erhalte ein ähnliches Bild wie Du es beschrieben hast. Ich habe alles versucht, die Heizung zurückgesetzt und neues Passwort vergeben, benutze die neue Version, mit Gerätepasswort und habe auch das private Passwort eingetragen. Leider erhalte ich immer die Fehlermeldung. Was kann ich noch falsch machen?@Werner303 Problem ist jetzt gelöst:
Resetten des Buderus KM200. Löschung aller Daten bei Bosch. Neuanmeldung der Anlage. Gesamtzurücksetzung aller km200 Daten im ioBroker. Jetzt funktioniert es einwandfrei. -
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@tom57
ich habe mir mal dein Script angeschaut, hut ab, dass ist wirklich sehr gut geworden (und du sagst du bist nicht so fit in js, dafür ist das hammer)Ich stelle jetzt mal ganz ketzerisch die Frage warum nicht einfach zB den Datenpunkt "km200.0.recordings.heatSources.actualCHPower._Hours" schaust und bei änderung den jüngsten Wert ausliest und in eine Variable schreibst, die dann mit history überwachen.
Die kodierung ist ja relativ simpel.Wenn ich jetzt nicht etwas übersehen habe dann würde ich das zu morgen mal kodieren.
LG
Nilsps.: Ich hab nach ewigem Versuchen endlich hinbekommen die Programme zu visualisieren. Interesse am Script?
Ich bastel grad daran sie aus dem VIS zu Editieren.
-
@tom57
ich habe mir mal dein Script angeschaut, hut ab, dass ist wirklich sehr gut geworden (und du sagst du bist nicht so fit in js, dafür ist das hammer)Ich stelle jetzt mal ganz ketzerisch die Frage warum nicht einfach zB den Datenpunkt "km200.0.recordings.heatSources.actualCHPower._Hours" schaust und bei änderung den jüngsten Wert ausliest und in eine Variable schreibst, die dann mit history überwachen.
Die kodierung ist ja relativ simpel.Wenn ich jetzt nicht etwas übersehen habe dann würde ich das zu morgen mal kodieren.
LG
Nilsps.: Ich hab nach ewigem Versuchen endlich hinbekommen die Programme zu visualisieren. Interesse am Script?
Ich bastel grad daran sie aus dem VIS zu Editieren.
@jmeister79
Hallo Nils, das sieht ja interessant aus. Ich würde mich freuen, wenn du das Skript / Vis View zur Verfügung stellen könntest.Zu den Recordings:
Ich benutze den km200 Adapter schon lange und hatte eine Menge Probleme damit, dass die States z.T. neu angelegt wurden und dann unter anderen ID's in der SQL-Datenbank auftauchten. Auch war mir der minimale Aktualisierungszeitraum zu groß. Also nutze ich seit über einem Jahr eigene Skripts und eine eigene Datenstruktur mit den für mich wichtigen Daten.So auch bei den Recordings:
Die Recordings liefern Verbrauchsdaten für den Verbrauch (Gesamt / Warmwasseraufbereitung) für Stunden je Tag, Tag je Monat und Monat je Jahr. Also kannst Du z.B. auch die Monatsdaten der Vergangenheit lesen. Z.B. die Monatsverbräuche des letzten Jahres. Im Adapter gab es dabei leichte Unstimmigkeiten bei der Umrechnung auf die Anzahl der Tage pro Monat - Ist vielleicht behoben, dass weiss ich nicht.Der Vorteil keine eigene Fortschreibung zu implementieren ist es, dass die Verbrauchsdaten auch stimmen, wenn ioBroker down ist bzw. upgedated wird und dass die Daten mit denen des Portals übereinstimmen.
Bei mir stimmen die Daten mit ca. 1% Abweichung mit dem gemessenen Gasverbrauch überein (Logano Plus KB192i mit IP intern).Ich hatte vor der Installation des Buderus Kessels die Heizungssteuerung selbst programmiert und in VIS dargestellt. Nun mit dem Buderus-Kessel habe ich die Darstellung nahezu 1:1 übernommen und versucht die Regelungsparameter und die Heizungspumpen zu optimieren. Dazu lese ich ca. 10 Werte alle 30 Sekunden aus.
So sieht das dann aus mit den Eingabewerten:
Grüße Thomas
-
@jmeister79
Hallo Nils, das sieht ja interessant aus. Ich würde mich freuen, wenn du das Skript / Vis View zur Verfügung stellen könntest.Zu den Recordings:
Ich benutze den km200 Adapter schon lange und hatte eine Menge Probleme damit, dass die States z.T. neu angelegt wurden und dann unter anderen ID's in der SQL-Datenbank auftauchten. Auch war mir der minimale Aktualisierungszeitraum zu groß. Also nutze ich seit über einem Jahr eigene Skripts und eine eigene Datenstruktur mit den für mich wichtigen Daten.So auch bei den Recordings:
Die Recordings liefern Verbrauchsdaten für den Verbrauch (Gesamt / Warmwasseraufbereitung) für Stunden je Tag, Tag je Monat und Monat je Jahr. Also kannst Du z.B. auch die Monatsdaten der Vergangenheit lesen. Z.B. die Monatsverbräuche des letzten Jahres. Im Adapter gab es dabei leichte Unstimmigkeiten bei der Umrechnung auf die Anzahl der Tage pro Monat - Ist vielleicht behoben, dass weiss ich nicht.Der Vorteil keine eigene Fortschreibung zu implementieren ist es, dass die Verbrauchsdaten auch stimmen, wenn ioBroker down ist bzw. upgedated wird und dass die Daten mit denen des Portals übereinstimmen.
Bei mir stimmen die Daten mit ca. 1% Abweichung mit dem gemessenen Gasverbrauch überein (Logano Plus KB192i mit IP intern).Ich hatte vor der Installation des Buderus Kessels die Heizungssteuerung selbst programmiert und in VIS dargestellt. Nun mit dem Buderus-Kessel habe ich die Darstellung nahezu 1:1 übernommen und versucht die Regelungsparameter und die Heizungspumpen zu optimieren. Dazu lese ich ca. 10 Werte alle 30 Sekunden aus.
So sieht das dann aus mit den Eingabewerten:
Grüße Thomas
@tom57
krass, wie genial ist denn bitte diese Visualisierung.
Daran scheitert es bei mir immer, ich hab jede menge ideen der Asuwertung aber die Darstellung: da fehlt mir kreativität.Das Programm der grafischen auswertung sit n JS. ziemlich wirr noch ich würde es gerne noch optimieren und anpassbar machen.
kann den Code aber gerne schonmal posten
Nils
-
Hi,
kurze zwischenfrage:
was beudeutet das denn jetzt?
habe ich bei einigen datenpunkten
km200.0 2019-11-13 10:02:50.315 info Update { 'recordings.heatSources.actualCHPower._Hours':{ type: 'state',id: 'recordings.heatSources.actualCHPower._Hours',common:{ id: 'recordings.heatSources.actualCHPower._Hours',name: 'recordings.h km200.0 2019-11-13 10:02:49.987 info Update { 'recordings.heatSources.actualCHPower._Hours':{ type: 'state',id: 'recordings.heatSources.actualCHPower._Hours',common:{ id: 'recordings.heatSources.actualCHPower._Hours',name: 'recordings.h km200.0 2019-11-13 10:02:49.465 warn Set KM200 err: 'request for http://192.168.178.35/recordings/heatSources/actualDHWPower/_Hours had status 404/Not Found other than supported 200,204' km200.0 2019-11-13 10:02:49.159 info Update { 'recordings.dhwCircuits.dhw1.actualTemp._Hours':{ type: 'state',id: 'recordings.dhwCircuits.dhw1.actualTemp._Hours',common:{ id: 'recordings.dhwCircuits.dhw1.actualTemp._Hours',name: 'record