Neues Modul: ElectricityCalculator

Begonnen von Sailor, 26 August 2016, 21:05:35

Vorheriges Thema - Nächstes Thema

majorshark

Du musst Deinem zweiten Zähler nur einen andern Namen geben. Fertig
Dein erste Zähler:
defmod myElectricityCalculator ElectricityCalculator Strom_Haus:energy.*

Dein zweiter Zähler
defmod myElectricityCalculator ElectricityCalculator Strom_WP:energy.*
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Hanneck

Hallo Frank,

ging so leider nicht, es kam immer die Meldung "my Electricity Calculator already defined, delete it first". :(
Nach etwas längerem probieren habe ich dann den Weg gefunden.
define myElectricityCalculator1 ElectricityCalculator Strom_WP:energy.*

und so
define myElectricityCalculator2 ElectricityCalculator Strom_Haus:energy.*

Danke trotzdem
Gruß Dieter

majorshark

So meinte ich das auch. Ich habe doch Deinen Code kopiert als Hinweis das dort etwas Falsch ist und Du dort noch einmal genau schauen sollst.

Auf jeden läuft es. Schönen 2. Advent.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Phili

#138
Hi,

ich nutze ESA2000 Zähler um den Hausstrom und die Wärmepumpe zu tracken.
Ich bekomme aber leider die Definition mittels regex nicht hin:

Die ESA haben die readings "total" (Verbrauch von ELSA gemessen) und "raw_total" (Verbrauch von ELSA plus offset ggü. dem Stromzähler). Ich habe das Modul mittels:

define EnergyHaus ElectricityCalculator Strom_Haus:total.*

definiert.
Es triggert aber beim ElectricityCalculator nichts.

Kann jemand helfen?

Danke und Gruß
Philipp

Phili

Habs!

Es muss
define EnergyHaus ElectricityCalculator Strom_Haus:total:.*
sein.

Philipp

Hanneck

Hallo,

ich habe die Daten meiner Zähler (Hausstrom und Wärmepumpe) ausgelesen und möchte wie es Reinhart vormacht gern die Daten zusammen fassen. Ich bin mir aber nicht sicher wie die Formatierung sein muss.
Zitat
Hier bitte die Config der readingsGroup.

Code: [Auswählen]
####################################################
##         Strom/Gaszaehler von Youless           ##
####################################################
define EnergiezaehlerS readingsGroup <%measure_power>,<Zaehlerstand>,<aktueller Wert>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€-Reserve>,<hr> .*(LS110|LS110_2):electricityConsumed,electricityPower,statElectricityConsumedToday,electricityConsumed_EnergyDay,electricityConsumed_EnergyDayLast,electricityConsumed_EnergyCostDayLast,electricityConsumed_EnergyCostMonth,electricityConsumed_EnergyCostMeter,electricityConsumed_FinanceReserve
attr EnergiezaehlerS mapping %ALIAS
attr EnergiezaehlerS nameStyle style="color:yellow"
attr EnergiezaehlerS room Energie
attr EnergiezaehlerS valueFormat {'electricityConsumed' =>"%09d", 'electricityPower' =>"%.0f W", 'statElectricityConsumedToday' =>"%.0f Wh",'electricityConsumed_EnergyDayLast' => "%.2f Kw/h",'electricityConsumed_EnergyCostDayLast'=> "%.2f €", 'electricityConsumed_EnergyCostMonth'=> "%.2f €",'electricityConsumed_EnergyCostMeter'=> "%.2f €", 'electricityConsumed_FinanceReserve' => "%.2f €",'electricityConsumed_EnergyDay'=> '{sprintf("%.2f €",$VALUE*0.17)}' }

attr EnergiezaehlerS valueStyle { if($READING eq "electricityPower" && $VALUE >= 0 && $VALUE <= 1000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "electricityPower" && $VALUE > 1000 && $VALUE < 3000){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityPower" && $VALUE >= 3000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "statElectricityConsumedToday" && $VALUE >= 15000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "statElectricityConsumedToday" && $VALUE <= 6000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "statElectricityConsumedToday" && $VALUE > 6000 && $VALUE < 15000 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyDayLast" && $VALUE <= 15){'style="color:green;;text-align:right"'}elsif( $READING eq "electricityConsumed_EnergyDayLast" && $VALUE > 15 && $VALUE < 20 ){'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyDayLast" && $VALUE >= 20){ 'style="color:red;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostDayLast" && $VALUE <= 3){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyDay" && $VALUE <=15 ){'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyDay" && $VALUE > 15 && $VALUE < 20){'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyDay" && $VALUE >= 20){'style="color:red;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostDay" && $VALUE <= 3){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostDayLast" && $VALUE > 3 && $VALUE < 5 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostDayLast" && $VALUE >= 5){ 'style="color:red;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMonth" && $VALUE <= 90){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMonth" && $VALUE > 90 && $VALUE < 150 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMonth" && $VALUE >= 150){ 'style="color:red;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMeter" && $VALUE <= 90){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMeter" && $VALUE > 90 && $VALUE < 150 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_EnergyCostMeter" && $VALUE >= 150){ 'style="color:red;;text-align:right"' }elsif( $READING eq "electricityConsumed_FinanceReserve" && $VALUE > 400){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "electricityConsumed_FinanceReserve" && $VALUE < 400 && $VALUE > 200 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "electricityConsumed_FinanceReserve" && $VALUE < 399){ 'style="color:red;;text-align:right"' }else{ 'style="color:grey;;text-align:right"' } }
du musst halt die Devices (LS110|LS110_2) und die Readingsnamen anpassen. Die täglichen aufkumulierten Kosten (ab 0:00 Uhr) werden noch berechnet, da es diese Ausgabe vom Electricity Modul nicht gibt. Da musst du deine Stromkosten (hier 0.17, Leistungspreis+Transport+Steuer) noch anpassen.

so sieht es bei Reinhart aus.

Er schreibt Readings anpassen, aber wie muss es aussehen?
Meine Readings im myElectricityCalculator1 sehen wie folgt aus.
Strom_WP_IEC_02_state_CounterCurrent
0.000
2016-12-04 23:47:22
Strom_WP_IEC_02_state_CounterDay1st
10,73
2016-12-04 20:56:58
Strom_WP_IEC_02_state_CounterDayLast
0.000
2016-12-04 20:41:54
Strom_WP_IEC_02_state_CounterMeter1st
0
2016-12-04 20:41:54
Strom_WP_IEC_02_state_CounterMeterLast
0.000
2016-12-04 20:41:54
Strom_WP_IEC_02_state_CounterMonth1st
326,58
2016-12-04 20:55:49
Strom_WP_IEC_02_state_CounterMonthLast
0.000
2016-12-04 20:41:54
Strom_WP_IEC_02_state_CounterYear1st
3919
2016-12-04 20:53:42
Strom_WP_IEC_02_state_CounterYearLast
0.000
2016-12-04 20:41:54
Strom_WP_IEC_02_state_EnergyCostMeter
0.000
2016-12-04 23:47:22


Wie muss es aussehen? Für eine Hilfe wäre ich Dankbar.

Gruß Dieter

ghayne

I am reading my electricity meter with a photodiode using the module ElectricityCalculator. Although the pulses are coming every 20 seconds or so, for example, the CurrentPower reading jumps from 160 Watt to 300 Watt between some pulses, can anyone explain why this could be happening?
Running Fhem on a Raspberry Pi. Antworten in Deutsch sind OK :)

