NEWS
Test Adapter Zendure Solarflow
-
Ich mache das mit dem Adapter und einer Steuerung über Blockly.
Für Leute ohne JS Kenntnisse wie mich eine problemlose Lösung.Ich habe mir Szenarien erstellt.
- Sommermodus. Laden und Einspeisen je nach Bedarf und Akkustand.
- Übergangszeit. Tagsüber Laden, Nachts Einspeisen.
- Winter. Laden bis der Akku voll ist über mehrere Tage, dann Nachts Einspeisen. (Wegen Akkukalibrierung.
Als Ladestop und Entladestop benutze ich die min und max Volt der Akkus.
Der Einstieg in die Materie war für mich Dank @lesiflo möglich der sein Skript zur Verfügung gestellt hat und mit Ratschlägen immer geholfen hat.
https://forum.iobroker.net/topic/80764/script-zum-laden-entladen-von-zendure-solarflow
Nachtrag: Mein Setup ist sehr ähnlich deinem.
Hyper 2000 nur über AC komplett offline betrieben.
An der Messstelle habe ich Shelly em3.
Aber alles was Daten an mqtt sendet kann man offline benutzen. -
Hallo,
ich war lange Zeit aktiver stiller Mitleser und bin aktuell soweit mir einen SF800pro zu kaufen.Mein Ziel ist es, über den AC-Lade-Modus meinen Überschuss des BKW damit aufzufangen und in den Akku zu pumpen. Meine PV-Module kann ich nicht direkt anschließen. Daher kann ich nur den AC-Lademodus verwenden.
Meine Frage dazu an euch, hat da jemand Erfahrungen damit?
Ich lese meinen Netzbezug/Netzeinspeisung über einen SML Lesekopf aus.Ziel ist es die Energie zu speichern sobald negativer Netzbezug (Einspeisung) erkannt wird über den SML Lesekopf. Über die App soll das ja gehen aber nur mit speziellen Leseköpfen z.B Shelly 3EM Pro oder den DO Zähler von Zensur, oder?
Kann ich das über mqtt und einem Script mit meinem Lesekopf bewerkstelligen?
Welche datenpunkte des Akku müsste ich da in einem Script bzw. Blockly ansteuern?
Entladen soll er dann nur am Abend wenn keine Sonne mehr scheint.Geht das überhaupt wie ich das plane? Will nicht unnötig eine Anschaffung tätigen wenn das nicht geht.
Danke schonmal für Tips oder Hilfestellung.
Grüße
@Freaknet sagte in Test Adapter Zendure Solarflow:
Hallo,
ich war lange Zeit aktiver stiller Mitleser und bin aktuell soweit mir einen SF800pro zu kaufen.Mein Ziel ist es, über den AC-Lade-Modus meinen Überschuss des BKW damit aufzufangen und in den Akku zu pumpen. Meine PV-Module kann ich nicht direkt anschließen. Daher kann ich nur den AC-Lademodus verwenden.
Meine Frage dazu an euch, hat da jemand Erfahrungen damit?
Ich lese meinen Netzbezug/Netzeinspeisung über einen SML Lesekopf aus.Ziel ist es die Energie zu speichern sobald negativer Netzbezug (Einspeisung) erkannt wird über den SML Lesekopf. Über die App soll das ja gehen aber nur mit speziellen Leseköpfen z.B Shelly 3EM Pro oder den DO Zähler von Zensur, oder?
Kann ich das über mqtt und einem Script mit meinem Lesekopf bewerkstelligen?
Welche datenpunkte des Akku müsste ich da in einem Script bzw. Blockly ansteuern?
Entladen soll er dann nur am Abend wenn keine Sonne mehr scheint.Geht das überhaupt wie ich das plane? Will nicht unnötig eine Anschaffung tätigen wenn das nicht geht.
Danke schonmal für Tips oder Hilfestellung.
Grüße
Hi, schau dir ja mal mein Blockly an was genau das macht. Link Text
-
Ich mache das mit dem Adapter und einer Steuerung über Blockly.
Für Leute ohne JS Kenntnisse wie mich eine problemlose Lösung.Ich habe mir Szenarien erstellt.
- Sommermodus. Laden und Einspeisen je nach Bedarf und Akkustand.
- Übergangszeit. Tagsüber Laden, Nachts Einspeisen.
- Winter. Laden bis der Akku voll ist über mehrere Tage, dann Nachts Einspeisen. (Wegen Akkukalibrierung.
Als Ladestop und Entladestop benutze ich die min und max Volt der Akkus.
Der Einstieg in die Materie war für mich Dank @lesiflo möglich der sein Skript zur Verfügung gestellt hat und mit Ratschlägen immer geholfen hat.
https://forum.iobroker.net/topic/80764/script-zum-laden-entladen-von-zendure-solarflow
Nachtrag: Mein Setup ist sehr ähnlich deinem.
Hyper 2000 nur über AC komplett offline betrieben.
An der Messstelle habe ich Shelly em3.
Aber alles was Daten an mqtt sendet kann man offline benutzen. -
Hey Leute,
vielen lieben Dank für die Tipps und Hilfestellung.
Das macht meine Kaufentscheidung leichter wenn das mit dem SF800pro so gut mit ioBroker, dem Adapter und MQTT funktioniert :-)Ich werde mir alles mal durchlesen und bei Bedarf nochmal darauf zurückkommen wenn der Akku dann angekommen ist und ich nicht weiterkomme.
Mir war/ist es nur noch nicht klar, wie ich den Akku "offline" so steuern kann, dass er nur bei "Negativbezug" die Leistung aus dem Hausnetz abgreift und die überschüssige Leistung dann in den Akku lädt. In der Zendur-App sollte das ja gehen über einen Shelly 3EM (bzw. Emu) bzw. D0-Zähler. Bin aber ein Freund vom Datensammeln und visualisieren und daher wäre mir das ganze über MQTT natürlich lieber.
@felli
das mit dem Otello Script und einem "Shelly 3 EM Emu" ist wirklich cool, hatte ich so noch nicht am Schirm, habe nur ein "normales" SML-Script mit Tasmota am laufen um die Einspeisung, Zählerstand und akt. Verbrauch zu tracken. Aber das sollte ja dann mit MQTT über den Akku und einem Blockly/Script auch zum realisieren sein, oder?Danke nochmal für die Hilfe bis dahin.
-
Hey Leute,
vielen lieben Dank für die Tipps und Hilfestellung.
Das macht meine Kaufentscheidung leichter wenn das mit dem SF800pro so gut mit ioBroker, dem Adapter und MQTT funktioniert :-)Ich werde mir alles mal durchlesen und bei Bedarf nochmal darauf zurückkommen wenn der Akku dann angekommen ist und ich nicht weiterkomme.
Mir war/ist es nur noch nicht klar, wie ich den Akku "offline" so steuern kann, dass er nur bei "Negativbezug" die Leistung aus dem Hausnetz abgreift und die überschüssige Leistung dann in den Akku lädt. In der Zendur-App sollte das ja gehen über einen Shelly 3EM (bzw. Emu) bzw. D0-Zähler. Bin aber ein Freund vom Datensammeln und visualisieren und daher wäre mir das ganze über MQTT natürlich lieber.
@felli
das mit dem Otello Script und einem "Shelly 3 EM Emu" ist wirklich cool, hatte ich so noch nicht am Schirm, habe nur ein "normales" SML-Script mit Tasmota am laufen um die Einspeisung, Zählerstand und akt. Verbrauch zu tracken. Aber das sollte ja dann mit MQTT über den Akku und einem Blockly/Script auch zum realisieren sein, oder?Danke nochmal für die Hilfe bis dahin.
@Freaknet sagte in Test Adapter Zendure Solarflow:
Mir war/ist es nur noch nicht klar, wie ich den Akku "offline" so steuern kann, dass er nur bei "Negativbezug" die Leistung aus dem Hausnetz abgreift und die überschüssige Leistung dann in den Akku lädt. In der Zendur-App sollte das ja gehen über einen Shelly 3EM (bzw. Emu) bzw. D0-Zähler. Bin aber ein Freund vom Datensammeln und visualisieren und daher wäre mir das ganze über MQTT natürlich lieber.
Das macht mein Scipt.
-
Also die Ottelo Scripts laufen meines Wissens zur Zeit mit Marstek und aktuell in Entwicklung mit dem Noah. Zendure verbindet den ja via Cloud, also egal ob Shelly oder Ecotracker und kann dann meine ich auch lokal zugreifen. Nutze das alles nicht daher keine Ahnung, sorry 😵💫
Mit Blockly und lokalem oder Cloud MQTT ist das aber kein Problem, muss dann allerdings von Dir umgesetzt werden, mit allem was dazu gehört. Ist aber dank der mittlerweile vielen coolen Projekte, eigentlich relativ easy.
-
Also die Ottelo Scripts laufen meines Wissens zur Zeit mit Marstek und aktuell in Entwicklung mit dem Noah. Zendure verbindet den ja via Cloud, also egal ob Shelly oder Ecotracker und kann dann meine ich auch lokal zugreifen. Nutze das alles nicht daher keine Ahnung, sorry 😵💫
Mit Blockly und lokalem oder Cloud MQTT ist das aber kein Problem, muss dann allerdings von Dir umgesetzt werden, mit allem was dazu gehört. Ist aber dank der mittlerweile vielen coolen Projekte, eigentlich relativ easy.
Ok... Marstek Speicher habe ich an meiner PV-Anlage dran, aber da hab ich mir über JavaScript und meinem SML-Zähler geholfen (ohne Shelly Emu).
Ich muss mal schauen ob ich das kpl. Image auf meinen Lesekopf spielen muss, oder ob es reicht, das Script einfach in mein Image zu kopieren, damit ich z.B. den Shelly emulieren kann.
Hab das hier gefunden dazu.
>D 250 ; Einfaches Shelly Emulator Script für ESP8266/ESP32 und Tasmota Image von ottelo ; Emuliert Shelly Pro 3EM für Marstek Akku Jupiter, Venus, B2500 ; Scriptgröße beim ESP8266 begrenzt: EEP_SCRIPT_SIZE 4096 ; Anleitung https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/#13a ; Script basiert auf https://github.com/gemu2015/Sonoff-Tasmota/blob/universal/tasmota/scripting/shelly_emu_script.tas ; Script ist für ein Wifi Tasmota ESP Lesekopf für Stromzähler gedacht, z.B. HichiV1/V2, Bitshake, usw. ; Der Text kann einfach so in den internen Editor von Tasmota eingefügt werden. Beim ESP8266 sollten alle Kommentare entfernen werden. ; Die Marstek App sucht nach dem Shelly via mDNS, der Emulator meldet sich als shellypro3em-<mac> ; Der Datenaustausch erfolgt dann via UDP alle paar Sek (~2-4s beim Jupiter C Plus) ; Zum erstmaligen Einrichten des Scripts folgendes in die Console eingeben (erst wenn auch Werte vom Zähler kommen!) ;script>=#init ; PermVars (max:1536bytes=384vars): Tages, Monats, Jahres Verbrauch / Einspeisung p:dval=0 p:dval2=0 p:mval2=0 p:mval=0 p:yval=0 p:yval2=0 p:pwroffset=0 p:pwrforce=0 p:throttle=1 t:t1=60 tmp=0 save=0 hr=0 ;-- SHELLY EMULATION -- res=0 c1p=0 c2p=0 c3p=0 c1c=0 c2c=0 c3c=0 cpwr=0 str="" mstr1="" mstr2="" mstr3="" header="" once=0 >B ->SetOption57 0 ->sensor53 r smlj=0 header="{\"id\":0,\"src\":\"shellypro3em-"+maca+"\",\"result\":" throttle=mp(throttle <1 1 >60 60) pwroffset=mp(pwroffset <-200 -200 >200 200) #init dval=sml[2] dval2=sml[3] mval=sml[2] mval2=sml[3] yval=sml[2] yval2=sml[3] ->Backlog2 otaurl KEIN OTA UPGRADE VIA WEBSERVER! ->Backlog2 Timezone 99;TimeStd 0,0,10,1,3,60;TimeDst 0,0,3,1,2,120 svars ;-- SHELLY EMULATION -- >ah res=won(1 "/rpc/*") >on1 str=warg if (str!="") { ;print RPC: %str% res=ins(str "EM.GetStatus") if res>=0 { =#getstat tmp=sl(mstr1)+sl(mstr2) =#header wcs so(4) wcs %header% wcs %mstr1% wcs %mstr2% wcf break } res=ins(str "Shelly.GetStatus") if res>=0 { =#getshellystat tmp=sl(mstr1)+sl(mstr2)+sl(mstr3) =#header wcs so(4) wcs %header% wcs %mstr1% wcs %mstr2% wcs %mstr3% wcf break } print unknown rpc request: %str% } #getstat ;EM.GetStatus dp(0 2) ;mstr1="{\"id\":0,\"a_current\":"+s(c1c)+",\"a_voltage\":230,\"a_act_power\":"+s(c1p)+",\"a_aprt_power\":"+s(c1p)+",\"a_pf\":1,\"a_freq\":50," ;mstr1+="\"b_current\":"+s(c2c)+",\"b_voltage\":230,\"b_act_power\":"+s(c2p)+",\"b_aprt_power\":"+s(c2p)+",\"b_pf\":1,\"b_freq\":50," ;mstr2="\"c_current\":"+s(c3c)+",\"c_voltage\":230,\"c_act_power\":"+s(c3p)+",\"c_aprt_power\":"+s(c3p)+",\"c_pf\":1,\"c_freq\":50," ;mstr2+="\"total_current\":"+s(c1c+c2c+c3c)+",\"total_act_power\":"+s(cpwr)+",\"total_aprt_power\":"+s(cpwr)+"}}" mstr1="{\"id\":0,\"a_act_power\":"+s(c1p)+",\"b_act_power\":"+s(c2p)+"," mstr2="\"c_act_power\":"+s(c3p)+",\"total_act_power\":"+s(cpwr)+"}}" #getshellystat ;Shelly.GetStatus, Beispiel Ausgabe https://forum.openwb.de/viewtopic.php?t=7444 dp(0 2) mstr1="{\"em:0\":{\"id\":0,\"a_act_power\":"+s(c1p)+",\"b_act_power\":"+s(c2p)+",\"c_act_power\":"+s(c3p)+",\"total_act_power\":"+s(cpwr)+"}," ;mstr2="\"emdata:0\":{\"id\":0,\"a_total_act_energy\":0,\"a_total_act_ret_energy\":0,\"b_total_act_energy\":0,\"b_total_act_ret_energy\":0,\"c_total_act_energy\":0,\"c_total_act_ret_energy\":0,\"total_act\":0,\"total_act_ret\":0}}" mstr2="\"emdata:0\":{\"id\":0,\"a_total_act_energy\":"+s(sml[2]*1000)+",\"a_total_act_ret_energy\":"+s(sml[3]*1000)+",\"b_total_act_energy\":0,\"b_total_act_ret_energy\":0,\"c_total_act_energy\":0,\"c_total_act_ret_energy\":0," mstr3="\"total_act\":"+s(sml[2]*1000)+",\"total_act_ret\":"+s(sml[3]*1000)+"}}" #header ; Beispiel https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/HTTP/#httpget-example header="HTTP/1.1 200 OK\r\nServer: ShellyHTTP/1.0.0\r\nContent-Type: application/json\r\nContent-Length: "+s(0tmp)+"\r\nConnection: close\r\n\r\n" >F ;-- SHELLY EMULATION -- ; UDP Anfrage beantworten str=udp(1) if (str!="") { ;print UDP: %str% header="{\"id\":0,\"src\":\"shellypro3em-"+maca+"\",\"result\":" res=ins(str "EM.GetStatus") if (res>=0) { =#getstat udp(2 header mstr1 mstr2) break } res=ins(str "Shelly.GetStatus") if res>=0 { =#getshellystat mstr3+="}" udp(2 header mstr1 mstr2) udp(2 mstr3) break } } >S if (save==1) { save=0 svars } ; Warte auf NTP und Zähler if ((year<2020) or (sml[2]==0)) { print auf NTP/Zähler warten break } ; Starte MQTT erst wenn Daten vom Stromzähler kommen smlj=1 ; alle 60s if (t1==0) { t1=60 hr=hours ; Tages-, Monats-, Jahresverbrauch um Mitternacht ; Aktualisiere & speichere Zählerstände if ((chg[hr]>0) and (hr==0)) { ; Tageswechsel dval=sml[2] dval2=sml[3] if (day==1) { ; Monatswechsel mval=sml[2] mval2=sml[3] } if (day*month==1) { ; Jahreswechsel yval=sml[2] yval2=sml[3] } ; nur 1x um Mitternacht speichern svars } } ;-- SHELLY EMULATION -- if (once==0) { ; starte mDNS damit Marstek den emulierten Shelly findet mdns("shellypro3em-" "-" "shelly") ; start UDP für Datenkommunikation ; Port 1010 oder ggf. 2220 für B2500 udp(0 1010) once=1 } ; Werte nur alle x Sek updaten (throttle=1 => sekündlich) if (upsecs%throttle==0) { ; Peaks reduzieren, verbessert Regelung tmp=sml[1]-cpwr if (tmp>500) { cpwr=sml[1]-(tmp/2) } else { ; Nulleinspeisung-Offset: reduziere die Leistung damit die Regelung nicht um 0W herum schwingt. Nur sinvoll, wenn PV-Panels direkt am Akku hängen. cpwr=sml[1]-pwroffset } ; Standard: Zähler sendet nur Gesamtleistung c1p=cpwr ; Optional: Wenn Zähler auch Einzelleistungen sendet (L1-3). Marstek prüft dann, auf welcher Phase er verbunden ist. ; entfernen um zu verwenden. ;c1p=sml[4] ;c2p=sml[5] ;c3p=sml[6] ; Ströme berechnen c1c=c1p/230 ;c2c=c2p/230 ;c3c=c3p/230 ; Optional: Sende auch, wenn Marstek nicht anfragt, verbessert Marstek Regelung if (pwrforce>0) { =#getstat udp(2 header mstr1 mstr2) } >W bu(save "gespeichert!" "Daten sofort speichern") Leistung (an Marstek Akku){m}%0cpwr% W Tagesverbrauch{m}%2(sml[2]-dval)% kWh Monatsverbrauch{m}%2(sml[2]-mval)% kWh Jahresverbrauch{m}%2(sml[2]-yval)% kWh Tageseinspeisung{m}%2(sml[3]-dval2)% kWh Monatseinspeisung{m}%2(sml[3]-mval2)% kWh Jahreseinspeisung{m}%2(sml[3]-yval2)% kWh Uptime{m}%0uptime% min $<span style="font-size:10px;"> $<b>Einstellungen / Status</b><br> $Ändern der [Variable] via Console: script>var=x<br> $- Update der Werte verzögern [throttle]: %0throttle% s<br> $- Offset für Nulleinspeisung [pwroffset]: %0pwroffset% W<br> $- Datenübertragung erzwingen [pwrforce]: %0pwrforce% s<br> $Scriptspeicher: %0slen% chars / 4096(1M) 8192(4M) $<hr> $<center>Version 21.02.2026 (ShellyEmuSimple) by ottelo.jimdo.de<br> $Credits to gemu2015 (Tasmota Script Dev)<br> $</span></center> ; SML Sektion an euren Stromzähler anpassen ; Anleitung: https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/#4c ; Reihenfolge nicht ändern: 1=(Gesamt)Leistung sml[1] 2=Verbrauch sml[2] 3=Einspeisung sml[3] ; Medianfilter <flag> = 16 nicht verwenden, verbessert Marstek Regelung ; https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-definition >M 1 ; Beispiel MT175 mit HichiV1/V2 +1,3,s,0,9600,MT175,1 1,77070100100700ff@1,Leistung,W,Power_curr,0 1,77070100010800ff@1000,Verbrauch,KWh,Total_in,2 1,77070100020800ff@1000,Einspeisung,KWh,Total_out,2 ;optional - Falls die Leistung aller 3 Phasen ausgegeben wird, optional relevant für Shelly Emulation sml[4],[5],[6] ;1,77070100240700ff@1,L1,W,L1,0 ;1,77070100380700ff@1,L2,W,L2,0 ;1,770701004C0700ff@1,L3,W,L3,0 # -
Also ja warum nicht, solange da die richtige Script Konsole drauf ist, sollte es gehen. Kann aber auch sein, das seine Images noch weitere goodies enthalten ich weiß es nicht. Nutze sein Script und Image und das läuft tadellos also warum nicht. Zur Not einfach mal beim ihm auf GitHub nachfragen. Viel Erfolg !!