Stromzähler ablesen in Fhem

Begonnen von Tommy82, 27 Februar 2019, 20:58:18

Vorheriges Thema - Nächstes Thema

dennis_n

ok, vergesst meinen lezten Beitrag.

Um die Steuer für die PV Anlage zu machen, brauche ich immer am letzten des Monats um 0 Uhr den aktuellen Zählerstand für den Gesamtbezug und den für die Gesamteinspeisung und die erzeugten kWh aus dem Wechselrichter.

Wie mache ich das, dass mir fhem diese 3 Daten irgendwo protokolliert?

Danke euch
Dennis

hapege

#166
Hallo,

Hier "mein" Script (habe ich auch im Wesentlichen aus anderen Quellen zusammenkopiert und angepassst) mit allen Werten, die ich meinem Zähler so entlocken konnte, z. B. auch die Einspeisung. Tages-/Jahresverbrauch liefert der Zähler entweder nicht über die optische Schnittstelle, oder ich finde sie nicht. Ich habe das im Script so gelöst, dass immer um Mitternacht der Tagesverbrauch berechnet wird (Differenz zum letzten Mitternachtswert), und dieser per MQTT als "dayconsumption" gepostet wird.
Über "hours" bekomme ich "Mitternacht" getriggert - Wenn Du dasselbe mit "month" machst, solltest Du es hinbekommenjeden Monatswechsel die Differenz berechnen können.


>D 
pin=0   
pi_t=0
pi_l=0
pi_h=0
pi_lh=0
hr=0
hrr=0
; permanent midnight values 
p:pi_m=0
p:pi_d=0
p:pi_y=0
>B 
->sensor53 r 
>T 
; get total consumption and total feed 
pin=SML#EnergyTotal 
;=>publish tele/%topic%/DAY {"dayconsumption":%pi_d%}
>S 
; at midnight, save meter total values 
hr=hours 
if chg[hr]>0 
and hr==0 
then
pi_y=pin-pi_m
pi_m=pin
=>publish tele/%topic%/DAY {"dayconsumption":%pi_y%,"tillmidnight":%pi_d%}
svars 
endif
hrr=hr
if chg[hrr]>0 
then
pi_h=pin-pi_lh
pi_lh=pin
=>publish tele/%topic%/HOUR {"lasthour":%pi_h%,"sumtillmtime":%pi_d%,"mtime":%hrr%}
; =>publish tele/%topic%/DAY {"dayconsumption":%pi_y%,"tillmidnight":%pi_d%}
svars 
endif
; on teleperiod calculate current daily values from midnight 
if upsecs%tper==0 
then 
pi_d=pin-pi_m 
pi_t=(pin-pi_l)*1000
pi_l=pin
endif 
; show these values on WEB UI 
>W 
Tagesverbrauch: {m} %pi_d% kWh
Messinterval (%tper s): {m} %pi_t% Wh   
; transmit these values with MQTT 
>J
,"sincemidnight":%pi_d%,"lastperiod":%pi_t%
; meter definition
>M 1 
+1,14,s,0,9600,SML
1,77070100010800ff@1000,Energy Total,KWh,EnergyTotal,4
1,77070100020800ff@1000,Energy Out,kWh,EnergyOut,4 
1,77070100100700ff@1,Power Now,W,PowerNow,0
1,7707010060320101@#,Service ID,,MeterID,0
1,77070100200700ff@1,Voltage L1,V,Volt_L1_curr,1
1,77070100340700ff@1,Voltage L2,V,Volt_L2_curr,1
1,77070100480700ff@1,Voltage L3,V,Volt_L3_curr,1
1,770701001f0700ff@1,Amperage L1,A,Amperage_L1_curr,2
1,77070100330700ff@1,Amperage L2,A,Amperage_L2_curr,2
1,77070100470700ff@1,Amperage L3,A,Amperage_L3_curr,2
1,770701000e0700ff@1,Frequency,Hz,HZ,2
1,77070100510701ff@1,Phase angle U-L2/U-L1,deg,phase_angle_L2_L1,1
1,77070100510702ff@1,Phase angle U-L3/U-L1,deg,phase_angle_L3_L1,1
1,77070100510704ff@1,Phase angle I-L1/U-L1,deg,phase_angle_P1,1
1,7707010051070fff@1,Phase angle I-L2/U-L2,deg,phase_angle_P2,1 
1,7707010051071aff@1,Phase angle I-L3/U-L3,deg,phase_angle_P3,1
#


Wenn man den Wert in ein FileLog schreibt, ergibt sich so ein schönes Wochen/Monats/Jahres-SVG.
"lastperiod" liefert den Verbrauch der letzten Teleperiod - typischerweise also der letzten 300s. Wenn man das über ein userReading mit 12 multipliziert erhält man eine Vorstellung, wieviel W im Mittel quasi-aktuell verbraucht werden (der jeweils alle 300s gelieferte Wert ist ja nur die zu genau diesem Zeitpunkt gemessene Lieferung - wenn gerade die Kaffeemaschine läuft ist das eher zufällig hoch, über 5 min gemittelt realistischer).
"sincemidnight" liefert die zum aktuellen Zeitpunkt am aktuellen Tag bisher verbrauchte Energie (auch wieder als Differenz seit Mitternacht).

