NEWS
DMP8624 -> iobroker
-
ok hast gewonnen
wie machen wir weiter ?
Ein DPM Script für alle IR Leseköpfe bauen, also den Status SNS komplett abholen.
Dann den Bezugswert Filtern. Habe ja kein Hichi. Dieser Wert kann ja anders benannt sein,
Dann Script cleanen und die erste Beta 1.0 bauen.
Weiter dann mit der Berechnung Bezug -> DPM setzt V und A ?Gruß Ralla
Nachtrag, Leseköpfe ( Status SNS ) Json einlesen, dann würden auch Shelly PM gehen.
-
@ralla66 ,
ja schau mal ob du den Wert rausfiltern kannst.Mit http("192.168.xxx.xxx" "/cm?cmnd=script>Variablename=Wert) kannst du jeder Variable im Script einen Wert verpassen.
Mit Variable=http("192.168.xxx.xxx" "/cm?cmnd=script?Variablename) kannst du jeden Wert anfordern. -
Ok ich teste mal mit Bezug Aktuell,
dann brauche ich noch ein Ausgabefenster in der WEB UI mit Wert Bezug Aktuell
Bzw 2, Bezug Zähler und DPM Ausgang Watt
Du kannst das schneller
Ziel ist ja erreicht, Feierabend ist heute früher.
Lehrbrief 1, Übung 1 mit Sehr Gut bestanden -
so ?
>D ; Ralla Bezug Aktuell=0 >T ; alle 10 sec Telemetrieperiode eingestellt ; Ralla ; jeder Variable im Script einen Wert zuweisen http("192.168.2.28" "/cm?cmnd=script>Bezug Aktuell=Wert) print Bezug Aktuell %Bezug Aktuell%
-
@ralla66 ,
http("192.168.2.28" "/cm?cmnd=script>Bezug Aktuell=Wert")
mit dem Befehl sendest du den Wert an 192.168.2.28.
Im 192.168.2.28 muss es eine Variable Bezug Aktuell geben. -
ah ja, so ne Art send to
dann ist ja das hier vom Zähler ESP holen, jezz is klar
Mit Variable=http("192.168.xxx.xxx" "/cm?cmnd=script?Variablename) kannst du jeden Wert anfordern
Ne doch nich, der Pfad im Zähler ESP ist doch StatusSNS->MT175.>Bezug Aktuell->Wert.
Ich brauche ne Pause ------------------------->19:43:19.058 MQT: stat/tasmota_3CECBB/RESULT = {"WebQuery":{"StatusSNS":{"Time":"2023-09-20T19:43:16","MT175":{"Geräte_ID":"","Verbrauch_Gesamt":37715,"Bezug_Tarif_1":37714.529,"Bezug_Tarif_2":0,"Netzeinspeisung":0,"Lieferung_Tarif_1":0,"Lieferung_Tarif_2":0,"Bezug_aktuell":93,"Phase_L1":16,"Phase_L2":6,"Phase_L3":70}}}}
>D ; Ralla Bezug Aktuell=0
;Mit Variable=http("192.168.xxx.xxx" "/cm?cmnd=script?Variablename) kannst du ;jeden Wert anfordern Bezug Aktuell=http("192.168.2.28" "/cm?cmnd=script?Bezug_Aktuell) print Bezug Aktuell %Bezug Aktuell%
-
@ralla66 ,
da musst du machenT
aktuell= MT175#Bezug AktuellDann kannst du aktuell senden oder anfordern.
Schaue in meiner Lösung von der vorherigen Seite. -
ok, Danke, heute nicht mehr.
Sackt langsam, das ist im Zähler ESP.
Das war bei mir nicht geplant, immer schwierig für Beginner wenn auf der Tasmota Seite
das SML angepasst werden muß. Einfacher wäre es nur in der DPM Script Var Deklaration
ein Paar Werte einzugeben. Das ist ja für mich schon sehr schwer. -
Nachtrag:
Werde das wohl so bauen,
Ein / Aus für Wartungsarbeiten
Automatic Ein ist Nulleinspeisung
Automatic Aus Handvorgaben zum Testen des Wirkungsgrades
Button Timer Ein / Aus noch einfügen für vorgegebene Timerzeiten aus dem
Script Bsp: 19:00 - 6:00, Internen Tasmota Timer nutzen
Mqtt alle StatusSNS Werte nach IO -
@ralla66 ,
habe es jetzt geschafft ohne Änderung des Stromzähler Scripts.
Es muss aber wieder was in die Firmware eingefügt werden.
Habe das jetzt alles drin:#define USE_SCRIPT_WEB_DISPLAY #define USE_WEBSEND_RESPONSE #define USE_SCRIPT_STATUS #define USE_SCRIPT_FULL_JSON_PARSER #define USE_SCRIPT #define SUPPORT_MQTT_EVENT #define USE_SML_M #define USE_SML_SCRIPT_CMD
>D Timer=0 pwr=0 Vmax=60 Cmax=24 V=0 C=0 SW=0 rV="01060000" vV="" rC="01060001" vC="" rSW="01060002000" vSW="" >BS +>subscribe V, cmnd/%topic%/tvolt +>subscribe C, cmnd/%topic%/tampere +>subscribe SW, cmnd/%topic%/tpow >B ->sensor53 r tper=10 >S Timer+=1 if Timer>10 { =>websend [192.168.xxx.xxx] /cm?cmnd=status 10 Timer=0 } if chg[SW]>0 { vSW=rSW+s(SW) sml(1 3 vSW) +>publish stat/%topic%/RESULT {"tpow":%0SW%} } if chg[V]>0 { if V>Vmax { V=Vmax } if V<0 { V=0 } vV=rV+sb(hx((V*100)) 4 4) sml(1 3 vV) +>publish stat/%topic%/RESULT {"tvolt":%2V%} } if chg[C]>0 { if C>Cmax { C=Cmax } if C<0 { C=0 } vC=rC+sb(hx((C*1000)) 4 4) sml(1 3 vC) +>publish stat/%topic%/RESULT {"tampere":%2C%} } >E pwr=WebQuery#StatusSNS#MT175#P >W bu(SW "DPM Ein" "DPM Aus") nm(0.0 60.0 0.01 V "DPM Ausgang (V)" 200 2) nm(0.0 24.0 0.01 C "DPM Ausgang (A)" 200 2) Aktuelle Leistung{m} %0pwr% W >M 1 +1,3,m,16,9600,DC,1,2,010300000001,010300010001,010300020001,010310030001 1,010302SSssxxxx@i0:100,Spannung,V,sVolt,2 1,010302SSssxxxx@i1:1000,Strom,A,sCur,2 1,010302SSssxxxx@i2:1,Ausgang,,sSwitch,0 1,010302SSssxxxx@i3:1,Temp,°C,tCur,1 #
E ;hier das json parsen
-
@wal
ja cool, werde ich am Wochenende testen.
Werde mal schauen was am Compiler bei mir nicht stimmt.
Weisst du ob er Timer mit der Tagesvorwahl in Tasmota Standart mit drin ist.
Hatte noch keine Zeit das prüfen.
Bin am vorbereiten, da morgen der Dachdecker noch 4 Module anbringt. -
@ralla66 ,
bei mir nicht, müsste ich erst hinzufügen. -
Habe immer Warning Fehler auf Git. Das nervt als Beginner.
Erst recht wenn man keine Ahnung hat. -
@ralla66 ,
habe wieder was.
Globale Variable
Man braucht kein websend es funktioniert einfach so. -
Morgen, läuft nun, wir sollen mal eine Versionnummer vergeben.
Jetzt die Verkasperung, wenn Bezug Watt ist x steuere V und A mit
Natürlich gepart mit Triggerudatezeit.
Schöner Wohnen machen wir am Scluss, sollte erst laufen.Nachtrag
für eine Nachteinspeisung sollten wir einen Button anlegen Timer aktiv.
Wichtige Parameter wie Bezug Zähler und berechnete Ausgangsleistung BAL gehören auch dazu.
So wird auch sofort erkannt ob der Zähler ESP läuft und ob das Script läuft.
DC Ausgang und Temp sind ja eher Schöner Wohnen.Für die Berechnung Bezug -> Ausgang könnte man die Daten eines HM 600
nehmen, linear dürfte reichen. Betrieb des HM etc unter 50 Watt ist eher Sinn befreit.
Die Daten V und A eines HM könnte ich Live mitloggen wenn Sonne da ist. -
@ralla66 ,
da habe ich im Moment die Hardware dazu zum testen. Du musst aber den Skriptspeicher im Auge behalten oder auf einen ESP32 wechseln. Berryscript sollte ich mir auch mal anschauen. -
bestelle schon mal Esp32 falls das zu wenig ist.
1366 Zeichen sind übrig.
Im Script fehlt ja nur noch Wert Bezug extrahieren und die Berechnung.
Denke wird bsp. -> 150 Watt Bezug : Volt Festwert 29 Volt = A <-Der Pylontech hat immer zwischen 47 und 52 Volt .
Schaue heute abend mal die Livedaten ab 19:00 Uhr.erster Eindruck, Hoymiles DC eine Seite,
Nachtrag, man könnte auch den Mppt des WR setzen zwischen 25 und 32 Volt, 0 -12 A .
Dazu müsste der Mppt Point bekannt sein oder eine Var anlegen das jeder Fest Volt
selbst bestimmt.
Der Lumentree hat meist bsp. -> 150 Watt Bezug : Volt Festwert 49 Volt Pylon = A <-
Na ja, Pylontech Spannungswert einlesen ist ja jetzt easy. -
@ralla66 ,
ja das wollte ich so umsetzen, feste Spannung am WR und Ampere regeln.
Nach dem Einschalten des DPM die Spannung langsam hochfahren auf z.B. 30V und danach je nach Leistungsabnahme den Strom regeln.Edit: ich nutze ein APSystems DS3-S den kann man noch nicht regeln.
-
dann lass uns doch eine Var einfügen Spannungswert Ausgang. Diese kann dann
fest sein oder Variable durch Pylon Spannungswerte oder andere Wechselrichterwerte
beschrieben werden. Festwert würde mir auch reichen, so genau muss das nicht geregelt
werden.Ich mag die alten Analoginstrumente
-
@ralla66,
habe mir jetzt eine einfache Regelung erstellt die schon sehr gut funktioniert.
Muss mir noch mit Grafana ein Graph erstellen für den Langzeittest.
Ist mit der Rechnungp=pwr-(U*I)
erstellt, da ich noch keine Batterie habe und den aktuellen Verbrauch hole ich mir über eine Globale Variable da das einfach ist.
>D g:pwr=0 p=0 timer=0 Umax=40 Imax=10 Ppos=20 Pneg=-50 U=40 I=0.5 p:SW=0 rU="01060000" vU="" rI="01060001" vI="" rSW="01060002000" vSW="" >BS +>subscribe U, cmnd/%topic%/tvolt +>subscribe I, cmnd/%topic%/tampere +>subscribe SW, cmnd/%topic%/tpow >B ->sensor53 r tper=10 >S dt [l1c1p10]pwr=%pwr% p=pwr-(U*I) timer+=1 if timer>3 { if p>Ppos { I+=0.5 } if p<Pneg { if p<-150 { I=0.5 } I-=0.5 } timer=0 } if chg[SW]>0 { vSW=rSW+s(SW) sml(1 3 vSW) +>publish stat/%topic%/RESULT {"tpow":%0SW%} } if chg[U]>0 { if U>Umax { U=Umax } if U<0 { U=0 } vU=rU+sb(hx((U*100)) 4 4) sml(1 3 vU) +>publish stat/%topic%/RESULT {"tvolt":%2U%} } if chg[I]>0 { if I>Imax { I=Imax } if I<0.5 { I=0.5 } vI=rI+sb(hx((I*1000)) 4 4) sml(1 3 vI) +>publish stat/%topic%/RESULT {"tampere":%2I%} } >W bu(SW "DPM Ein" "DPM Aus") nm(0.0 60.0 0.01 U "DPM Ausgang (V)" 200 2) nm(0.0 24.0 0.01 I "DPM Ausgang (A)" 200 2) Aktuelle Leistung{m} %0pwr% W Errechnete Leistung{m} %0p% W >M 1 +1,3,m,16,9600,DC,1,2,010300000001,010300010001,010300020001,010310030001 1,010302SSssxxxx@i0:100,Spannung,V,sVolt,2 1,010302SSssxxxx@i1:1000,Strom,A,sCur,2 1,010302SSssxxxx@i2:1,Ausgang,,sSwitch,0 1,010302SSssxxxx@i3:1,Temp,°C,tCur,1 #