Regards Garry

Sailor

Hi Garry

Zitat von: Garry Hayne am 05 Dezember 2016, 10:10:17
I am reading my electricity meter with a photodiode using the module ElectricityCalculator. Although the pulses are coming every 20 seconds or so, for example, the CurrentPower reading jumps from 160 Watt to 300 Watt between some pulses, can anyone explain why this could be happening?

Your jumps of the Current Power are normal. I have them as well.
You need to keep in mind, that the Current Power is actually the average electrical Power between the last two measurements.
It is more accurate as smaller the interval is (but will increase your log file!).

The peaks between 160W and 300W are mostly caused by the fridge, freezer and central heating system. If you switch on your tumble dryer and washing machine it will jump to 5000 to 6000W!

Best regards
    Sailor
******************************
Man wird immer besser...

Reinhart

@Hanneck

Eine genaue Beschreibung findest du in der Wiki der readingsGroups mit vielen Beispielen, meines ist ursprünglich auch von dort abgeleitet.
Ich möchte dir die wesentlichen Konfigurationen aber kurz erklären, damit du den Einstieg findest.

define EnergiezaehlerS readingsGroup <%measure_power>,<Zaehlerstand>,<aktueller Wert>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€-Reserve>,<hr> .*(LS110|LS110_2):electricityConsumed,electricityPower,statElectricityConsumedToday,electricityConsumed_EnergyDay,electricityConsumed_EnergyDayLast,electricityConsumed_EnergyCostDayLast,electricityConsumed_EnergyCostMonth,electricityConsumed_EnergyCostMeter,electricityConsumed_FinanceReserve

das ist die Überschrift

