NEWS
Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome
-
@manuel001 Das sieht so aus. Das ist schon etwas seltsam, dass alle Passwörter einfach so einem zugesendet werden.
Das Interface erlaubt nur Zahlen einzutragen, nehme aber an, man kann am PC über Web einfach auf der Tastatur die Buchstaben eintippen... mal bei Gelegenheit ausprobieren. -
@manuel001 Einbauen geht über Javascript, Adapter "Script Engine" installieren, das ist der, wo man auch über Blockly programmieren kann. Ich nutze aber bislang nur Javascript, bin noch nicht so lange mit iobroker dran.
Dann gibt es einen neuen Menupunkt Scripte
Dann auf das Symbol klicken und ein Javascript erstellen:
Da muss man ein bisschen testen um das zu verstehen, ging mir auch so.
-
@socke Vielen Dank!
-
@socke
Angenommen, die desiredTemperature wird bei dir auf 59 gesetzt. Setzt du sie ebenfalls über ein Skript wieder auf einen kleineren Wert, wenn due nicht mehr überhitzen willst oder lädt sich die Wärmepumpe dann wieder einen Wert aus dem internen Regler? Und: reicht es den Wert 1x zu setzen oder musst du es zyklisch wieder machen, da der interne Regler der Wärmepumpe den Wert sonst überschreibt? -
@socke Ich habe das Script eingebaut und für den einen Parameter der mich interessiert, angepasst.
Allerding dürfte ich dabei einen oder mehrere Fehler gemacht haben:/** * This script reads data from a hautec heater Keba controller. * www.hautec.eu */ const request = require('request'); const heizung_host = '192.168.1.101'; const urlOfHeatpump = 'http://' + heizung_host + '/var/readWriteVars'; //const jsondata = [{"name":"APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"}]; // all values I want to receive const jsonRequest = [ {"name":"APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled"}, ]; const jsonAsString = JSON.stringify(jsonRequest); // create all the states in broker createState('javascript.'+instance+'.Heizung.Verdichter', 0, {type: 'number', role: 'value', unit: '%'}); // every minute read the data from the heater and save it schedule("* * * * *", function() { request.post({ url: urlOfHeatpump, form: jsonAsString }, function(error, response, body) { if (error) log(error, 'error'); if (body) { //log(body); var responseBody = JSON.parse(body); setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody[1].value)); } }); });
Welche Nummer gehört in die Eckige Klammer nach responseBody?
(bin kein Programmierer) -
@manuel001 sagte in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:
@socke Ich habe das Script eingebaut und für den einen Parameter der mich interessiert, angepasst.
Allerding dürfte ich dabei einen oder mehrere Fehler gemacht haben:/** * This script reads data from a hautec heater Keba controller. * www.hautec.eu */ const request = require('request'); const heizung_host = '192.168.1.101'; const urlOfHeatpump = 'http://' + heizung_host + '/var/readWriteVars'; //const jsondata = [{"name":"APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"}]; // all values I want to receive const jsonRequest = [ {"name":"APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled"}, ]; const jsonAsString = JSON.stringify(jsonRequest); // create all the states in broker createState('javascript.'+instance+'.Heizung.Verdichter', 0, {type: 'number', role: 'value', unit: '%'}); // every minute read the data from the heater and save it schedule("* * * * *", function() { request.post({ url: urlOfHeatpump, form: jsonAsString }, function(error, response, body) { if (error) log(error, 'error'); if (body) { //log(body); var responseBody = JSON.parse(body); setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody[1].value)); } }); });
Welche Nummer gehört in die Eckige Klammer nach responseBody?
(bin kein Programmierer)Es liegt lediglich an der "1" in folgender Zeile
setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody**[1]**.value));
Einfach ändern auf
setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody**[0]**.value));
Hintergrund: Die abgefragten Werte (bei dir nur ein Wert) geben ein Array zurück. Hierbei ist der erste Eintrag immer mit 0 indexiert, der zweite mit 1, der dritte mit 2 , usw usw
-
@ttjaden Kleine Ursache, große Wirkung. Es funktioniert! Vielen Dank!
-
@ttjaden Noch eine blöde Frage:
Wo und wie baue ich es ein, dass der übergebene Wert gleich mit Faktor 100 multipliziert wird? (Ausgabe in %)
Multiplikation sollte ja mit *= gehen. -
@manuel001
Das müsste dann hinter der vorletzten Klammer sein, denke ich.setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody**[0]**.value) * 100);
Brauchte ich bisher noch nicht
-
@ttjaden Funktioniert, danke!
-
Moin zusammen,
ich habe seit gestern auch die M-Tec mit der Keba Steuerung und habe auch die Modbus Register parat. (Excel Datei)
Ich habe zum testen 10 Stück in meinem iOBroker angelegt und die Werte sind plausibel.
VG
Alex -
@x4nder Hast du auch einen drehzahlgeregelten Verdichter? PV Überschussregelung?
-
@manuel001
Ja, habe ich.
An der PV Geschichte sitze ich gerade rum.
Über einen SmartMeter würde es gehen. Ich will es über Modbus TCP steuern..
Habe ein Fronius Symo mit eine Fronius SmartMeter. -
@x4nder
Ja ich habe auch einen zusätzlichen SmartMeter für Überschussmessung gebraucht.
Gibt es mittlerweile eine Drehzahl in Prozent (Leistung) vom Verdichter in der Modbusliste?
Spätestens wenn man zusätzliche Verbraucher wie E-Auto steuern möchte, sollte man ja wissen ob die Heizung eh schon auf Vollgas läuft oder nur auf 40%. -
bis dahin bin ich noch nicht gekommen.
Schau mal ob du damit was anfangen kannst.Mod-Adresse; R/W; Factor; VariableName; Description;
712; R; 100; APPL.CtrlAppl.sParam.heatpump[0].CircPump.values.setValueScaled; Heat side actuator -
@x4nder Nein das ist leider nur die Heizungsumwälzpumpe.
Vermutlich haben die eh noch immer nichts verbessert.
Ich warte mal ab, bis du es integriert hast.
Bin schon gespannt, was dir dann fehlt bzw. was dich am meisten stört.
Vielleicht hilft es ja, wenn sich mehrere Leute beschweren. -
EDIT: ich habe es hinbekommen.
Hat einer geschafft die R/W Modubus Register zu beschreiben.
Meine Änderungen werde nicht angenommen.VG
Alex -
@x4nder Wie hat es bei dir geklappt? Wenn ich über ein Skript ein Register neu setze, klappt es nicht. Wenn ich den Wert händisch setze, dann geht es:
-> hier z.B. 402_T_WW als Soll-Temperatur für Warmwasser. Händisch setzen geht, aber über ein Skript setzen lassen läuft so ab, dass der Wert da kurz steht und dann wieder vom Wert vorher überschrieben wird.Hier mein Skript, mit dem ich den Soll-Wert überschreiben lasse, wenn genug PV übrig ist
Wenn mindestens 3500W eingespeist wird, setze neue Warmwasser und Puffer-Solltemperaturen. Falls der Netzbezug kleiner 500W ist, behalte das ganze bei. Erst bei Netzbezug >500W setze die Solltemperaturen wieder auf einen niedrigeren Wert.
-
@ttjaden
Hi,
Ich löse es in Moment über 1000 Register.
Mein Fronius SmartMeter liefert den aktuellen Überschluss und diesen schreibe ich in den 1000 Register.
Die Anlage nimmt es auf und entscheidet dann selbstständig.
Zuerst wird das WW auf 54 Grad aufgeheizt dann kommt der Puffer für die Wärme.
Damit der Register 1000 von der Anlage akzeptiert wird muss im Installateur-Menu etwas eingestellt werden.
Bei mir hats M-TEC per Fernwartung eingestellt, da meine Installateur nicht erreichbar war!
Im Grunde ist das ähnlich wir die E-Smart Lösung. -
@x4nder
Danke für die Rückmeldung. In jedem Fall unterscheiden sich die Register-Belegungen zwischen M-Tec und wie bei mir HAUTEC. Si enutzen wohl die gleiche Regler-Hardware von KEBA, aber die Register sind sind identisch.Meine Frage war auch eher technisch: Ich kann ja über iobroker den WW-Sollwert hoch setzen per Hand. Dies nimmt die Wärmepumpe über Modbus auch an und dann reagiert sie entsprechen. Wenn ich den Wert in iobroker aber nicht per Hand, sondern per Skript setze, klappt es nicht.
Daher ist es eher eine technische Umsetzung-Frage, wo der unterschied ist zwischen dem setzen von werten per Hand und per Skript, wenn der Wert anschließend über das Modbus-Addon in das Register geschrieben wird.