Überschuss einer PV Anlage verwerten.

  • Moin an die Community,

    Sorry das ich mein Anliegen in zwei Threads teile, aber der allgemeine Forums- Knigge gebietet das, damit der ursprüngliche Thread nicht zugemüllt wird.

    Eingangspost zum Verständnis :EHZ auslesen


    -Somit wird der Überschuss schon mal erfasst und kann weitergereicht werden.


    Mein Ziel ist es einen kleinen 5kwh Solarspeicher, ohne Netzbezug, aus meiner 9,9Kw PV, AC zu Laden.

    Zur Anlage: 9,9 Kwp PV / 7Kwp Erzeugerleistung.

    Da nicht all die erzeugte Energie abgenommen werden kann möchte ich einen Teil davon für die Nacht speichern.

    Gespeichert wird in einem 5Kwh Lifepo4 Akku mit einem ANT-BMS nur als Notfallabschaltung.

    Geladen wird über ein Meanwell MW HLG-600H-30AB Netzteil. Steuerspannung bis 10V auch PWM oder Widerstand.


    Nun soll morgens ein zweiter ESP den Wert des Überschusses empfangen das Netzteil einschalten( >2V = ON /< 0,5V= OFF) und den DAC regeln.


    Meine Fragen:

    Gibt es bereits einen "fertigen" Sketch, welcher sehr leicht auf meine Bedürfnisse angepasst werden kann?

    Gibt es eine gute (auch fertige) Schaltung, um die Spannung des DAC vom ESP von 3,3V auf 10V anzuheben?

    Welches wäre die simpelste Art den Überschuss an den 2. ESP zu übermitteln?


    Beste Grüße

  • Moin!!

    Mir ist aktuell kein Sketch bekannt, der derartiges bereits liefert.

    Es wäre ganz hilfreich, wenn du deinen kompletten Aufbau skizzieren könntest. Damit man einen Überblick hat, was wo wie wann gesteuert werden soll. Und vor allem, wie das alles miteinander zusammenhängt. Ich für meinen Teil kann deiner Beschreibung nicht ganz folgen.

    Zum Schalten einer höheren Spannung mithilfe eines ESPs, kannst du einen Mosfet Transistor nutzen. Je nachdem wie hoch der Strom ist, würde ich allerdings ein Relais empfehlen, dessen Betriebsspannung du mit einem Mosfet schaltest.

    Die Ausgänge am ESP vertragen max. 20mA damit lässt sich oft kein Relais schalten.

    Google mal nach "Mosfet als Schalter". Und oft lassen sich so Schaltungen ganz gut mit Everycircuit simulieren. Das lässt sich im Chrome Browser ausführen und eine Phantasie- Mail Adresse reicht aus um es einen Tag nutzen zu können.

    Wenn du zwischen zwei ESPs Variablen senden möchtest, lässt sich das über Globale Variablen im Skript lösen.

    Hierzu mal das Wiki von Tasmota erforschen.

    Sorry, ich ging auf Grund deines Threads im SML Bereich davon aus, dass du alles via Tasmota regelst?


    Grüße!

  • Moin,

    vielleicht habe ich ich Fragen offen gelassen. Danke für die Hinweise.

    Vorab schon mal die Zeichnung:


    Wie gesagt, der erste ESP soll nur den Überschuss ermitteln und Wert, auf irgend eine simple Art, an den 2. ESP als Regelgrundlage übermitteln.

    Der 2. ESP soll zeitgesteuert das Ladegerät ein/ausschalten, aufgrund des evtl. vorhandenen Überschusses den Ladestrom hoch/runter fahren (0-10V) und am Abend das Ladegerät wieder ausschalten.

    Meine Hoffnung ist das man die 3,3V des DAC Ausganges linear ohne Hilfspannung erhöhen kann.

    Anbei das Datenblatt des Ladegerätes: Meanwell

    Das zeitgesteuerte ein und ausschalten ist ja bereits das Standardprogramm des Sonoff.

    LG

  • Wie bereits erwähnt, gibt es die Möglichkeit Globale Variablen zu nutzen. Ob man MQTT auch untereinander nutzen kann, weiß ich nicht. Es gibt so etwas wie Device Grous bei Tasmota. < Ich gehe übrigens immer noch von Tasmota aus.

    Ansonsten entnehme ich dem Datenblatt, sich das Gerät über 3,3V steuern lässt.

    Dazu muss lediglich >2 V an dem RemoteControl Eingang anliegen. Zum Ausschalten muss das Kabel nach GND gezogen werden.

    Bzgl. deines Ladestroms, den du offensichtlich via des Dimmers steuern möchtest, würde mir keine andere Lösung einfallen, als dementsprechend. eine Zusätzlche Spannung zu verwenden.

    Vielleicht ist es dir Möglich einfach die Batteriespannung via Buckconverter auf 10V zu bringen und das PWM Signal des ESPs am Gate eines Mosfets anlegen und damit ein 10V PWM Signal erzeugen. Ob das noch den verlangten Spezifikationen entspricht kann ich nicht beurteilen. Muss man wohl ausprobieren.

    Hast du ausprobiert, Ob ein 3V PWM Signal evtl auch ausreicht?

  • Moinsens,


    Tasmota Check!

    Device Groups ist eine gute Alternative zu MQTT.- Habe gerade mal in Github geschaut.

    Wenn nur ein Wert gesendet werden soll ist MQTT wohl oversized. Mal sehen was in der steuernden Anwendung leichter zu händeln ist.

    In der Tat kann man das Netzteil auch per Software schalten. Aber der kleine Stand By Verbrauch ist über das Jahr gesehen ganz schön happig, wenn man bedenkt das im Winter maximal 6 Betriebsstunden anfallen. Da kann ich ja auch das Relais des Sonnoff benutzen. Nur der Inrush - Current von 70A bereitet mir Kopfschmerzen...

    Denke auch es wird nicht ohne Hilfsspannung gehen aber dafür gibt es genügend Schaltbeispiele im Netz.

    Die verfügbaren Anwendungen in Tasmota beherrschen das simple an und ausschalten per Zeit oder Knopfdruck.

    Nun kommt es auf das Regeln an.

    Das Tasmota auch Dimmen kann habe ich herausgefunden.

    Als, bereits nutzbare, Lösung nur in Abhängigkeit von Zeit und Knopfdruck aber nicht in Abhängigkeit eines Wertes z:b. eines Lichtsensors. Hast/habt Du/ Ihr noch eine gute Idee?

    Mit 3V kann ich das Netzteil leider nicht bis auf Vollgas schalten. Geht nur linear von 0-10V.

    Beste Grüße

  • Ich hatte auch an ein 3V PWM Signal gedacht. Nicht als lineare Adjustment Steuerung.

    Ich weiß nicht ob du dich bereits mit der Möglichkeit des Scriptings statt der Rules auseinandergesetzt hast. Du kannst eigentlich alles was das Tasmota auslesen kann auch im Script verwenden.

    Schau mal im Github/Docs nach Scripting.

    Eigentlich müsstest du das eh bereits kennen, denn du nutzt ja auch SML, wenn ich dich richtig verstanden habe.

    Bzgl. des Einschaltstroms, gibt es NTCs die man dazwischen schalten kann. Allerdings haben die eine Obergrenze. Auch dazu findest du sicher etwas im Internet.

    Die Abhängigkeit kannst du relativ einfach im Script programmieren.

    Ich würde immer noch die Globalen Variablen empfehlen. Auch hierzu siehe: Tasmota docs > Scripting.

  • Wenn nur ein Wert gesendet werden soll ist MQTT wohl oversized.

    Ganz bestimmt nicht. MQTT ist ein extrem schlankes und robustes Protokoll und zum Austausch von Nachrichten (Werten) zwischen Geräten und anderen Instanzen hervorragend geeignet. Und alle gängigen Hochsprachen haben Module, Bibliotheken oder wie es auch immer in der jeweiligen Sprache heißt, um MQTT-Nachrichten auszuweten bzw. zu senden. Zu allen anderen Themen kann ich nichts sagen....

  • Moin,

    Mqtt werde ich dann wohl noch nicht von der Bettkante schubsen. Arbeite mich gerade in die Materie ein?(


    Ja ein Beispielscript habe ich per C/P verwendet und lediglich O gegen S vertauscht -habe ja einen SML Zähler.

    Das war es dann aber auch schon und war wieder glücklich das alles lief:)


    Die jetzige Aufgabe ist da schon deutlich anspruchsvoller, weil es wohl nicht von der Stange gibt was mit kleinen Änderungen ebenfalls laufen würde.

    In einem anderen Forum hat das jemand per Arduino erledigt- muss mir die Sache nochmal ganz genau anschauen.

  • Moin,

    habe da einen Regler gefunden und kann die Teile dafür recht schnell bei Reich*t zusammen kramen.

    Kostet nicht viel, kann sogar bis zu 30V aus dem Akku ab.

    Konverter

    Eure Meinung?


    In dem Script des "SML - Auslesers" wird wohl die Variable "Power_curr" genutzt.

    Wird diese an jeden, im lokalen Netzwerk, MQTT Client ungefragt weitergegeben?

    Bin bereits am Code basteln....... Dos Basic war mir vor 30Jahren sehr gut geläufig.

    Habe damit viel gemacht ist aber über 30Jahre her....

  • Zu dem Konverter kann ich nicht viel sagen.Ausprobieren.

    Bzgl. des Scripts:

    Schau mal, auf der Tasmota scripting Seite, gibt es irgendwo einen Link zum ScriptEditor. Der eignet sich eigentlich ganz gut um ein Script zu entwerfen und zu testen. Nicht vergessen die Readme Datei im Download Verzeichnis zu lesen.

    Ja,alle Werte die im Descriptor stehen, werden via MQTT gesendet. Also alles was nach der Zählerdefinition (>M1 1,3,16,Strom) folgt.

    Globale Variablen sind auch in den Docs erklärt. Jedoch musst du den entsprechenden #define beim kompilieren deiner Firmware setzen, um diese Globalen Variablen nutzen zu können. (#define USE_SCRIPT_GLOBVARS)

  • Auf eine Frage habe ich noch keine Antwort bekommen.

    Kann ich eigentlich von einem Tasmota Werte ,per MQTT, auf ein anderes Tasmota schicken ohne einen Broker?

    Oder hat Tasmota gar einen Broker wo ich das Topic, von nur einem Gerät, abonnieren kann?

  • Auf eine Frage habe ich noch keine Antwort bekommen.

    Kann ich eigentlich von einem Tasmota Werte ,per MQTT, auf ein anderes Tasmota schicken ohne einen Broker?

    Oder hat Tasmota gar einen Broker wo ich das Topic, von nur einem Gerät, abonnieren kann?

    Das weiß ich ehrlich gesagt nicht! Habe es nie probiert weil ich ein Raspberrypi als Broker nutze. Vielleicht weiß jemand anderes das. Ansonsten würde ich empfehlen in den Discord Help Channel von Tasmota zu gehen, und deine Frage zu stellen. https://tasmota.github.io/docs/#join-our-community

  • Nun soll morgens ein zweiter ESP den Wert des Überschusses empfangen das Netzteil einschalten( >2V = ON /< 0,5V= OFF) und den DAC regeln.

    Ich habe so etwas in der Art laufen aber ohne die 0-10V. Ich schalte bei PV-Überschuss einen 250W Heizlüfter ein, welcher an einer Sonoff S20 hängt. Das geht per Websend Befehl auch ohne Broker. Hier ein Scriptauszug (geht natürlich auch mit RULES):


    Schaltet bei 260W ein, und bei kleiner 10W aus.

    Bin gerade noch daran, den Überschuss dynamisch zu verwerten. Man kann auch Dimmer Befehle mit Websend senden : =>WebSend [192.168.xxx.xx] dimmer 80 .


    Somit kann man an den PWM-Pin dann eine entsprechende Schaltung hängen die aus 0-3.3V dann 0-10V macht. Aber da bin ich noch am testen....


    Gruss OW

  • Moin OW,

    das ist eigentlich genau das was ich suche..

    Du benutzt wohl kein MQTT oder einen Broker sondern ein http request was ohne einen Broker auskommt.

    Wichtig ist : Das ein Device auf das andere zugreifen kann, um Befehle zu empfangen oder zu senden.

  • Kann ich eigentlich von einem Tasmota Werte ,per MQTT, auf ein anderes Tasmota schicken ohne einen Broker?

    Nein. MQTT ist ein Client-Server-System. Tasmota-Geräte sind immer und ausschließlich Clients. Sie können an einen Broker (= Server) Nachrichten eines bestimmten Topics senden (publish) und ein anderes Gerät kann ein bestimmtes Topic abonnieren (subscribe). Der Broker ist ein "man in the middle" und zwingend erforderlich. Ein Raspberry Pi kann gleichzeitig Broker und MQTT-Client sein aber nicht ein Tasmota-Gerät.

  • Moin Jörg,

    so hatte ich es auch verstanden.

    So eine "versteckte interne Schleife" hätte ja ein Feature von Tasmota sein können.

    Abgehakt. Einen Pi als Server werden ich mir nicht nochmal antun.


    @OW

    Zum Verständnis:

    Das obige Script läuft auf deinem "Host" , welcher auch den Verbrauch zählt?


    Per WebSend schickst du den Befehl an ein anderes Tasmota, welches per (in Zeile 3) Ip Adresse angesprochen wird,

    ein on/off Signal. Heizlüfter an/aus.

    Richtig?

    Vielen Dank für Deinen Hinweis:thumbup:

  • Hallo gnubbel


    Genau, das Script läuft auf einem NodeMCU mit tasmota an meinem Stromzähler. Dieser schickt per Websend die Befehle an die (tasmota)S20-Steckdose. Wie oben bereits geschrieben, funktioniert das ohne Broker.


    Hier mein ganzes Script ( mit einem Easymeter Q3B Stromzähler):


    Gruss ow

  • Suuper danke!!:thumbup::thumbup:


    Wenn ich richtig recherchiert habe, dann muss der Software-Dimmer mit Werten von 0 -255 gefüttert werden.

    Somit habe ich die übrigen 550W durch 255 geteilt, um eine lineare Funktion zu erhalten.

    Habe Dein Script mal ein wenig verändert. Könnte das so funktionieren oder habe ich da noch einen logischen Wurm drin?

    Damit nichts größeres hals 255 herauskommt habe ich die zweite Schleife( OFF Schalter) dafür benutzt.


  • gnubbbel

    Die kommentare im Code müssen immer am Zeilenanfang stehen und nie hinter einer Funktion. Da kannst du schonmal seltsame Fehler beim Script vermeiden.

    Oder nutze direkt den Scripteditor, der einiges leichter macht.

    https://www.dropbox.com/sh/0us…mpZ4AfpdrWE_MPFGmbma?dl=0

    Bitte erst die PDF im Ordner lesen. Dort wird alles erklärt.


    Dieser löscht die Kommentare und unnötige Leerzeichen vor dem Upload um dementsprechend Zeichen im Code zu sparen.

    In Zeile 25 hast du ein zweites mal >D das funktioniert nicht und auch die >B Sektion sollte weiter oben nach der >D Sektion kommen...

    In Zeile 11 fragst du die Teleperiode ab. Standardmässig ist diese auf 300 Sekunden gestellt. Das wird für deinen Fall vermutlich arg lang sein. Die kürzeste Zeit für die Teleperiod ist 10sek.

    Lässt sich entweder per Konsolenbefehl: teleperiod 10

    einstellen oder im Script unter:

    Code
    >B
    tper=10
  • Hallo sunburstc,

    den Script-Editor hatte ich mir vor Tagen schon gezogen und bis auf die Readme angeschaut.

    Heute habe ich alle Änderungen mit diesem Editor eingefügt und mit meinen eigenwilligen Kommentaren hinter der Zeile zur besseren Übersicht versehen.

    In Zeile 25 hast du ein zweites mal >D das funktioniert nicht und auch die >B Sektion sollte weiter oben nach der >D Sektion kommen...

    Das war nicht ich! Scheint aber trotzdem zu laufen:/


    In meinem "Host-System" werden aktuell alle 10 sec. die Daten (das habe ich beim compilieren festgelegt) ausgegeben. Mag auch nur Zufall sein. Vlt hat Gemu das bereits getan... Aber Danke für den Hinweis -kann man ja noch einbauen.


    Am letzten Code - Beispiel ging es mir im wesentlichen um die logische Reihenfolge mit den Schleifen.

    Ganz besonders um die sinnvolle Begrenzung auf den Wert 255 für das PWM Signal.

    Und nochmals danke für die Unterstützung hier.


    Und noch mal der eingedampfte Code: