NEWS
DMP8624 -> iobroker
-
@ralla66 ,
denk daran das man eine Firmware mit USE_WEBSEND_RESPONSE braucht. -
@ralla66 ,
hier für dich falls du es noch nicht kennst.edit: Werde ich heute testen ob ich den aktuellen Verbrauch vom hichi holen kann wenn du nicht dazu kommst.
-
heute morgen war um 0:30 Feierabend
den Link lese ich heute Abend,
habe boot error am ESP nach dem flashen / script einfügen, war eventuell schon übermüdet
meine .bin mit USE_WEBSEND_RESPONSE aktiviert lief nicht sauber.
kannst du mal bitte die .bin hochladen mit Zeile 471 USE_WEBSEND_RESPONSE aktiviert
Wäre cool wenn du mit testes, macht das debuggen einfacher.Danke
-
-
Danke, jetzt weiter
-
erste Antwort, bekomme ein WEbQuery zurück
17:35:28.308 SCR: performs "WebSend [192.168.2.28] /cm?cmnd=status&2010" 17:35:29.951 MQT: stat/tasmota_3CECBB/RESULT = {"WebQuery":{"Status":{"Module":18,"DeviceName":"SMA","FriendlyName":["SMA"],"Topic":"tasmota_D35C9C","ButtonTopic":"0","Power":0,"PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0}}} 17:35:29.955 MQT: stat/tasmota_3CECBB/RESULT = {"WebSend":"Done"} 17:35:29.957 Ralla websend
>D ; Ralla gw="" Vmax=60 Cmax=24 v=0 V=0 c=0 C=0 sw=0 SW=0 ; Ralla WS=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 smlj=0 ->sensor53 r ; Ralla ; Request Status information. The response will trigger the `U` section +>status 5 >R smlj=0 >S if upsecs>30 then smlj=1 endif >W bu(SW "DPM Ein" "DPM Aus") ; Ralla bu(WS "WebSend" "Websend") 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) >T sw=DC#sSwitch v=DC#sVolt c=DC#sCur if ((chg[sw]>0) and (SW!=sw)) then SW=sw +>publish stat/%topic%/RESULT {"tpow":%0sw%} endif if ((chg[v]>0) and (V!=v)) then V=v +>publish stat/%topic%/RESULT {"tvolt":%2v%} endif if ((chg[c]>0) and (C!=c)) then C=c +>publish stat/%topic%/RESULT {"tampere":%2c%} endif if chg[V]>0 then if V>Vmax then V=Vmax endif if V<0 then V=0 endif vV=rV+sb(hx((V*100)) 4 4) +>publish stat/%topic%/RESULT {"tvolt":%2V%} sml(1 3 vV) endif if chg[C]>0 then if C>Cmax then C=Cmax endif if C<0 then C=0 endif vC=rC+sb(hx((C*1000)) 4 4) +>publish stat/%topic%/RESULT {"tampere":%2C%} sml(1 3 vC) endif if ((chg[SW]>0) then vSW=rSW+s(SW) +>publish stat/%topic%/RESULT {"tpow":%0SW%} sml(1 3 vSW) endif ; Ralla if ((chg[WS]>0) then =>WebSend [192.168.2.28] /cm?cmnd=status&2010 res=WebSend [192.168.2.28] /cm?cmnd=status&2010 ;Org Ralla IO http://192.168.2.28/cm?cmnd=status%2010 print Ralla websend endif ; Ralla ; Read the status JSON payload >U gw=StatusNET#Gateway ;gw=StatusSNS,MT175,Bezug_aktuell print %gw% print Ralla gw >M 1 +1,3,m,16,9600,DC,1,2,010300000001,010300010001,010300020001,010310010001,010310020001 1,010302SSssxxxx@i0:100,Spannung (set),V,sVolt,2 1,010302SSssxxxx@i1:1000,Strom (set),A,sCur,2 1,010302SSssxxxx@i2:1,Ausgang (set),,sSwitch,0 1,010302SSssxxxx@i3:100,Spannung (disp),V,dVolt,2 1,010302SSssxxxx@i4:1000,Strom (disp),A,vCur,2 #
-
@ralla66 ,
-
@ralla66 ,
Hichi:
>D aktuell=0 >B ->sensor53 r >T aktuell=MT175#P http("192.168.xxx.xxx" "/cm?cmnd=script>Aktuell="+s(aktuell)) >M 1 +1,3,s,16,9600,MT175 1,77070100010800ff@1000,E_in,kWh,E_in,1 1,77070100010801ff@1000,E_in_HT,kWh,E_in_HT,1 1,77070100010802ff@1000,E_in_NT,kWh,E_in_NT,1 1,77070100020800ff@1000,E_out,kWh,E_out,1 1,77070100100700ff@1,P,W,P,18 1,77070100000009ff@#,Server_ID,,Server_ID,0 #
DPM8624:
>D Aktuell=0 >W Aktuelle Leistung{m} %0Aktuell% W
-
Habe die Data, %20 weglassen
18:10:08.057 SCR: performs "WebSend [192.168.2.28] /cm?cmnd=status 10" 18:10:08.622 MQT: stat/tasmota_3CECBB/RESULT = {"WebQuery":{"StatusSNS":{"Time":"2023-09-20T18:10:08","MT175":{"Geräte_ID":"","Verbrauch_Gesamt":37714,"Bezug_Tarif_1":37714.412,"Bezug_Tarif_2":0,"Netzeinspeisung":0,"Lieferung_Tarif_1":0,"Lieferung_Tarif_2":0,"Bezug_aktuell":9,"Phase_L1":17,"Phase_L2":-71,"Phase_L3":62}}}} 18:10:08.626 MQT: stat/tasmota_3CECBB/RESULT = {"WebSend":"Done"} 18:10:08.628 Ralla websend
; Ralla if ((chg[WS]>0) then ;10 = show connected sensor information (replaces 'Status 8') =>WebSend [192.168.2.28] /cm?cmnd=status 10 print Ralla websend endif
Yeep
jetzt noch zerlegen, Ideen ? mit U ?Teste mal mit Hichi ob Daten kommen
-
@ralla66 ,
Ätsch war trotzdem erster. -
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