NEWS
Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten
-
@m-h-0 naja, du müsstest also betrachten wie viel du gerade tatsächlich in das Netz einspeißt, wieviel deine Solaranlage produziert und wieviel du gerade tatsächlich verbrauchst.
Am einfachsten wäre wenn du einen Einspeisewert hättest, z.B.
-175
wenn du gerade 175W einspeist.
Dann könntest du diesen Wert, ggf. mit Puffer, mit dem was deine Solaranlage gerade produziert gegenrechnen.
Dann weist du was die Solaranlage produzieren dürfte und kannst dann den neuen ermitteln und Wert setzen.Jetzt ist eine Frage wie oft? Das schwankt auf der Abnehmerseite schon heftig, also könntest du so oft wie die Werte kommen nachregeln. Bei mir kommen etwa alle 5 Sekunden neue Werte, also würde ich so 20 mal die Minute die Werte anpassen. Ob das sinnvoll ist weis ich nicht. Wie die Profigeräte das Handhaben wäre interessant.
Vermutlich machen die Hoymiles das mit, die Nulleinspeisung gibt es ja als Feature der Original DTU.
Eventuell würde man größere Zeiträume und Durchschnittswerte nehmen.
Auch eine ständige/regelmäßige Fehlerprüfung sollte zusätzlich eingebaut werden - was passiert wenn iobroker nicht mehr läuft? Ich hätte gerne einen Plan B / Notfallprogramm das z.B. auf volle Leistung schaltet. -
@bananajoe
Ja wie es im Prinzip funktioniert weiß ich ja.
Nur wie ich das mit einem Blockly am besten machen, da scheitere ich.
Ich habe einen HM1500 und wenn nun die Poolsaison vorbei ist, will ich den gerne etwas runterregeln, damit ich nicht zu viel einspeise.
Werte bekomme ich vom Smartmeter sekündlich.
Ahoy ist da ein bisschen träger.
Wobei der Hoymiles auch ein paar Sekunden benötigt, bis er die richtige Leistung runterregelt. -
@m-h-0
nah an Nulleinspeisung ran ja, mit wenn Bezug >0 steuere WR mit x Watt.
Macht aber nur Sinn wenn der überflüssige Strom gespeichert wird. -
@m-h-0 sagte in Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten:
@bananajoe
Ja wie es im Prinzip funktioniert weiß ich ja.
Nur wie ich das mit einem Blockly am besten machen, da scheitere ich.
Ich habe einen HM1500 und wenn nun die Poolsaison vorbei ist, will ich den gerne etwas runterregeln, damit ich nicht zu viel einspeise.
Werte bekomme ich vom Smartmeter sekündlich.
Ahoy ist da ein bisschen träger.
Wobei der Hoymiles auch ein paar Sekunden benötigt, bis er die richtige Leistung runterregelt.habe ich jetzt das richtig verstanden, dass du deine Produktion soweit limitieren willst, dass du keine keinen Strom abgibst, ist das korrekt? Oder was meinst du mit "Hoymiles auch ein paar Sekunden benötigt, bis er die richtige Leistung runterregelt."
-
@a200
ja stimmt.
der hoymiles erzeugt dann weniger Strom und ich speise nicht so viel ein.
Ich will das, weil ich einen HM1500 habe und keinen HM600 -
@m-h-0 ok also müsste es so was in der Art sein:
var ueberprod = "smartmeter.0.1-0:2_8_0__255"; var hmProd = "mqtt.1.HM600.HM-600.ch0.P_DC"; var hmLimit = "mqtt.1.HM600.HM-600.ch0.Efficiency/devcontrol/<INVERTER_ID>/11"; var ueprod, aktprod; on({id: ueberprod}, function (obj) { ueprod = getState(ueberprod).val; if (ueprod = 0) setState(hmLimit, 65535, true); else setState(hmLimit, getState(hmProd).val - ueprod, true); });
Wenn sich der Wert für Überproduktion ändert:
- Ist der Wert für Überproduktion = 0 (also keine Überproduktion), dann können wir den Limit auf MAX setzen.
- ansonsten (wir haben Überproduktion), dann soll der aktueller Limit auf (aktuelle Produktion - Überproduktion) gesetzt werden.
Ist nur ein schneller Entwurf. Was sagen die Kollegen?
-
von der Erkennung des Bezugs + - bis zur realen Watt Änderung vergehen ja mindestens 2 sek.
Dann sollte schon bei - 20 geregelt werden wenn die Tendenz in Richtung mehr Überproduktion geht.Hatte gelesen das die Limitänderung ins EEprom geschrieben wird. Ob dann das häufige schreiben gut
ist bei so vielen Schreibvorgängen ? -
@ralla66
nein die nonpermament Reduzierung wird nicht in das EEProm geschrieben, nur die permanente.
Danke a200 für die Hilfe.
Mal schauen ob ich das umsetzen kann. -
@m-h-0 Ich bin etwas skeptisch, was das Timing angeht. An klaren Tagen dürfe es kein Problem sein, aber beim Wolken/Sonne Wechsel. Mal sehen was dabei raus kommt.
-
ja stimmt das sehe ich auch so.
es muss ja nicht immer null sein.
aber wenn ich nun maximal 100W einspeise würde es auch reichen.
Habe dein Script ausprobiert, er schreibt nun immer den aktuellen Wert von der Leistungsproduktion des Wechselrichters in hmLimit.Könnte man das Script zb nur 60Sekunnden ausführen.
Sorry, mit script kenne ich mich null aus
-
@m-h-0 sagte in Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten:
ja stimmt das sehe ich auch so.
es muss ja nicht immer null sein.
aber wenn ich nun maximal 100W einspeise würde es auch reichen.
Habe dein Script ausprobiert, er schreibt nun immer den aktuellen Wert von der Leistungsproduktion des Wechselrichters in hmLimit.Könnte man das Script zb nur 60Sekunnden ausführen.
Sorry, mit script kenne ich mich null aus
zeigt mir bitte die Kopie deines Skriptes und die dazugehörigen Datenpunkte. Dann kann ich vllt. auch helfen. Vor allem den DP aus dem hervorgeht, wie viel Überproduktion du im Moment hast
-
var ueberprod = "mqtt.3.SHRDZM.4C7525364D1E.4C7525364D1E.sensor.2.7.0"; var hmProd = "mqtt.4.ahoy1.HM1500.ch0.P_AC"; var hmLimit = "mqtt.4.ahoy1.devcontrol.0.11"; var ueprod, aktprod; on({id: ueberprod}, function (obj) { ueprod = getState(ueberprod).val; if (ueprod = 0) setState(hmLimit, 65535, true); else setState(hmLimit, getState(hmProd).val - ueprod, true); });
-
@m-h-0 sagte in Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten:
var ueberprod = "mqtt.3.SHRDZM.4C7525364D1E.4C7525364D1E.sensor.2.7.0"; var hmProd = "mqtt.4.ahoy1.HM1500.ch0.P_AC"; var hmLimit = "mqtt.4.ahoy1.devcontrol.0.11"; var ueprod, aktprod; on({id: ueberprod}, function (obj) { ueprod = getState(ueberprod).val; aktprod = getState(hmProd).val; if (ueprod = 0) setState(hmLimit, 65535, true); else setState(hmLimit, aktprod - ueprod, true); log("Überproduktion: " + ueprod + " - Produktion: " + aktprod + " - Limit: " + getState(hmLimit).val); });
Lass mal das hier laufen. Das sollte in der Konsole die Werte anzeigen.
-
@a200
Es wird irgendwie der 2.7.0 Wert des Smartmeters nicht übernommen.
Weiters übernimmt ahoy den Wert nicht.
Man müsste einen String in hmLimit schreiben.
Kann auch sein, dass das Ganze zu schnell passiert. Besser wäre es man sendet nur alle 60 Sekunden einen Wert an hmLimit -
var cronRun = "* * * * *"; var ueberprod = "mqtt.3.SHRDZM.4C7525364D1E.4C7525364D1E.sensor.2.7.0"; var hmProd = "mqtt.4.ahoy1.HM1500.ch0.P_AC"; var hmLimit = "mqtt.4.ahoy1.devcontrol.0.11"; var ueprod, aktprod; function anpassen() { ueprod = getState(ueberprod).val; aktprod = getState(hmProd).val; if (ueprod = 0) setState(hmLimit, 65535, true); else setState(hmLimit, paseInt(aktprod - ueprod), true); log("Überproduktion: " + ueprod + " - Produktion: " + aktprod + " - Limit: " + getState(hmLimit).val); } schedule(cronRun, function () { anpassen(); });
Wird minütlich ausgeführt und als Limit wird ein Integer gesetzt.
-
@a200
Danke dir für deine Hilfe!
Ich habe nun das Problem, die Überproduktion ist 0, es wird aber trotzdem ein Limit gesetzt.
Weiters habe ich folgende Fehlermeldungen:
-
@m-h-0 sagte in Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten:
@a200
Danke dir für deine Hilfe!
Ich habe nun das Problem, die Überproduktion ist 0, es wird aber trotzdem ein Limit gesetzt.Die Zeile 10 sollte lauten:
if (ueprod == 0)
-
@a200
Super es klappt soweit. Die Formel muss ich noch etwas verbessern. Da muss ich schauen wie es am besten praktikabel ist.
Problem habe ich nun noch, dass der hmLimit Wert nicht als String übergeben wird.
Es sollte da wohl eine ganze Zahl als String übergeben werden, ohne Komma. -
@m-h-0 sagte in Photovoltaik - Hoymiles HM-1200 Balkonkraftwerk Daten:
@a200
Problem habe ich nun noch, dass der hmLimit Wert nicht als String übergeben wird.
Es sollte da wohl eine ganze Zahl als String übergeben werden, ohne Komma.Also String oder Zahl (Integer) ? Eigentlich wird in der Zeile 13 der Wert "(aktprod - ueprod)" in Integer (ganze Zahl) umgewandelt und als Integer an hmLimit übergeben.
Schick mir mal die DP-Definition von hmLimit, dann kann ich sehen, was rein soll. Aus meiner Sicht soll da Int rein:
dein Datenpunkt erwartet aber String. -
Ist als String definiert. Ändere ich den Datenpunkt, ändert er sich automatisch wieder zurück zu string.