Dann gäbe es noch den "ElectricityCalculator" (https://forum.fhem.de/index.php?topic=57106.0 ) - habe ich nicht ausprobiert, aber vielleicht kommst Du damit zum Ziel.
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

carlos

Ok, dann hier mal mein script:

>D
v1=0
v2=0
v3=0
min=0
hr=0
md=0
yr=0
rssi=0
ed=0
;Bezug
nb=0
p:sm=0
sd=0
p:sma=0
smn=0
p:sya=0
syn=0
sspr=0.2583
yspr=0
ysgp=156.00
;Einspeisung
ne=0
p:em=0
ed=0
p:ema=0
emn=0
p:eya=0
eyn=0
eepr=0.0700
yepr=0
yegp=0.00
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_cur
rssi=Wifi#RSSI
>B
=>sensor53 r
tper=10
>S
min=int(time/5)
;TV
hr=hours
if chg[hr]>0
and hr==0
then
sm=v1
em=v2
nb=v3
ne=v3
svars
endif
if upsecs%tper==0
then
sd=v1-sm
ed=v2-em
nb=v3
ne=v3*-1
endif
;MV
md=day
if chg[md]>0
and md==1
then
sma=v1
ema=v2
svars
endif
if upsecs%tper==0
then
smn=v1-sma
emn=v2-ema
endif
;JV
yr=year
if chg[yr]>0
then
sya=v1
eya=v2
svars
endif
if upsecs%tper==0
then
syn=v1-sya
eyn=v2-eya
;Kosten
yspr=syn*sspr+ysgp
yepr=eyn*eepr
endif
if v3>0
then
nb=v3
ne=0
else
nb=0
ne=v3*-1
endif
>J
,"bezug_aktuell":"%nb%"
,"bezug_tag":"%sd%"
,"bezug_monat":"%smn%"
,"bezug_jahr":"%syn%"
,"bezug_total":"%v1%"
,"einspeisung_aktuell":"%ne%"
,"einspeisung_tag":"%ed%"
,"einspeisung_monat":"%emn%"
,"einspeisung_jahr":"%eyn%"
,"einspeisung_total":"%v2%"
>W
WLAN Empfang: {m}%rssi%
<hr/>
Strom {m}Bezug{m}Einspeisung
Tag: {m}<b><span style="color:red">%3sd% KWh</span></b> {m}<b><span style="color:green">%3ed% KWh</span></b>
Monat: {m}<b><span style="color:red">%3smn% KWh</span></b> {m}<b><span style="color:green">%3emn% KWh</span></b>
Jahr:{m}<b><span style="color:red">%3syn% KWh</span></b> {m}<b><span style="color:green">%3eyn% KWh</span></b>
€ Strom: {m}<b><span style="color:red">%2yspr% €</span></b> {m}<b><span style="color:green">%2yepr% €</span></b>
<hr/>
Strom Zähler{m}Bezug{m}Einspeisung
aktuell: {m} %3v1% KWh {m} %3v2% KWh
0:00 Uhr: {m} %3sm% KWh {m} %3em% KWh
Monatsanfang: {m} %3sma% KWh {m} %3ema% KWh
Jahresanfang: {m} %3sya% KWh {m} %3eya% KWh
<hr/>
>M 1
+1,14,s,0,9600,SML
1,77070100010800ff@1000,Bezug: ,KWh,Total_in,4
1,77070100020800ff@1000,Einspeisung: ,KWh,Total_out,4
1,77070100100700ff@1,Akt. Verbrauch: ,W,Power_cur,0
1,=h<hr/>
1,77070100000009ff@#,Zähler Nr,,Meter_id,0
1,=h<hr/>
#


Setzen der Einspeise bzw. Verbrauchs - Werte der Vortage/Vorjahre/Vormonate:

script >sma=1261.447;sya=711;eya=3815;ema=1261.447;svars

So sieht das Webui aus:
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Sany

Zitat von: dennis_n am 27 Januar 2023, 19:51:08
ok, vergesst meinen lezten Beitrag.

Um die Steuer für die PV Anlage zu machen, brauche ich immer am letzten des Monats um 0 Uhr den aktuellen Zählerstand für den Gesamtbezug und den für die Gesamteinspeisung und die erzeugten kWh aus dem Wechselrichter.

Wie mache ich das, dass mir fhem diese 3 Daten irgendwo protokolliert?

Danke euch
Dennis

schau Dir das mal an:
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Zum Schnelleinstieg genügt es in der Def die Zähler einzutragen, für die "Cards" solltest Du dich in uiTable etwas einarbeiten, da hier noch Handarbeit angesagt ist.
Ich nutze hauptsächlich die Tabelle, habe ich letzten Oktober eingerichtet und das funktioniert prima, da Du immer aktuellen und letzten Tag/Monat/Jahr angezeigt bekommst. OT: schön für die Steuer, noch schöner, wenn wie bei mir das Finanzamt schreibt, ich möchte bitte keine Voranmeldungen mehr schicken, sondern nur die Jahresabrechnung. Scheint so, als wollten sie mal 1 gesamtes Jahr "sehen".


Gruß


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Damian

Zitat von: carlos am 29 Januar 2023, 11:21:23
Ok, dann hier mal mein script:

Eine schöne FHEM-unabhängige Lösung. Was passiert, wenn man beim esp den Stecker zieht?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#170
Zitat von: Sany am 29 Januar 2023, 12:09:10
schau Dir das mal an:
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Zum Schnelleinstieg genügt es in der Def die Zähler einzutragen, für die "Cards" solltest Du dich in uiTable etwas einarbeiten, da hier noch Handarbeit angesagt ist.
Ich nutze hauptsächlich die Tabelle, habe ich letzten Oktober eingerichtet und das funktioniert prima, da Du immer aktuellen und letzten Tag/Monat/Jahr angezeigt bekommst. OT: schön für die Steuer, noch schöner, wenn wie bei mir das Finanzamt schreibt, ich möchte bitte keine Voranmeldungen mehr schicken, sondern nur die Jahresabrechnung. Scheint so, als wollten sie mal 1 gesamtes Jahr "sehen".

Es wird demnächst eine etwas schönere Darstellung geben, siehe https://forum.fhem.de/index.php/topic,126199.msg1260769.html#msg1260769

inkl. automatischer Übernahme der bisherigen Werte auf dem Log :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Sany

ZitatEine schöne FHEM-unabhängige Lösung. Was passiert, wenn man beim esp den Stecker zieht?

er speichert die relevanten Daten so wie es aussieht permanent. Dann überleben sie die Stromunterbrechung. Ist auch ziemlich limitiert, scheint für die 6 Werte aber zu reichen.
Zitataus Tasmota scripting:
p:vname
specifies permanent variables. The number of permanent variables is limited by Tasmota rules space (50 bytes) - numeric variables are 4 bytes; string variables are one byte longer than the length of string

ZitatEs wird demnächst eine etwas schönere Darstellung geben
sehr schön, wird immer besser 8)
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

