Code: Alles auswählen
>D
;start, define variables
wkup=0
timer=0
p:w_last=0
p:w_new=0
w_reading=0
w_delta=0
p_average=0
read=0
calc=0
>B
->sensor53 r
;w_new=26466
;svars
>T
if WAERME#w_total>0
then
w_reading=WAERME#w_total
endif
>S
if read==1
then
=#readmeter
read=0
endif
if calc==1
then
=#calculate
calc=0
endif
timer=int(time)
if chg[timer]>0
;once every minute
then
switch timer
case 1
print it is midnight
w_last=w_new
=#readmeter
case 2
print p_new is definitively updated, start calculation
=#calculate
ends
endif
#calculate
w_new=w_reading
print save value
svars
w_delta=w_new-w_last
p_average=w_delta/24
print w_last %0w_last%
print w_new %0w_new%
print w_delta %0w_delta%
print p_average %3p_average%
#readmeter
print wakeup start
;set serial protocol
sml(-1 1 "2400:8N1")
;0x55 for 2,2 seconds with 8N1 (53x), 2400 baud (wakeup sequence)
for wkup 0 52 1
sml(1 1 "55555555555555555555")
next
wkup=0
print wait for the meter
delay(350)
;switch protocol
sml(-1 1 "2400:8E1")
print request data
;send "105BFE5916" (request data)
sml(1 1 "105BFE5916")
>J
;MQTT
,"WAERME_CALC":{"w_total":%w_new%
,"w_delta":%w_delta%
,"p_average":%p_average%}
>W
;web UI
===============
Verbrauch Vortag: {m} %0w_delta% kWh
Durchschnittsleistung: {m} %3p_average% kW
Zählerstand alt: {m} %0w_last% kWh
Zählerstand neu: {m} %0w_new% kWh
bu(read "lese aus" "Zähler auslesen")
bu(calc "..." "berechnen")
>M 1
+1,3,rE1,0,2400,WAERME,1
;Sensor 1: 8E1
1,0C78bcd8@1,ModuSeriennummer,,serialnum,0
1,0406uuUUUUUU@1,Total energy,kWh,w_total,0
1,0C14bcd8@100,Total volume,m³,v_total,2
1,0B2Dbcd6@0.01,Current power,W,p_act,0
1,0B3Bbcd6@1000,Current flow,m³/h,f_akt,3
1,0A5Abcd4@10,Flow temp,°C,t_flow,1
1,0A5Ebcd4@10,Return temp,°C,t_return,1
1,0B61bcd6@100,Temp diff,°C,t_diff,2
1,046Dbcd8@1,Time,,time,0
1,0227uuUU@1,Meter days,d,OpDays,0
1,09FD0Euu@1,Firmware Version,,FW_Version,0
1,09FD0Fuu@1,Software Version,,SW_Version,0
1,684d4d68080072x4uuUU@1,Manufacturer,,manufacturer,0
1,684d4d68080072x4x2uu@1,Generation,,generation,0
1,684d4d68080072x4x2x1uu@1,Medium,,media,0
1,684d4d68080072x4x2x1x1uu@1,Zaehler Auslesungen,,cnt_read,0
1,684d4d68080072x4x2x1x1x1uu@1,Fehlerbyte,,Error_State,0
#
Ich habe mal testweise das von dir gepostete verwendet, macht aber leider keinen Unterschied:
Ich dachte Anfangs, dass Solaranzeige einfach MQTT-Nachrichten versteht und die empfangenen Werte in die Datenbank schreibt. Das ist ja nicht der Fall. Alternativ könnte ich in Tasmota die Nachricht anpassen. xxx und yyy sind durch das Script bestimmt, einzig der Zeitstempel ist schon in der Tasmota Firmware festgelegt so weit ich weiß.