<%measure_power>,<Zaehlerstand>,<aktuellerWert>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€-Reserve>,<hr>

einfach deinen Bedürfnissen anpassen.

und da sind die Devicenamen nach denen gefiltert werden soll
.*(LS110|LS110_2)
du musst natürlich deine Devicenamen einsetzen .*(Strom_WP_IEC_02). Mit diesem Filter werden alle Devices gesucht die so heißen, somit kann man mehrere Devices in einer Konfiguration abbilden.

Readings die angezeigt werden sollen, einfach der Reihe nach auflisten und mit Beistrich trennen
:electricityConsumed,electricityPower,statElectricityConsumedToday,electricityConsumed_EnergyDay,electricityConsumed_EnergyDayLast,electricityConsumed_EnergyCostDayLast,electricityConsumed_EnergyCostMonth,electricityConsumed_EnergyCostMeter,electricityConsumed_FinanceReserve
"electricityConsumed" wird bei dir "Strom_WP_IEC_02_state_CounterCurrent" und so weiter

valueFormat: Hier wird das auszugebende Readings formatiert

'electricityConsumed' =>"%09d", 'electricityPower' =>"%.0f W",

"electricityConsumed" soll eine 9-stellige Zahl werden, "electricityPower" wird eine Zahl ohne Dezimalstellen mit der Bezeichznung "W" hinten dran."

valueStyle: hier wird dem Wert eines Reading eine Farbe zugeordnet

if($READING eq "electricityPower" && $VALUE >= 0 && $VALUE <= 1000){ 'style="color:green;;text-align:right"'
wenn electricityPower größer 0 und kleiner 1000 ist dann ist die Ausgabefarbe "grün" und so weiter, somit kannst du jedem Wert eine Farbe zuordnen. Wenn hier keine Readings enthalten sind oder fehlen, dann gilt die Standardfarbe (weiß,grau).

Eigentlich ist es eine einfache logische Zuordnung, beim valueStyle sieht es komplizierter aus, als es tatsächlich ist. Den würde ich Anfangs noch weglassen und testen ob der Rest funktioniert. Da musst du dir außerdem deine persönlichen Schwellwerte überlegen, ab welchem Wert dieser eine andere Farbe haben soll.

Ich hoffe ich konnte es halbwegs erklären, damit du den Rest selber konfigurieren kannst und nun weißt was du alles umbenennen musst.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

ghayne

Zitat von: Sailor am 05 Dezember 2016, 13:01:41
Hi Garry

Your jumps of the Current Power are normal. I have them as well.
You need to keep in mind, that the Current Power is actually the average electrical Power between the last two measurements.
It is more accurate as smaller the interval is (but will increase your log file!).

The peaks between 160W and 300W are mostly caused by the fridge, freezer and central heating system. If you switch on your tumble dryer and washing machine it will jump to 5000 to 6000W!

Best regards
    Sailor

Thanks for the answer but I think you didn't understand my problem, I turned almost everything off so that the consumption was constant. The pulse frequency was constant but the Current Power reading showed different values for a constant difference between pulses. This cannot be right.

Garry

Uef

Hi Sailor,

im Modul ist noch ein kleiner Typo: wenn man "disable" auf "1" setzt, geht das Device in den Status "diabled" (statt "disabled").

Sicher leicht zu korrigieren - nur falls es jemand mal auswertet :-)

Ansonsten schon mal vielen Dank für das tolle Modul (auch wenn ich noch nicht alles durchchaut habe  :-\)

LG
Uef
fhem auf Raspberry2 mit MAX! (via CUL f. Raumthermostat, Fensterkontakte und Heizungen) und HM (via LanAdapter für Raumthermostat, 6-fach Taster, 4-fach Hutschiene, Statusanzeige, Stecker m. Leistungsmessung); In Entwicklung: Heizungsüberwachung via Adapter & MQTT; Stromverbrauchsüberwachung (1wire)

Sailor

Hi Garry

Zitat von: Garry Hayne am 05 Dezember 2016, 21:13:54
Thanks for the answer but I think you didn't understand my problem, I turned almost everything off so that the consumption was constant. The pulse frequency was constant but the Current Power reading showed different values for a constant difference between pulses. This cannot be right.

Hmm, I fear I really do not understand.
May be a Picture of your plot and your configuration (for Calculator and Counter) might help.

When you said you turned off almost everything, have you also tried out to switch off completly ALL fuses. Just to exclude some hidden consumers.
I had a similar issue with my father in law in Bucks. The neighbour was consuming over an "ancient cord". I am not kidding.  ;D