carlos

Zitat von: Damian am 29 Januar 2023, 13:37:57
Eine schöne FHEM-unabhängige Lösung. Was passiert, wenn man beim esp den Stecker zieht?

Die Werte werden selbstverständlich an FHEM über mqtt geschickt.
Ich habe nur das Tasmota UI so etwas schöner gemacht.

http://192.168.178.50/cm?cmnd=status%2010

{
"StatusSNS": {
"Time": "2023-01-29T21:03:15",
"SML": {
"Total_in": 2918.6715,
"Total_out": 10274.9772,
"Power_cur": -15,
"Meter_id": "xxxxxxxxxxxxxxxxxx"
},
"bezug_aktuell": "0.00",
"bezug_tag": "4.08",
"bezug_monat": "406.35",
"bezug_jahr": "406.35",
"bezug_total": "2918.67",
"einspeisung_aktuell": "15.00",
"einspeisung_tag": "0.71",
"einspeisung_monat": "6.74",
"einspeisung_jahr": "6.74",
"einspeisung_total": "10274.98"
}
}

FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

gabischatz

Zitat von: carlos am 29 Januar 2023, 11:21:23Ok, dann hier mal mein script:

>D
v1=0
v2=0
v3=0
min=0
hr=0
md=0
yr=0
rssi=0
ed=0
;Bezug
nb=0
p:sm=0
sd=0
p:sma=0
smn=0
p:sya=0
syn=0
sspr=0.2583
yspr=0
ysgp=156.00
;Einspeisung
ne=0
p:em=0
ed=0
p:ema=0
emn=0
p:eya=0
eyn=0
eepr=0.0700
yepr=0
yegp=0.00
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_cur
rssi=Wifi#RSSI
>B
=>sensor53 r
tper=10
>S
min=int(time/5)
;TV
hr=hours
if chg[hr]>0
and hr==0
then
sm=v1
em=v2
nb=v3
ne=v3
svars
endif
if upsecs%tper==0
then
sd=v1-sm
ed=v2-em
nb=v3
ne=v3*-1
endif
;MV
md=day
if chg[md]>0
and md==1
then
sma=v1
ema=v2
svars
endif
if upsecs%tper==0
then
smn=v1-sma
emn=v2-ema
endif
;JV
yr=year
if chg[yr]>0
then
sya=v1
eya=v2
svars
endif
if upsecs%tper==0
then
syn=v1-sya
eyn=v2-eya
;Kosten
yspr=syn*sspr+ysgp
yepr=eyn*eepr
endif
if v3>0
then
nb=v3
ne=0
else
nb=0
ne=v3*-1
endif
>J
,"bezug_aktuell":"%nb%"
,"bezug_tag":"%sd%"
,"bezug_monat":"%smn%"
,"bezug_jahr":"%syn%"
,"bezug_total":"%v1%"
,"einspeisung_aktuell":"%ne%"
,"einspeisung_tag":"%ed%"
,"einspeisung_monat":"%emn%"
,"einspeisung_jahr":"%eyn%"
,"einspeisung_total":"%v2%"
>W
WLAN Empfang: {m}%rssi%
<hr/>
Strom {m}Bezug{m}Einspeisung
Tag: {m}<b><span style="color:red">%3sd% KWh</span></b> {m}<b><span style="color:green">%3ed% KWh</span></b>
Monat: {m}<b><span style="color:red">%3smn% KWh</span></b> {m}<b><span style="color:green">%3emn% KWh</span></b>
Jahr:{m}<b><span style="color:red">%3syn% KWh</span></b> {m}<b><span style="color:green">%3eyn% KWh</span></b>
€ Strom: {m}<b><span style="color:red">%2yspr% €</span></b> {m}<b><span style="color:green">%2yepr% €</span></b>
<hr/>
Strom Zähler{m}Bezug{m}Einspeisung
aktuell: {m} %3v1% KWh {m} %3v2% KWh
0:00 Uhr: {m} %3sm% KWh {m} %3em% KWh
Monatsanfang: {m} %3sma% KWh {m} %3ema% KWh
Jahresanfang: {m} %3sya% KWh {m} %3eya% KWh
<hr/>
>M 1
+1,14,s,0,9600,SML
1,77070100010800ff@1000,Bezug: ,KWh,Total_in,4
1,77070100020800ff@1000,Einspeisung: ,KWh,Total_out,4
1,77070100100700ff@1,Akt. Verbrauch: ,W,Power_cur,0
1,=h<hr/>
1,77070100000009ff@#,Zähler Nr,,Meter_id,0
1,=h<hr/>
#

