Was verstehst du denn an der function node nicht?
Wenn du Werte in Prozent umrechnen willst geht das ganz gut mit der range node (Skalierung). Als Beispiel verlinke ich dir mal meinen Flow von oben. Beispiel
Wie macht ihr das eigentlich, daà die Einspeisung aus der Batterie nicht mit dem Saldo vom Shelly3EM immer hin und her pendelt? Die DTU regelt ja dann stÀndig nach, auch wenn sich die eigentliche Grundlast nicht Àndert. Benutzt man da als Ausgangswert einen Template-Sensor, wo die aktuelle Einspeisung aus der Batterie vom Saldo des Shelly gleich abgezogen wird?
Moin soulreafer,
so richtig schlau werde ich aus deiner Funktion nicht.
Ich kann mich tÀuschen was den Ablauf betrifft aber aus meiner Sicht sieht das so aus:
Als erstes prĂŒfst du den Topic des Eingangswertes, legst eine context-Variable an und weist ihr den Inhalt vom payload zu. Da 3 EingĂ€nge definiert sind und diese zeitgleich eintreffen ist es Zufall welche Variable den payload bekommt.
Dann werden 3 Variablen festgelegt die entweder den Wert der entsprechenden context-Variablen erhalten oder, falls undefined, 0 zugewiesen bekommen.
In der eigentlichen Berechnung wird dann, falls die produktion ungleich 0 ist, die produktion vom solar abgezogen, andernfalls ist die msg.payload = maxPV die zu Anfang den Wert 2000 bekommen hat. Der Verbrauch bleibt bei der Berechnung unberĂŒcksichtigt.
Wie gesagt, ich kann mich tÀuschen da ich auch nicht der Experte bin aber nach meinem VerstÀndnis lÀuft das so ab.
Wenn das so gewollt ist dann soll es so sein hat dann aber nichts mit dem Betreff dieses Threads âNulleinspeisungâ zu tun.
wie gesagt lese ich meinen zÀhler anders aus, bzw erhalte ich andere werte von meinem zÀhler. ihr rechnet damit, dass euer zÀhler negative werte angibt sobald ihr weniger verbraucht als ihr produziert. ich habe einen zweirichtungszÀhler und bekomme entsprechend 2 verschiedene werte.
wert1: bezug vom netz. fÀngt bei 0 an und geht halt entsprechend hoch wenn bezug vorhanden ist.
wert2: einspeisung. fÀngt bei null an und ersetzt wert1 sobald ich mehr produziere als ich verbrauche.
also geht dann wert1 auf 0 und wert 2 entsprechend hoch
also ist wert2 meine berechnungsgrundlage fĂŒr die nulleinspeisung. nehmen wir an der wert gibt mir 250W an, dann muss ich meine anlage um diese 250W drosseln. also âsolar - produktionâ
ne hat sich nix geĂ€ndert. die berechnung ist die selbe. habe nur eine idee von weiter oben mit ĂŒbernommen mit dem entprellen damit nur daten an den wechselrichter verschickt werden wenn sie sich um mehr als 10% Ă€ndern. der rest sind nur debugging ausgaben
ich habe derzeit folgende âFunctionâ mit einem Tasmota Lesekopf, OpenDTU & einem Hoymiles Wechselrichter laufen:
// MAX generation of the inverter Watts
var maxPower = 1300;
// Get current power limit or default
var power = context.get('power') || maxPower;
power += msg.payload;
// clamp power between 0 and max
if (power > maxPower) power = maxPower;
if (power > 0) power = power + 200;
//if (power < 0) power = 250;
// Wenn keine Werte vom ZĂ€hler kommen dann 600 W
//if (power == 0) power = 600;
// store current powerlimit and update message
context.set('power', power);
msg.payload = power;
return msg;
Es ist ein HM-1500 und ich möchte maximal 200 Watt einspeisen. Es funktioniert so auch alles ohne Probleme.
AuĂer es kommt kein Wert vom Tasmota⊠Dieser schickt dann nĂ€mlich âNanâ und damit kann die Funktion nichts anfangen. Der Wechselrichter schaltet dann aus, weil er mit dem Werrt nichts anfangen kann.
Wie Ă€ndere ich die Funktion ab, sodass beim Wert âNaNâ einfach der letzte oder ein vorgegebener Wert verwendet wird?
Wenn ich ĂŒber âinjectâ eine Zahl âNaNâ reinpacke und vor und nach dem Filter einen debug mache kommt folgendes. Als String funktioniert es, aber der ZĂ€hler gibt ja eine Nummer ausâŠ
Jedoch habe ich zwei Fragen, ich habe einen Hoymiles HM-800 und einen Tasmota Lesekopf, aber die Regelung klappt leider nicht so, wie ich es mir vorstelle.
Was bedrutet das + in der Zeile: power += msg.payload
Bei mir wird nur geregelt, wenn ich das + entferne
Die Regelung berĂŒcksichtigt nur den aktuellen Wert von der aktuellen Leistung, nicht den Wert, den der WR schon liefert.
Bsp. Aktuelle Leistung 500W-> WR regelt auf 500 ok. Aktuelle Leistung steigt auf zusÀtzliche 100 W-> jetzt regelt der WR nicht auf 600W, sondern zuerst wieder auf 100W und danach auf 600W. Ist das so gewollt bzw. kann man die schon geregelte Leistung mit in der Berechnung einbeziehen? Sonst regelt der WR ja immer zwischen min und max.
Hallo, bin kein NodeRed spezialist aber habe dieses Problem auch so gesehen. Ich habe es fĂŒr mich so gelöst : Hilfs Sensor in Homeassistant, welcher die aktuell benötigte Leistung und die aktuell von 2 Wechselrichtern bereitgestellte Leistung addiert⊠Diese neue aktuell benötigte Leistung verwende ich dann in meinem Flow um den gröĂereren meiner beiden Wechselrichter zu regeln. (Den Flow habe ich mir aus den hier geposteten Flows zusammengestellt, einschl. Zeitsteuerung und Mindestwert WR. In einem weiteren Flow (Aufbau wie Flow1) verwende ich nur den sensor aktuell benötigte Leistung und regle den 2ten Wechselrichter . Funktioniert ganz gut . Speise /Tag zwischen 50 und 100W ein.
ohne viel Prosa stelle ich hier mal 2 Links zu der Funktion von Node-RED ein die deine Fragen eigentlich beantworten sollten. Zum einen der Beitrag in Wikipedia zum Ursprung der Software und zum anderen die Rechenoperatoren basierend auf JavaScript die dann auch die Funktion der Operation += erklÀrt.
Wikipedia:
Danke Euch beiden fĂŒr die Hilfe und die Tipps. Hab es hinbekommen. Das einzige, was ich noch geĂ€ndert habe, dass ich einen zusĂ€tzlichen Functions Code genommen habe fĂŒr das WR Limit. Das hatte bei mir irgendwie nicht funktioniert.
Noch eine Frage, wie habt ihr mit dem functions Node die Zeitsteuerung realisiert? Das klappt bei mir nicht.
Die Zeitsteuerung ĂŒber eine function node zu realisieren habe ich hier noch nicht gesehen, normalerweise lĂ€uft das ĂŒber eine time range. Oder meintest du was anderes?
Hier mal mein Flow weiter oben in diesem Thread als Beispiel: Flow Nulleinspeisung
Mir ist durchaus bewusst das es mĂŒĂig ist sich durch diesen Thread zu lesen aber es kann durchaus helfen sich diese Zeit zu nehmen.
Hallo, danke das du dein Wissen mit uns teilst.
ich bin in HA und node red absolut verloren. Ich habe dein Flow kopiert und alle relevanten Dinge geĂ€ndert. Die âLeistungâ wird vo Shelly Pro 3EM erkannt und zeigt diese auch an (Sensor ist sensor.shellypro3em_0cb815fd3820_total_active_power). bei MQTT zeigt er auch verbunden an aber er regelt nicht. kannst du mir bitte helfen?
Hardware ist : OPENDTU, Hoymiles hm-1500, shelly Pro 3em, Raspberry pi 4 mit HA.
MQTT Ist eingerichtet und lĂ€uft auch. Kann die dtu ĂŒber mqtt steuern.