Regards
    Sailor
******************************
Man wird immer besser...

ghayne

Zitat von: Sailor am 06 Dezember 2016, 06:03:37
Hi Garry

Hmm, I fear I really do not understand.
May be a Picture of your plot and your configuration (for Calculator and Counter) might help.

When you said you turned off almost everything, have you also tried out to switch off completly ALL fuses. Just to exclude some hidden consumers.
I had a similar issue with my father in law in Bucks. The neighbour was consuming over an "ancient cord". I am not kidding.  ;D

Regards
    Sailor

Hi,

Counter:

defmod Meter_Pulses RPI_GPIO 18
attr Meter_Pulses active_low yes
attr Meter_Pulses direction input
attr Meter_Pulses interrupt falling
attr Meter_Pulses room Electric Energy Counter
attr Meter_Pulses stateFormat Pulses:Counter

ElectricityCalculator:

attr Meter ElectricityCounterOffset 0
attr Meter ElectricityKwhPerCounts 0.00125
attr Meter ElectricityPricePerKWh 0.11865
attr Meter MonthOfAnnualReading 5
attr Meter MonthlyPayment 50
attr Meter ReadingDestination CalculatorDevice
attr Meter SiPrefixPower W
attr Meter room Electric Energy Counter
attr Meter stateFormat Power Current: Meter_Pulses_Counter_PowerCurrent W\


setstate Meter Power Current: 300.000 W\

setstate Meter 2016-12-06 10:31:30 .Meter_Pulses_Counter_LastDV 0.001
setstate Meter 2016-12-06 10:31:30 .Meter_Pulses_Counter_LastDt 12
setstate Meter 2016-12-06 10:31:30 .Meter_Pulses_Counter_PowerDayCount 13872
setstate Meter 2016-12-06 10:31:30 .Meter_Pulses_Counter_PowerDaySum 19416094.573
setstate Meter 2016-12-06 10:31:30 .Meter_Pulses_Counter_PrevRead 20.285
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_CounterCurrent 20.285
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_CounterDay1st 17.200
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_CounterDayLast 17.199
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterMeter1st 0.08125
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterMeterLast 0.080
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterMonth1st 0.08125
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterMonthLast 0.080
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterYear1st 0.08125
setstate Meter 2016-12-04 16:28:39 Meter_Pulses_Counter_CounterYearLast 0.080
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_EnergyCostDayLast 1.552
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyCostMeter 2.397
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyCostMonth 2.397
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyCostYear 2.397
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyDay 3.085
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_EnergyDayLast 13.084
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyMeter 20.204
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyMonth 20.204
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_EnergyYear 20.204
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_FinanceReserve 356.616
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_PowerCurrent 300.000
setstate Meter 2016-12-06 10:31:30 Meter_Pulses_Counter_PowerDayAver 1399.661
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_PowerDayCount 0
setstate Meter 2016-12-06 05:29:19 Meter_Pulses_Counter_PowerDayMax 7200.000
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_PowerDayMin 0
setstate Meter 2016-12-06 00:00:03 Meter_Pulses_Counter_PowerDaySum 0


I have not plotted anything yet.

Regards, Garry

Hanneck

Hi Reinhart,

Danke für diese SUPER Anleitung. Nachdem ich meine Konfiguration noch mal neu umgestellt habe, sprudeln auch endlich die Werte.
Lese schon eine längere Zeit mit und habe auch etliche Sachen umgesetzt, aber mit den Formatierungen hapert es dann doch teilweise. Aber Übung macht den Meister. ;D
Vor allem die oftmals sehr schnelle und kompetente Hilfe von den Wissenden ist sehr zu loben. Vor allem Dank des Codes und der Bilder ist es oft verständlicher und somit nach vollziehbar.

LG Dieter

Sailor

Hi Gary

Zitat von: Garry Hayne am 06 Dezember 2016, 11:42:12

Counter:

defmod Meter_Pulses RPI_GPIO 18
attr Meter_Pulses active_low yes
attr Meter_Pulses direction input
attr Meter_Pulses interrupt falling
attr Meter_Pulses room Electric Energy Counter
attr Meter_Pulses stateFormat Pulses:Counter


I have not plotted anything yet.

I am a bit confused about the usage of "defmod". I suggest to try "define" instead.

Furthermore my questions:

Why is the definition different: attr Meter_Pulses stateFormat Pulses:Counter "Meter_Pulses" versus "Pulses"?
What exactly does the Pulses:Counter contain?
What is the definition of the GasCaltulator - device?
Could you please post a plot?
Regards
    Sailor

******************************
Man wird immer besser...