Hallo zusammen,
nachdem mein Balkonkraftwerk nun Strom produziert, möchte ich gerne ausrechnen, wie viel vom produzierten Strom ich selber "verbraten" habe. Das sollte "eigentlich" ziemlich einfach sein.
Der gesamte vom Balkonkraftwerk produzierte Strom ist im Reading ('OUT.Balkonkraftwerk','YieldDay').
Der ins Betreibernetz eingespeiste Strom liegt als Statistics-Wert vor:
('HAR.StromZaehler','statTotal_feed_kwh'): Hour: 0.0000 Day: 1.4148 Month: 1.4148 Year: 1.4148
Nun würde ich gerne ein Userreading nutzen, das "Produzierter Strom" minus "Eingespeister Strom" rechnet.
Aber: Wie komme ich an den Wert "Heute eingespeister Strom" (im Userreading)?
Ein noch genauerer Ansatz wäre:
Nimm für die Berechnung der aktuellen Stromeinspeisung den ('HAR.StromZaehler','total_feed') und ziehe den Tageswert vom (HAR.StromZaehler','statTotal_feed_kwhLast') ab.
Doch auch hier habe ich keine Idee, wie ich an den $statTotal_feed_kwhLast[3] komme.
Mag mir bitte jemand helfen?
Herzlichen Dank!
Zitat von: Kornelius777 am 02 September 2023, 17:26:59Aber: Wie komme ich an den Wert "Heute eingespeister Strom" (im Userreading)?
Mit ReadingsNum() vermutlich.
Zum Verständnis: Dein Text liest sich ziemlich wirr, da ist es recht schwer, das Richtige rauszulesen. Im Moment habe ich das so verstanden:
Eigenverbrauch = ('OUT.Balkonkraftwerk','YieldDay') - Tagesverbrauch('HAR.StromZaehler','statTotal_feed_kwh')
Korrekt?
Aber wo kommen dann noch zusätzlich die Werte von ('HAR.StromZaehler','total_feed') und (HAR.StromZaehler','statTotal_feed_kwhLast') ins Spiel?
Mach doch mal ein list von HAR.StromZaehler und poste das hier.
Untestet und nur eine Vermutung:
attr HAR.StromZaehler userReading eigenverbrauch:total_feed.* { ReadingsNum('HAR.StromZaehler','statTotal_feed_kwhLast',0) =~ m/(\d+\.\d+)/g; return ReadingsNum('HAR.StromZaehler','total_feed',0) - $3;}
Tut mir leid, wenn ich nicht klar genug war.
Hier mein Stromzähler:
Internals:
DEF /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_01304F5B-if00-port0@9600,8,N,1 SML
DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_01304F5B-if00-port0@9600,8,N,1
FD 12
FUUID 5c5c4799-f33f-f563-243e-46dba155386aff16
MeterType SML
NAME HAR.StromZaehler
NR 59
PARTIAL
STATE 16385.2116 kWh
TYPE OBIS
eventCount 3179
Helper:
DBLOG:
L1:
DBLogging:
TIME 1693670777.87681
VALUE 14
L2:
DBLogging:
TIME 1693670777.87681
VALUE 167
L3:
DBLogging:
TIME 1693670777.87681
VALUE 10
power:
DBLogging:
TIME 1693670777.87681
VALUE 192
statTotal_consumption_kwh:
DBLogging:
TIME 1693670777.87681
VALUE Hour: 0.0227 Day: 2.3619 Month: 2.3619 Year: 1834.9946
statTotal_consumption_kwhLast:
DBLogging:
TIME 1693670395.02522
VALUE Hour: 0.1139 Day: 5.6172 Month: 258.6145 Year: 2655.8036
statTotal_feed_kwh:
DBLogging:
TIME 1693666795.0122
VALUE Hour: 0.0000 Day: 1.4148 Month: 1.4148 Year: 1.4148 (since: 2023-09-01_18:47:13 )
statTotal_feed_kwhLast:
DBLogging:
TIME 1693670395.02522
VALUE Hour: 0.0000 Day: 0.0000 Month: 0.0000 Year: - (since: 2023-09-01_18:47:13 )
total_consumption:
DBLogging:
TIME 1693670777.87681
VALUE 16385211.6
total_consumption_kwh:
DBLogging:
TIME 1693670777.87681
VALUE 16385.2116
total_feed:
DBLogging:
TIME 1693666278.79778
VALUE 1555.2
total_feed_kwh:
DBLogging:
TIME 1693666278.79778
VALUE 1.5552
READINGS:
2021-02-16 08:19:09 1.0.0.0.9.255 09-01-49-53-4B-00-04-1E-7A-A9
2021-02-16 08:19:09 129.129.199.130.3.255 ISK
2021-02-16 08:19:09 129.129.199.130.5.255 2F50-5AEB-BF1A-4
2023-09-02 18:06:17 L1 14
2023-09-02 18:06:17 L2 167
2023-09-02 18:06:17 L3 10
2023-09-02 18:06:17 ManufID ISK
2023-09-02 18:06:17 PublicKey
2023-09-02 18:06:17 Serial 09-01-49-53-4B-
2021-03-24 16:01:58 Version
2023-09-02 18:06:17 einsparung 2838.72
2023-09-02 18:06:17 power 192
2023-09-02 18:06:17 statPowerDay Min: -517 Avg: 49 Max: 740
2023-09-01 23:58:55 statPowerDayLast Min: -623 Avg: 228 Max: 2812
2023-09-02 18:06:17 statPowerMonth Min: -517 Avg: 49 Max: 740
2023-09-01 23:58:55 statPowerMonthLast Min: -623 Avg: 345 Max: 6927
2023-09-02 18:06:17 statPowerYear Min: -623 Avg: 308 Max: 7465
2023-01-01 23:58:55 statPowerYearLast Min: -45 Avg: 302 Max: 8008
2023-09-02 18:06:17 statTotal_consumption_kwh Hour: 0.0227 Day: 2.3619 Month: 2.3619 Year: 1834.9946
2023-09-02 17:59:55 statTotal_consumption_kwhLast Hour: 0.1139 Day: 5.6172 Month: 258.6145 Year: 2655.8036
2023-09-02 18:06:17 statTotal_feed_kwh Hour: 0.0000 Day: 1.4148 Month: 1.4148 Year: 1.4148 (since: 2023-09-01_18:47:13 )
2023-09-02 17:59:55 statTotal_feed_kwhLast Hour: 0.0000 Day: 0.0000 Month: 0.0000 Year: - (since: 2023-09-01_18:47:13 )
2023-09-01 11:51:01 state opened
2023-09-02 18:06:17 total_consumption 16385211.6
2023-09-02 18:06:17 total_consumption_Ch1 16385211.6
2023-09-02 18:06:17 total_consumption_Ch2 0
2023-09-02 18:06:17 total_consumption_kwh 16385.2116
2023-09-02 18:06:17 total_feed 1555.2
2023-09-02 18:06:17 total_feed_Ch1 1555.2
2023-09-02 18:06:17 total_feed_Ch2 0
2023-09-02 18:06:17 total_feed_kwh 1.5552
helper:
BUFFER
DIRECTIONSUM >
EoM 1
LastPacketTime 1693670777.878
SPEED 5
SPEED2 5
TRIGGERTIME 1693586713.18381
_98_statistics HAR.StromZaehler.Statistics
Channels:
1.0.36.7.0.255 L1
1.0.56.7.0.255 L2
1.0.76.7.0.255 L3
DEVICES:
60
RULECACHE:
1-0:0.0.9*255 Serial
1-0:1.8.0*255 Counter
1-0:1.8.1*255 Counter
1-0:1.8.2*255 Counter
1-0:16.7.0*255 Channels
1-0:2.8.0*255 Counter
1-0:2.8.1*255 Counter
1-0:2.8.2*255 Counter
129-129:199.130.3*255 ManufID
129-129:199.130.5*255 PublicKey
directions:
Attributes:
DbLogInclude total_consumption,total_feed,power,L1,L2,L3,total_consumption_kwh,total_feed_kwh,heute_eingespart,stat.*
channels {"1.0.36.7.0.255"=>"L1","1.0.56.7.0.255"=>"L2","1.0.76.7.0.255"=>"L3"}
comment Zählernummer: 1ISK0069106345
/dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_01304F5B-if00-port0@9600,8,N,1 SML
/dev/ttyS2@9600,8,N,1
event-on-change-reading .*
interval 60
pollingMode on
room HAR
stateFormat total_consumption_kwh kWh
userReadings total_consumption_kwh {ReadingsVal("HAR.StromZaehler","total_consumption",0)/1000},
total_feed_kwh {ReadingsVal("HAR.StromZaehler","total_feed",0)/1000}
Ich habe mich entschlossen, den (für mich) einfacheren Weg über ein notify zu gehen:
defmod notify_HAR.StromZaehler.EinspeisungBerechnen notify OUT.Balkonkraftwerk:YieldDay:.* \
{\
my $tagesertrag_balkonkraftwerk = ReadingsVal('OUT.Balkonkraftwerk','YieldDay','');;\
my @stromstatistik = split(/\s/,ReadingsVal('HAR.StromZaehler','statTotal_feed_kwhLast',''));;\
my $total_eingespeist = ReadingsVal('HAR.StromZaehler','total_feed','') / 1000;;\
my $tageseinspeisung = $total_eingespeist - $stromstatistik[3];;\
my $stromeinsparung = $tagesertrag_balkonkraftwerk - ($tageseinspeisung * 1000);;\
\
fhem("setreading OUT.Balkonkraftwerk heute_eingespart $stromeinsparung");;;;\
}
attr notify_HAR.StromZaehler.EinspeisungBerechnen DbLogExclude .*
Herzlichen Dank für Euer Mitdenken!
Viele Grüße!
Da ist eigentlich nichts einfacher, im Gegenteil.
Ein userReading ist grundsätzlich nichts anderes als ein notify, nur dass es innerhalb eines devices eingebaut wird.
Aber wenn Du mit Deiner Lösung zufrieden bist, soll es mir auch recht sein.
Danke dir!
Grüße!