NEWS
Hausstromverbrauch per Modbus an IDM Wärmepumpe senden
-
Hallo zusammen,
damit meine IDM Wärmepumpe den PV Strom richtig nutzen kann braucht diese ein paar Werte. So zum Beispiel meinen Hausstromverbrauch. Diesen kenne ich über einen anderen Adapter (ich habe einen Senec Speicher). Nun ist die Idee recht einfach: ich schreibe den schon vorliegenden Haustromverbauch per Modbus in das entsprechende Register der IDM Wärmepumpe. So einfach die Idee eine kleine Hürde ist noch da, ich hoffe Ihr könnt mir helfen.
Ich schreibe das Register 82
das Schreiben erledige ich mit diesem "Einzeiler",
ob das Schreiben alle 10s sinnvoll ist weiss ich noch nicht, wenn Ihr Erfahrungswerte haben dann bin ich neugierig
Ich erhalte wenn ich das Skript starte einmalig eine Anzeige des korrekten Verbrauchs (ganz rechts in rot)
Nach ein oder zwei Sekunden bekomme ich aber dann dauerhaft Null angezeigt.
Der Wert kommt einmalig im Register der Wärmepumpe an.
Hat jemand eine Idee was hier falsch läuft?
Viele Grüße und besten Dank,
MichaelPS das ist mein erster Wurf in ioBroker, somit kann es gut sein dass ich Basics übersehen habe
-
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
Hat jemand eine Idee was hier falsch läuft?
wahrscheinlich nichts.
leider ist der Ultrawide microfiche nicht zu lesen
Sieht aber nicht wie die Einstellungen im Adapter aus.
Ich glaube da Holdingregister zu lesen.
Warum nicht Inputregister, die sind doch nicht zum steuern, oder doch? -
Hallo @homoran
leider sagt mir der "Ultrawide microfiche" aber ich habe hier mal alles kopiert was zu sehen ist. Auch habe ich nun ein Inputregister verwendet.
Dieses führt nun zwar nicht mehr zu einem null value sondern zu einem Wert von 4.16 kW der so gar nicht zu den realen Werten passt.
Im Log sehe ich dann diese Meldung die den richtigen Input wert 0.261 kW zeigt aber auch einen Fehler der so klingt als wenn ich nicht schreiben darf .
-
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
sondern zu einem Wert von 4.16 kW der so gar nicht zu den realen Werten passt.
welches Format soll das Register denn haben?
Wenn jetzt was kommt scheint das Ankommende wohl nur falsch interpretiert zu werden.Entziffer ich da ein wordwrap?
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
Im Log sehe ich dann diese Meldung die den richtigen Input wert 0.261 kW zeigt aber auch einen Fehler der so klingt als wenn ich nicht schreiben darf .
auch hier schlecht zu entziffern, daher sollten logs und code imner als Text in code-tags gepostet werden.
Das scheint aus einem Javascript zu kommen, das einen falschen Befehl nutzt.
Hier etwas Literatur fpr den Einstieg
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1EDIT
Willst du mit js einen Wert verändern?
Dann müssten es ja doch Holdingregister sein.Aber die Registerbezeichnungen ergeben keinen Sinn für Beschreiben
-
@bushveld Alles zurück auf 0!
Ich hab mir noch mal alles angesehen und jetzt hoffentlich richtig erkannt.
Das sind Register von der Wärmepumpe, die dort Werte benötigt um möglichst autark zu arbeiten?
und nicht die Register deiner Solaranlage, die du dafür verwenden willst, wie ich irrtümlich annahm?Dann müssen das natürlich Holdingregister sein.
Dort ist es normal dass nur solange der eingegebene Wert angezeigt wird, bis er vom Gerät übernommen wird. Anschließend wirdnull
angezeigt.
Um das zu verhindern muss die Checkbox auslesen o.ä. angehakt sein. Aber nicht CW!Bitte umstellen und davon die Einstellungen im Modbus Adapter zeigen.
Für den Screenshot das Fenster so schmal wie möglich machen, ohne dass Daten verloren gehen.
Ein 4k Ultrawide Screenshot ist mobil nicht lesbar! -
Hallo @homoran
sorry für die schlecht formatierte Log Meldung, sonst schicke ich solche Ansagen und mach's nun selber...
Ich habe das Blockly Script geändert und "steuere" mit "aktualisiere" getauscht
STEUERE
timeout = setTimeout(async () => { timeout = null; setState('modbus.0.holdingRegisters.82_Hausverbrauch' /* Hausverbrauch */, (getState('senec.0.ENERGY.GUI_HOUSE_POW').val / 1000)); }, 10000);
AKTUALISERE
timeout = setTimeout(async () => { timeout = null; setState('modbus.0.holdingRegisters.82_Hausverbrauch' /* Hausverbrauch */, (getState('senec.0.ENERGY.GUI_HOUSE_POW').val / 1000), true); }, 10000);
Ich habe auf ein Holding Register zurück geändert und bekomme das gleich Verhalten wieder
- einmal schreiben kommt auf der WP an
- dann ändet sich nichts mehr
- den ersten Wert in im ioBroker und auf der WP bleibt der erste Wert stehen
- im log ist keine Fehlermeldung
Bezüglich der Definition des Registers muss ich dann noch mal ein Bild nehmen um nicht irgend etwas weg zu lassen.
Willst du mit js einen Wert verändern?
Ich möchte der Wärmepumpe den aktuellen Hausstromverbrauch mitteilen damit diese korrekt rechnen kann. Da ich eine Variable schreibe würde ich hier auf verändern tippen und daher das Holdingregister.welches Format soll das Register denn haben?
S. erster Post: ich habe nur die Info FLOATKann es sein dass die WP etwas zurückmeldet was zum Fehler führt?
-
@bushveld ich hab eben noch editiert.
die Checkbox heisst
Abfrage
Anhaken und Erfolg melden! -
unsere post haben sich überschnitten, hier die Einstellungen zum Register und Adapter
-
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
hier die Einstellungen zum Register und Adapter
super!
Das kann ich lesen.EDIT:
im Blockly natürlich steuere nehmen!
du willst ja nicht nur den Wert in ioBroker aktualisieren, sondern die WP steuern. -
Hallo @homoran
jetzt wird es wild.
Den Haken "Abfrage" habe ich gesetzt und es werden nun keine "null" values mehr angezeigt.
Blockly habe ich wieder auf "steuere" geändertNun bekomme ich 1x einen korrekten Wert und dann bekommen ich, auch einmalig den Wert der PV Erzeugung angezeigt.
Ich werde mich nun erst einmal um die Logik in der WP kümmern, meine Vermutung ist dass diese selber denkt. Da die WP im Moment nur Werte vom Wechselrichter bekommt und die WP derzeit nicht aktiv ist scheint diese schlicht die PV Erzeugung als Hausverbrauch auszuweisen.
Ich denke das Skript tut was es soll. Vielen Dank!
Den Post lasse ich offen da ich gerne das Ergebnis hier noch anfügen möchte, sollte die IDM wirklich so um die Eckedenken dann hilft es dem nächsten vielleicht auch wenn es nicht wirklich ein modbus Thema ist. -
@bushveld zeig noch mal dein Blockly.
- besteht das wirklich nur aus dem was im Screenshot gezeigt ist?
- kein Trigger? - dann wird es nur einmal beim Scriptstart/speichern ausgeführt.
- der DP heisst xxx.current
- das wäre der Strom, nicht die Leistung
- besteht das wirklich nur aus dem was im Screenshot gezeigt ist?
-
Hallo @homoran
Nun schlägt der Noob durch bei mir. Ich brauche einen Trigger, mach ja eigentlich Sinn,
- welchen nehme ich da am besten da sich der Hausstrom ständig ändert kann ich vermutlich "Falls Objekt ID wurde geändert" nehmen?
- was meinst du mit DP ? Ich habe bei der Senec nichts besseres gefunden als GUI_HOUSE_POW was mit House Power Current beschrieben ist und eine Leistung zu sein scheint [W] die IDM hätten den Hausverbrauch gerne als [kW]
-
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
vermutlich "Falls Objekt ID wurde geändert" nehmen?
richtig!
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
was meinst du mit DP
DatenPunkt.
@bushveld sagte in Hausstromverbrauch per Modbus an IDM Wärmepumpe senden:
GUI_HOUSE_POW was mit House Power Current beschrieben ist und eine Leistung zu sein scheint [W]
Super korrekt
und das für einen Herstellerdann musst du mal prüfen was da so rauskommt
-
Hallo @homoran
es ist wie vermutet. Ich schreibe konkurrieren mit meinem Wechselrichter die gleichen Register.
Derzeit ist bei mir ein Fronius Wechselrichter und ein Senec Akku installiert. Der Senec Akku kann mit dem WR nur via Modbus RTU kommunizieren und das nur vom WR zum Akku, Die IDM WP kann leider nur modbus tcp. Das führt dazu, dass ich nur vom WR die PV Erzeugung in der IDM WP bekomme, da diese keine anderen Daten kennt fehlt der Rest, diese Daten sitzen alle im Senec Speicher der nur über modbus RTU erreichbar ist.
Das der Senec Akku seine Daten nur ungern preisgibt und lieber alles einsammelt wird im Netz an vielen Stellen diskutiert, ein Schelm der schlimmers denkt..Die Lösung in meinem Fall ist recht einfach: der ioBroker kann den Senec Akku lesen und die IDM WP Register befüllen.
Bleibt noch das konkurrierende Schreiben. Auch das ist leicht gelöst, die IDM hat für Fronius WR eine eigenen Schnittstelle, diese einfach auf GLT (Gebäudeleittechnik) umstellen lassen und schon geht alles nur noch über Modbus und der Fronius schreibt nicht mehr. Das muss man allerdings über den Service der IDM oder den Heizungsbauer machen lassen da die Einstellung sich in der sog. Fachmannebene befindet.Viele Grüße und vielen für die Unterstützung!
Michael