Setzen der Einspeise bzw. Verbrauchs - Werte der Vortage/Vorjahre/Vormonate:

script >sma=1261.447;sya=711;eya=3815;ema=1261.447;svars

So sieht das Webui aus:

Das sieht ja echt toll aus bei dir! Ich habe mal das ganze für meinen Zähler angepasst, leider habe ich keine Berechnung. Könntest du mal schauen, wo ich den Fehler habe?
>D
v1=0
v2=0
v3=0
min=0
hr=0
md=0
yr=0
rssi=0
ed=0
;Bezug
nb=0
p:sm=0
;Strom Gesammt Jahresanfang
sd=17953.000
;(NT) Jahresanfang
p:sma=9556.000
smn=0
;(HT) Jahresanfang
p:sya=8397.000
syn=0
;kWh Preis dieses Jahr
sspr=0.4000
yspr=0
;Grundpreis dieses Jahr
ysgp=114.96
;Einspeisung
ne=0
p:em=0
ed=0
p:ema=0
emn=0
p:eya=0
eyn=0
eepr=0.0900
yepr=0
yegp=0.00
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_cur
rssi=Wifi#RSSI
>B
=>sensor53 r
tper=10
>S
min=int(time/5)
;Tagesverbrauch
hr=hours

if chg[hr]>0
and hr==0
then
sm=v1
em=v2
nb=v3
ne=v3
svars
endif

if upsecs%tper==0
then
sd=v1-sm
ed=v2-em
nb=v3
ne=v3*-1
endif
;Monatsverbrauch
md=day
if chg[md]>0
and md==1
then
sma=v1
ema=v2
svars
endif

if upsecs%tper==0
then
smn=v1-sma
emn=v2-ema
endif
;Jahresverbrauch
yr=year
if chg[yr]>0
then
sya=v1
eya=v2
svars
endif

if upsecs%tper==0
then
syn=v1-sya
eyn=v2-eya
;Kosten
yspr=syn*sspr+ysgp
yepr=eyn*eepr
endif

if v3>0
then
nb=v3
ne=0
else
nb=0
ne=v3*-1
endif

>F
scnt+=1
switch scnt
case 6
; sml-Treiber auf 300 Baud setzen und /?! als HEX, um das Messgerät auszulösen
res=sml(1 0 300)
res=sml(1 1 "2F3F210D0A")
; 1800 ms später => Ack und Aufforderung zum Umschalten auf 9600 Baud
case 18
res=sml(1 1 "063035300D0A")
; 2000 ms später => Umstellen des sml-Treibers auf 9600 Baud
case 20
res=sml(1 0 9600)
; Neustartsequenz nach 5000 ms
case 50
; 5000 ms später => Neustarten
scnt=0
ends

