NEWS
Adapter für Buderus KM200 (und eventuell auch anderen KMxxx)
-
@fisch said in Adapter für Buderus KM200 (und eventuell auch anderen KMxxx):
//verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.system.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true); var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true); createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'}); }
bekomme error:
javascript.0 (21539) script.js.Heizung.Verbrauch compile failed:
at script.js.Heizung.Verbrauch:6 -
mmmm leider meldet das Skript bei mir in Zeile 6 Fehler...übrigens habe ich doch keine Pfade ändern müssen..genauso wie in deinem Skript...
Hast du vielleicht noch eine Idee?
-
natürlich müssen die createstate am anfang sein. Sonst hast du ja keinerlei states.
auch brauchst du n trigger, sonst wird da garnichts ausgeführt.ichs chick dir dann mal das ganze programm, dies war ja nur der teil der die berechnung asuführt, das ist bei mir in einem riesen programm drin, dass alle meine verbrauchsberechnungen ausführt
-
hab den rest mal rausgeworfen.
ohne trigger (hier minülich zum debuggen) würde das programm doch niemals ausgeführt werden.Du kannst mal nachsehen ob du es evtl nur einmal am tag (vielleicht um 00:05) ausführen willst
createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'}); schedule("* * * * *", function () { //verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true); var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true); } });
-
hey vielen dank...das du mir hilfst ..brauvhe nur die werte in iobroker..weiterverarbeitung in nodered ist klar...
habe jetzt Gensau das Skript genommen und erhalte die Fehlermeldung...
-
hm..
nehmen wir das mal auseinanderdie states am anfang wurden angelegt? Kannst Du sie sehen?
Die drei werte die ich in der FOR Schleife abfrage gibt es auch?
km200.0.recordings.heatSources.actualCHPower._Days usw?was ich grad noch sehe:
Zeile 24 bis 29 müssen raus.
hatte ja gesagt, es ist teil eines großen scripts bei mircreateState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); schedule("* * * * *", function () { //verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); } });
die yesterday werte brauchst du evtl auch nicht
-
@jmeister79 said in Adapter für Buderus KM200 (und eventuell auch anderen KMxxx):
createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); schedule("* * * * *", function () { //verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); } });
so habe jetzt nur mal die states angelegt mitten ersten drei Zeilen von dir...
wenn ich alles auf einmal reinpacke bricht das Skript ab...mitd er Fehlermeldung..
-
@fisch said in Adapter für Buderus KM200 (und eventuell auch anderen KMxxx):
createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); schedule("* * * * ", function () { //verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, ""); var tempArray = temp.split(","); var value1 = Math.round(100tempArray.slice(-1))/100; //letztes element: heute setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); } });
git es denn die werte de du abfragst als objekte im km200 adapter?
-
siehe screenshot
-
@fisch jetzt sehe ich es.
escape doch mal bitte in den replace zeilen die drei characters
so
temp = temp.toString().replace(/[/g, ""); temp = temp.toString().replace(/]/g, ""); temp = temp.toString().replace(/\ /g, "");
-
verdammt hier schluckt er die "" also:
vor [ , ] udn das leerzeichen ejweil ein \Sorry hab übersehen, dass er das verschluckt hat
-
sorry ich , dass ich es nicht kapiere ist es in Zeile 12/13/14 so schonmal richtig?
createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'}); createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'}); schedule("* * * * *", function () { //verbrauch heizung var powertype =['actualCHPower','actualDHWPower','actualPower'] for(var n=0; n<3; n++){ var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val; temp = temp.toString().replace(//[/g, /""); temp = temp.toString().replace(//]/g, /""); temp = temp.toString().replace(//\ /g, /""); var tempArray = temp.split(","); var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true); } });
Jetzt meckert er bei Zeile 15
javascript.0 (10765) script.js.Skript_1 compile failed:
at script.js.Skript_1:15 -
andersrum
-
ich glaube es geht...moment
-
ichs agte doch man kann es nicht posten. Darum als Bild.
Ich fidne du solltest erstmal blockly machen und dann die mal in JS switchen und guckenw as da steht und dichs tück für stück vortasten.
Es gibt gute Online Editoren dafür:
-
wow es geht @jmeister79
vielen vielen dank für deine Geduld!!!
was würdest du als
schedule "* * * * *" nehmen? -
ich hatte zum debuggen minütlich. Du willst es ja einmal am Tag machen also würde ich 5 0 * * * (00:05)
Hier, nutze ich auch jedesmal aufs neue;-)
https://crontab.guru/Hab gern geholfen, die anderen haben hier ja auch ejde Menge Geduld mit mir.
-
Hab auf die schnelle leider keine Möglichkeit gefunden, hier im Thread zu suchen, deshalb frage ich hier mal:
Kann ich mit diesem Adapter eine Bosch Anlage mit CW400/MB LAN2 steuern? Wenn ja, geht das über die Cloud oder eine API im lokalen LAN? -
Vielen Dank für den Adapter. Habe ihn auch seit heute morgen im Einsatz.
Benutze ihn bisher ganz passiv und beobachte mal alle Werte.
Frage: Kann ich mir den Aussensensor sparen wenn ich irgendwelche Werte über iobroker in den Adapter schreibe? Hab da noch nichts gefunden.Ich habe dafür einige wiederkehrende Fehlermeldungen im Adapter, deshalb habe ich mal mein Log angehängt:
km200.0 2019-11-28 13:23:01.024 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 13:23:01.024 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 12:53:01.042 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 12:53:01.041 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 12:23:00.990 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 12:23:00.989 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 11:53:01.047 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 11:53:01.046 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 11:23:01.025 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 11:23:01.024 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 10:53:01.022 info (50449) Update State 7 err: TypeError: Cannot read property 'switchPoints' of undefinedat km200.get.then (/opt/iobroker/node_modules/iobroker.km200/km200.js:556:35)at process._tickCallback (internal/ km200.0 2019-11-28 10:53:01.022 warn (50449) Skip service data of /dhwCircuits/dhw1/switchPrograms/A km200.0 2019-11-28 09:22:59.452 info (50449) Adapter km200 initialization finished with 116 states. km200.0 2019-11-28 09:22:29.949 info (50449) Slow Interval=6 hours, Slow-List: recordings.dhwCircuits.dhw1.actualTemp._Days,recordings.dhwCircuits.dhw1.actualTemp._Months,recordings.heatSources.actualCHPower._Days,recordings.heatSources km200.0 2019-11-28 09:22:29.949 info (50449) Fast Interval=2 min, Fast-List: dhwCircuits.dhw1.actualTemp,heatSources.actualModulation,heatSources.actualPower,heatSources.hs1.actualModulation,heatSources.hs1.actualPower,heatingCircuits.h km200.0 2019-11-28 09:22:29.949 info (50449) Interval=30 min, Norm-list: dhwCircuits.dhw1.charge,dhwCircuits.dhw1.chargeDuration,dhwCircuits.dhw1.currentSetpoint,dhwCircuits.dhw1.holidayMode.activated,dhwCircuits.dhw1.operationMode,dhwC km200.0 2019-11-28 09:22:29.944 info (50449) KM200 found 116 states, get their values now. km200.0 2019-11-28 09:22:28.374 info (50449) Services found: 123 km200.0 2019-11-28 09:21:36.805 info (50449) km200.0 address: http://192.168.178.155 km200.0 2019-11-28 09:21:36.804 info (50449) km200 initialization started... km200.0 2019-11-28 09:21:36.669 info (50449) starting. Version 2.0.3 in /opt/iobroker/node_modules/iobroker.km200, node: v10.16.3
-
Ich habe mit meinem Heizungsinstallateur gesprochen. Ich habe ihn gefragt wie ich meine Therme Buderus GB172 24 kW Logamax ohne Wasserspeicher einstellen soll. Da ich über Homematic Heizkörperthermostate die Raumtemperatur einstelle brauche ich die Raumtemp ja eigentlich nicht zu berücksichtigen. Er meinte ich solle die Temperatur an der Therme immer etwas höher einstellen als bei den Heizkörpern und dann so lassen.
Genauso war seine Aussage, dass es nicht nötig sei in meinem Fall eine Nachabsenkung in der Therme zu Programmieren, weil die Nachabsenkung der Homematic Thermostate schon dazu führe, dass die Therme aus ginge (weil keine Wärmeabnahme).
Ist das richtig? Oder sollte ich die doppelte Absenkung (Therme und Heizkörperthermostate) einrichten?