>J
,"Verbrauch Aktuell":"%nb%"
,"Verbrauch Tag":"%sd%"
,"Verbrauch Monat":"%smn%"
,"Verbrauch Jahr":"%syn%"
,"Verbrauch Total":"%v1%"
,"Einspeisung Aktuell":"%ne%"
,"Einspeisung Tag":"%ed%"
,"Einspeisung Monat":"%emn%"
,"Einspeisung Jahr":"%eyn%"
,"Einspeisung Total":"%v2%"
>W
WLAN Signalstärke: {m} %rssi% %%
<hr/>
Strom {m}Bezug{m}Einspeisung
Tag: {m}<b><span style="color:red">%3sd% KWh</span></b> {m}<b><span style="color:green">%3ed% KWh</span></b>
Monat: {m}<b><span style="color:red">%3smn% KWh</span></b> {m}<b><span style="color:green">%3emn% KWh</span></b>
Jahr:{m}<b><span style="color:red">%3syn% KWh</span></b> {m}<b><span style="color:green">%3eyn% KWh</span></b>
€ Strom: {m}<b><span style="color:red">%2yspr% €</span></b> {m}<b><span style="color:green">%2yepr% €</span></b>
<hr/>
Preis/kWh:      {m} %4sspr% €
Grundpreis:      {m} %2ysgp% €
<hr/>
>M 1
+1,3,o,0,300,,1,30,2F3F210D0A,063030300D0A
;1,0.9.1(@#),Zeitstempel,Uhr,time-stamp,0
;1,=h<hr/>
;1,=h –– Gas ––
;1,1.8.7(@1),Meter No./:,,Gas_Meter,0
;1,1.8.8(@1),Gas-Bezug ,m³,Gas_Total,3
;1,0.1.0(@1),Rückstellz.,,RSZ,0
;1,=h<hr/>
;1,0.0.0(@1),Meter No./:,,Meter_number,0
1,=h –– PV-Modul ––
1,2.6.0(@1),Total,kW,Max_latest_out,3
1,2.8.0(@1),Wirk Lieferung ET,kWh,Total_out,3
1,2.8.1(@1),Wirk Lieferung T1,kWh,Out_HT,3
1,2.8.2(@1),Wirk Lieferung T2,kWh,Out_NT,3
1,4.8.1(@1),Blind Leistung,kvarh,R_out,3
1,2.7.0(@1),Überschusseinspeisung,W,P_out,3
1,=h<hr/>
1,=h –– Strom-Bezug ––
1,1.8.0(@1),Wirk Bezug ET,kWh,Total_in,3
1,1.8.1(@1),wktgs. 6-22°° Uhr,kWh,HT_in,3
1,1.8.2(@1),ab Sa13°°-Mo6°° Uhr,kWh,NT_in,3
1,1.6.0(@1),Aktuelles Max IN,A+,Max_latest_in,4
1,3.8.1(@1),Blind Leistung,kvarh,R_in,3
1,1.7.0(@1),Aktuelle Last,W,P_in,3
1,=h<hr/>
1,=h –– Ampere ––
1,91.7(@1),Stromwert N.,A,I_N,2
1,31.7(@1),Stromwert L1,A,I_L1,2
1,51.7(@1),Stromwert L2,A,I_L2,2
1,71.7(@1),Stromwert L3,A,I_L3,2
1,=h<hr/>
1,=h –– Voltage ––
1,32.7(@1),voltage level L1,V,V_L1,2
1,52.7(@1),voltage level L2,V,V_L2,2
1,72.7(@1),voltage level L3,V,V_L3,2
1,=h<hr/>
;1,=h –– Frequenz ––
1,14.7(@1),Hz,Hz,Hz,2
;1,=h –– kum ––
1,1.2.0(@1),Kum. Max,A+,Kum_in,2
1,2.2.0(@1),Kum. Max,A-,Kum_out,2
1,1.4.0(@1),lauf. Max,A+,Lauf_in,2
1,2.4.0(@1),lauf. Max,A-,Lauf_out,2
1,3.7.0(@1),reactive power Q+,kvar,Q_in,3
1,4.7.0(@1),reactive power Q-,kvar,Q_out,3
;1,=h –– Leistung ––
;1,36.7.0(@1,Power_L1,kW,kW_L1,2
;1,56.7.0(@1,Power_L2,kW,kW_L2,2
;1,76.7.0(@1,Power_L3,kW,kW_L3,2
;1,16.7.0(@1,Σ_L1+L2+L3,kW,kW_L1+L2+L3,2
#
Ich komme nicht ganz mit wo ich welchen Wert genau eintragen muss.
Meine Werte sind
Strom Gesamt-Bezug Jahresanfang, 17953.00 kWh
HT = 9556.00 kWh
NT = 8397.00 kWh
Monatsanfang, 18340.987 kWh
Gestern, 18788.468 kWh
PV gesamt Jahresanfang, 9759.678 kWh
Monatsanfang, 10100.548  kWh
Gestern, 10174.548 kWh
Wie genau muss ich jetzt die Werte eingeben?
Grüße

carlos

Du musst diese Variablen an deine Gegebenheit anpassen:

v1=SML#Total_in   Bezug
v2=SML#Total_out. Einspeisung
v3=SML#Power_cur. Akt. Verbrauch

Kommt bei mir aus den Zeilen:
+1,14,s,0,9600,SML
1,77070100010800ff@1000,Bezug: ,KWh,Total_in,4
1,77070100020800ff@1000,Einspeisung: ,KWh,Total_out,4
1,77070100100700ff@1,Akt. Verbrauch: ,W,Power_cur,0

Das musst du erst mal genauso machen, dann kannst du die entsprechenden Monats und Jahreswerte setzen.
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

gabischatz

Hi, ich habe den Code entsprechend angepasst. Aber die Berechnung stimmt immer noch nicht.
>D
v1=0
v2=0
v3=0
min=0
hr=0
md=0
yr=0
rssi=0
ed=0

;Bezug
;-----Stromvariablen Verbrauch
nb=0
;-Stromzähler um Mitternacht (permanente Variable) (sm)
p:sm=0
;-Stromverbrauch pro Tag (sd)
sd=0
;-Zählerstand am Monatsanfang (sma)
p:sma=18340.987
;-Stromverbrauch Monat (smn)
smn=0
;-Zählerstand am Jahresanfang (sya)
p:sya=17953.000
;-Stromverbrauch Jahr (syn)
syn=0
;-kWh Preis dieses Jahr pro Einheit (sspr)
sspr=0.4000
yspr=0
;-Kosten pro Jahr Grundgebühr (ysgp)
ysgp=114.96

;-Einspeisung
;-----Stromvariablen Einspeisung
;-Stromzähler um Mitternacht (permanente Variable) (som)
ne=0
p:em=0
ed=0
p:ema=0
emn=0
p:eya=0
eyn=0
eepr=0.0900
yepr=0
yegp=0.00
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_cur
rssi=Wifi#RSSI
>B
=>sensor53 r
tper=10
>S
min=int(time/5)
;Tagesverbrauch
hr=hours

if chg[hr]>0
and hr==0
then
sm=v1
em=v2
nb=v3
ne=v3
svars
endif

if upsecs%tper==0
then
sd=v1-sm
ed=v2-em
nb=v3
ne=v3*-1
endif
;Monatsverbrauch
md=day
if chg[md]>0
and md==1
then
sma=v1
ema=v2
svars
endif

if upsecs%tper==0
then
smn=v1-sma
emn=v2-ema
endif
;Jahresverbrauch
yr=year
if chg[yr]>0
then
sya=v1
eya=v2
svars
endif

if upsecs%tper==0
then
syn=v1-sya
eyn=v2-eya
;Kosten
yspr=syn*sspr+ysgp
yepr=eyn*eepr
endif

if v3>0
then
nb=v3
ne=0
else
nb=0
ne=v3*-1
endif

>F
scnt+=1
switch scnt
case 6
; sml-Treiber auf 300 Baud setzen und /?! als HEX, um das Messgerät auszulösen
res=sml(1 0 300)
res=sml(1 1 "2F3F210D0A")
; 1800 ms später => Ack und Aufforderung zum Umschalten auf 9600 Baud
case 18
res=sml(1 1 "063035300D0A")
; 2000 ms später => Umstellen des sml-Treibers auf 9600 Baud
case 20
res=sml(1 0 9600)
; Neustartsequenz nach 5000 ms
case 50
; 5000 ms später => Neustarten
scnt=0
ends

>J
,"Verbrauch Aktuell":"%nb%"
,"Verbrauch Tag":"%sd%"
,"Verbrauch Monat":"%smn%"
,"Verbrauch Jahr":"%syn%"
,"Verbrauch Total":"%v1%"
,"Einspeisung Aktuell":"%ne%"
,"Einspeisung Tag":"%ed%"
,"Einspeisung Monat":"%emn%"
,"Einspeisung Jahr":"%eyn%"
,"Einspeisung Total":"%v2%"
>W
WLAN Signalstärke: {m} %rssi% %%
<hr/>
Strom {m}Bezug{m}Einspeisung
Tag: {m}<b><span style="color:red">%3sd% KWh</span></b> {m}<b><span style="color:green">%3ed% KWh</span></b>
Monat: {m}<b><span style="color:red">%3smn% KWh</span></b> {m}<b><span style="color:green">%3emn% KWh</span></b>
Jahr:{m}<b><span style="color:red">%3syn% KWh</span></b> {m}<b><span style="color:green">%3eyn% KWh</span></b>
€ Strom: {m}<b><span style="color:red">%2yspr% €</span></b> {m}<b><span style="color:green">%2yepr% €</span></b>
<hr/>
Preis/kWh:      {m} %4sspr% €
Grundpreis:      {m} %2ysgp% €
<hr/>
>M 1
+1,3,o,0,300,SML,1,30,2F3F210D0A,063030300D0A
;1,0.9.1(@#),Zeitstempel,Uhr,time-stamp,0
;1,=h<hr/>
;1,=h –– Gas ––
;1,1.8.7(@1),Meter No./:,,Gas_Meter,0
;1,1.8.8(@1),Gas-Bezug ,m³,Gas_Total,3
;1,0.1.0(@1),Rückstellz.,,RSZ,0
;1,=h<hr/>
;1,0.0.0(@1),Meter No./:,,Meter_number,0
1,=h –– PV-Modul ––
1,2.6.0(@1),Total,kW,Max_latest_out,3
1,2.8.0(@1),Wirk Lieferung ET,kWh,Total_out,3
1,2.8.1(@1),Wirk Lieferung T1,kWh,Out_HT,3
1,2.8.2(@1),Wirk Lieferung T2,kWh,Out_NT,3
1,4.8.1(@1),Blind Leistung,kvarh,R_out,3
1,2.7.0(@1),Überschusseinspeisung,W,P_out,3
1,=h<hr/>
1,=h –– Strom-Bezug ––
1,1.8.0(@1),Wirk Bezug ET,kWh,Total_in,3
1,1.8.1(@1),wktgs. 6-22°° Uhr,kWh,HT_in,3
1,1.8.2(@1),ab Sa13°°-Mo6°° Uhr,kWh,NT_in,3
1,1.6.0(@1),Aktuelles Max IN,A+,Max_latest_in,4
1,3.8.1(@1),Blind Leistung,kvarh,R_in,3
1,1.7.0(@1),Aktuelle Last,W,P_in,3
1,=h<hr/>
1,=h –– Ampere ––
1,91.7(@1),Stromwert N.,A,I_N,2
1,31.7(@1),Stromwert L1,A,I_L1,2
1,51.7(@1),Stromwert L2,A,I_L2,2
1,71.7(@1),Stromwert L3,A,I_L3,2
1,=h<hr/>
1,=h –– Voltage ––
1,32.7(@1),voltage level L1,V,V_L1,2
1,52.7(@1),voltage level L2,V,V_L2,2
1,72.7(@1),voltage level L3,V,V_L3,2
1,=h<hr/>
;1,=h –– Frequenz ––
1,14.7(@1),Hz,Hz,Hz,2
;1,=h –– kum ––
1,1.2.0(@1),Kum. Max,A+,Kum_in,2
1,2.2.0(@1),Kum. Max,A-,Kum_out,2
1,1.4.0(@1),lauf. Max,A+,Lauf_in,2
1,2.4.0(@1),lauf. Max,A-,Lauf_out,2
1,3.7.0(@1),reactive power Q+,kvar,Q_in,3
1,4.7.0(@1),reactive power Q-,kvar,Q_out,3
;1,=h –– Leistung ––
;1,36.7.0(@1,Power_L1,kW,kW_L1,2
;1,56.7.0(@1,Power_L2,kW,kW_L2,2
;1,76.7.0(@1,Power_L3,kW,kW_L3,2
;1,16.7.0(@1,Σ_L1+L2+L3,kW,kW_L1+L2+L3,2
#
Ich verstehe immer noch nicht was du genau meinst mit
ZitatWerte der Vortage/Vorjahre/Vormonate:
script >sma=1261.447;sya=711;eya=3815;ema=1261.447;svars
Du hast drei Werte aber vier Variablen!
Könntest du mal bitte angeben, was was genau ist.
Du darfst diesen Dateianhang nicht ansehen.
Grüße

carlos

Wenn du dir das script mal genau anschaust sieht du folgende Beschreibung:
Stromverbrauch:
;-Zählerstand am Monatsanfang (sma)
;-Zählerstand am Jahresanfang (sya)
das gleiche für die Einspeisung:
;-Zählerstand am Monatsanfang (ema)
;-Zählerstand am Jahresanfang (eya)

den Vortag brauchst du nicht setzen, der wird ja nach einem Tag berechnet, genauso würden nach einem Monat und nach einem Jahr die Werte stimmen, wenn du sie nicht setzt.
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

gabischatz

An alle ein Frohes Osterfest und Grüße :)) Danke Carlos, langsam verstehe ich wie es funktioniert. Aber eine Frage habe ich noch, unten im Markierten Bereich sind noch keine Werte, dadurch ist die Berechnung nicht vollständig. Ändert sich das noch zum nächsten Monat oder habe ich da noch einen Fehler?
>D
v1=0
v2=0
v3=0
min=0
hr=0
md=0
yr=0
rssi=0
ed=0

;Bezug
;-----Stromvariablen Verbrauch
nb=0
;-Stromzähler um Mitternacht (permanente Variable) (sm)
p:sm=0
;-Stromverbrauch pro Tag (sd)
sd=0
;-Zählerstand am Monatsanfang (sma)
p:sma=18340.987
;-Stromverbrauch Monat (smn)
smn=0
;-Zählerstand am Jahresanfang (sya)
p:sya=17953.000
;-Stromverbrauch Jahr (syn)
syn=0
;-kWh Preis dieses Jahr pro Einheit (sspr)
sspr=0.4000
yspr=0
;-Kosten pro Jahr Grundgebühr (ysgp)
ysgp=114.96

;-Einspeisung
;-----Stromvariablen Einspeisung
;-Stromzähler um Mitternacht (permanente Variable) (som)
ne=0
p:em=0
ed=0
;-Zählerstand am Monatsanfang (ema)
p:ema=10100.548
emn=0
;-Zählerstand am Jahresanfang (eya)
p:eya=9759.678
eyn=0
eepr=0.0900
yepr=0
yegp=0.00
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_cur
rssi=Wifi#RSSI
>B
=>sensor53 r
tper=10
>S
min=int(time/5)
;Tagesverbrauch
hr=hours

if chg[hr]>0
and hr==0
then
sm=v1
em=v2
nb=v3
ne=v3
svars
endif

if upsecs%tper==0
then
sd=v1-sm
ed=v2-em
nb=v3
ne=v3*-1
endif
;Monatsverbrauch
md=day
if chg[md]>0
and md==1
then
sma=v1
ema=v2
svars
endif

if upsecs%tper==0
then
smn=v1-sma
emn=v2-ema
endif
;Jahresverbrauch
yr=year
if chg[yr]>0
then
sya=v1
eya=v2
svars
endif

if upsecs%tper==0
then
syn=v1-sya
eyn=v2-eya
;Kosten
yspr=syn*sspr+ysgp
yepr=eyn*eepr
endif

if v3>0
then
nb=v3
ne=0
else
nb=0
ne=v3*-1
endif

>F
scnt+=1
switch scnt
case 6
; sml-Treiber auf 300 Baud setzen und /?! als HEX, um das Messgerät auszulösen
res=sml(1 0 300)
res=sml(1 1 "2F3F210D0A")
; 1800 ms später => Ack und Aufforderung zum Umschalten auf 9600 Baud
case 18
res=sml(1 1 "063035300D0A")
; 2000 ms später => Umstellen des sml-Treibers auf 9600 Baud
case 20
res=sml(1 0 9600)
; Neustartsequenz nach 5000 ms
case 50
; 5000 ms später => Neustarten
scnt=0
ends

>J
,"Verbrauch Aktuell":"%nb%"
,"Verbrauch Tag":"%sd%"
,"Verbrauch Monat":"%smn%"
,"Verbrauch Jahr":"%syn%"
,"Verbrauch Total":"%v1%"
,"Einspeisung Aktuell":"%ne%"
,"Einspeisung Tag":"%ed%"
,"Einspeisung Monat":"%emn%"
,"Einspeisung Jahr":"%eyn%"
,"Einspeisung Total":"%v2%"
>W
WLAN Signalstärke: {m} %rssi% %%
<hr/>
Strom {m}Bezug{m}Einspeisung
Tag: {m}<b><span style="color:red">%3sd% KWh</span></b> {m}<b><span style="color:green">%3ed% KWh</span></b>
Monat: {m}<b><span style="color:red">%3smn% KWh</span></b> {m}<b><span style="color:green">%3emn% KWh</span></b>
Jahr:{m}<b><span style="color:red">%3syn% KWh</span></b> {m}<b><span style="color:green">%3eyn% KWh</span></b>
€ Strom: {m}<b><span style="color:red">%2yspr% €</span></b> {m}<b><span style="color:green">%2yepr% €</span></b>
<hr/>
Strom Zähler{m}Bezug{m}Einspeisung
aktuell: {m} %3v1% KWh {m} %3v2% KWh
0:00 Uhr: {m} %3sm% KWh {m} %3em% KWh
Monatsanfang: {m} %3sma% KWh {m} %3ema% KWh
Jahresanfang: {m} %3sya% KWh {m} %3eya% KWh
<hr/>
Preis/kWh:       {m} %4sspr% €
Grundpreis:      {m} %2ysgp% €
<hr/>
>M 1
+1,3,o,0,300,SML,1,30,2F3F210D0A,063030300D0A
;1,0.9.1(@#),Zeitstempel,Uhr,time-stamp,0
;1,=h<hr/>
;1,=h –– Gas ––
;1,1.8.7(@1),Meter No./:,,Gas_Meter,0
;1,1.8.8(@1),Gas-Bezug ,m³,Gas_Total,3
;1,0.1.0(@1),Rückstellz.,,RSZ,0
;1,=h<hr/>
;1,0.0.0(@1),Meter No./:,,Meter_number,0
1,=h –– PV-Modul ––
1,2.6.0(@1),Total,kW,Max_latest_out,3
1,2.8.0(@1),Wirk Lieferung ET,kWh,Total_out,3
1,2.8.1(@1),Wirk Lieferung T1,kWh,Out_HT,3
1,2.8.2(@1),Wirk Lieferung T2,kWh,Out_NT,3
1,4.8.1(@1),Blind Leistung,kvarh,R_out,3
1,2.7.0(@1),Überschusseinspeisung,W,P_out,3
1,=h<hr/>
1,=h –– Strom-Bezug ––
1,1.8.0(@1),Wirk Bezug ET,kWh,Total_in,3
1,1.8.1(@1),wktgs. 6-22°° Uhr,kWh,HT_in,3
1,1.8.2(@1),ab Sa13°°-Mo6°° Uhr,kWh,NT_in,3
1,1.6.0(@1),Aktuelles Max IN,A+,Max_latest_in,4
1,3.8.1(@1),Blind Leistung,kvarh,R_in,3
1,1.7.0(@1),Aktuelle Last,W,P_in,3
1,=h<hr/>
1,=h –– Ampere ––
1,91.7(@1),Stromwert N.,A,I_N,2
1,31.7(@1),Stromwert L1,A,I_L1,2
1,51.7(@1),Stromwert L2,A,I_L2,2
1,71.7(@1),Stromwert L3,A,I_L3,2
1,=h<hr/>
1,=h –– Voltage ––
1,32.7(@1),voltage level L1,V,V_L1,2
1,52.7(@1),voltage level L2,V,V_L2,2
1,72.7(@1),voltage level L3,V,V_L3,2
1,=h<hr/>
;1,=h –– Frequenz ––
1,14.7(@1),Hz,Hz,Hz,2
;1,=h –– kum ––
1,1.2.0(@1),Kum. Max,A+,Kum_in,2
1,2.2.0(@1),Kum. Max,A-,Kum_out,2
1,1.4.0(@1),lauf. Max,A+,Lauf_in,2
1,2.4.0(@1),lauf. Max,A-,Lauf_out,2
1,3.7.0(@1),reactive power Q+,kvar,Q_in,3
1,4.7.0(@1),reactive power Q-,kvar,Q_out,3
;1,=h –– Leistung ––
;1,36.7.0(@1,Power_L1,kW,kW_L1,2
;1,56.7.0(@1,Power_L2,kW,kW_L2,2
;1,76.7.0(@1,Power_L3,kW,kW_L3,2
;1,16.7.0(@1,Σ_L1+L2+L3,kW,kW_L1+L2+L3,2
#

carlos

Hatte ich doch oben beschrieben!
Warte einen Monat und du hast den Monatswert.
Warte ein Jahr und du hast den Jahreswert.

Oder du setzt die Werte wie auch oben beschrieben.

ZitatWerte des Vorjahres/Vormonats setzen:
script >sma=1261.447;sya=711;eya=3815;ema=1261.447;svars
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

gabischatz

Danke Carlos es funktioniert Super!!! Ich bin so glücklich. Ich hatte nicht verstanden wie es funktioniert.
Grüße