Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

Sailor

Moin Maui

Zitat von: Maui am 06 Mai 2020, 10:18:32
Neu

my $ElectricityCalcPowerCurrent    = ($attr{$ElectricityCalcName}{ElectricityKwhPerCounts} / $ElectricityCountReadingTimestampDelta) * 3600 * 1000 / $ElectricityCalcDev->{system}{SiPrefixPowerFactor};


Das verstehe ich wiederum nicht.
Was soll es bringen das Delta t nur mit dem konstanten Attribut für die ElectricityKwhPerCounts zu verrechnen?

Gruß
   Sailor
******************************
Man wird immer besser...

Maui

Gehen wir mal ein Schritt zurück und betrachten unsere Ferraris-Zähler.
Wir können dort nix anderes messen als die Durchläufe des roten Lacks.
Im Modul wird für jeden Count der Gesamtzähler um die kWhperCounts hochgezählt.
Beim Momentanverbrauch können wir auch nix anderes machen als das zeitliche delta der Durchläufe zu messen.
Und ob wir uns nun den alten Wert des Counters im reading merken und dort durch Abschneiden Ungenauigkeiten rein bekommen oder einfach direkt den Wert, welchen wir an anderer Stelle addieren, nehmen. Das ist nach meinem Verständnis das "gleiche" nur eben ohne die Ungenauigkeiten beim Abschneiden.
BTW: ich habe das bei mir mal so umgestellt und es funktioniert seit gestern tadellos.

Gruß
Maui

Sailor

Hallo Maui

Zitat von: Maui am 06 Mai 2020, 12:06:17
Gehen wir mal ein Schritt zurück und betrachten unsere Ferraris-Zähler.
Wir können dort nix anderes messen als die Durchläufe des roten Lacks.
Korrekt. Aber nicht durch das ElectricityCalculator - Modul.

Zitat von: Maui am 06 Mai 2020, 12:06:17
Im Modul wird für jeden Count der Gesamtzähler um die kWhperCounts hochgezählt.
Nicht im ElectricityCalculator - Modul
https://fhem.de/commandref_DE.html#ElectricityCalculator
ZitatDas ElectricityCalculator Modul berechnet den Verbrauch an elektrischer Energie (Stromverbrauch) und den verbundenen Kosten von einem oder mehreren Elektrizitätszählern.
Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zählimpulse von einem oder mehreren Elektrizitätszählern zu finden.

Das Modul muss bereits einen Counter an Impulsen geliefert bekommen.
Das ElectricityCounter-Modul braucht einen kontinuierlich wachsenden Zähler.

Zitat von: Maui am 06 Mai 2020, 12:06:17
Beim Momentanverbrauch können wir auch nix anderes machen als das zeitliche delta der Durchläufe zu messen.
Du vermischt die Begriffe Verbrauch und Leistung:
Der Verbrauch ist dein augenblicklicher Zählerstand. Die elektrische Arbeit die du bisher vom Elektrizitätswerk bekommen hast.
Die Leistung ist die dW/dt also die Differenz der Arbeit geteilt durch die Zeit in der diese Arbeit verrichtet wurde.

Wir koennen uns darueber streiten, ob wir das dW durch die
(W1 - W0)/(t1-t0)
ermitteln oder durch
(n1-n0)*$attr{$ElectricityCalcName}{ElectricityKwhPerCounts} / (t1-t0)


Zitat von: Maui am 06 Mai 2020, 12:06:17
Und ob wir uns nun den alten Wert des Counters im reading merken und dort durch Abschneiden Ungenauigkeiten rein bekommen oder einfach direkt den Wert, welchen wir an anderer Stelle addieren, nehmen. Das ist nach meinem Verständnis das "gleiche" nur eben ohne die Ungenauigkeiten beim Abschneiden.
BTW: ich habe das bei mir mal so umgestellt und es funktioniert seit gestern tadellos.

Wo ist denn in deiner Formel der Zaehlerstand n1-n0???
Zitatmy $ElectricityCalcPowerCurrent    = ($attr{$ElectricityCalcName}{ElectricityKwhPerCounts} / $ElectricityCountReadingTimestampDelta) * 3600 * 1000 / $ElectricityCalcDev->{system}{SiPrefixPowerFactor};

Ich sehe da nur
$attr{$ElectricityCalcName}{ElectricityKwhPerCounts} / (t[sub]1[/sub]-t[sub]0[/sub])
Aber gut, wenn du mir den Zahlen glücklich bist dann muss das wohl so sein.  ;)

Vergesse aber bitte nicht das Update für deine Version des Modul per "exclude" raus zu nehmen, damit ich diese nicht beim nächsten Update ungewollt überschreibe.

Gruß
   Sailor
******************************
Man wird immer besser...

Maui

Okay, ich glaub langsam nähern wir uns an  ;)
Mir geht es ja gar nicht darum, mein eigenes Süppchen zu kochen, sondern nur darum, genauer zu werden, ohne die DecimalPlaces zu erhöhen.
Den Teil mit dem Zählermodul hatte ich in der Tat verdrängt.
Im Normalfall wird ja jeder Counter so eingestellt sein, dass 1 Count am Ferraris (mechanisch/optisch) oder 1 Count am S0 (digital/elektrisch) direkt an das EC_Modul weitergereicht wird, da es eben den Impulsen entspricht.
Typischer Fall wäre zb HourCounter.
Deswegen ergibt für mich n1-n0 immer = 1

Sollte jetzt jemand (warum auch immer) in seinem Zähler jeweils einen Sprung von 10 zwischen 2 Werten haben, so müsste man natürlich n1-n0 betrachten. (Den Fall, dass jemand den Offset anpasst und dadurch Blödsinn rauskommt, können wir getrost ignorieren, weil da aktuell auch Blödsinn bei rauskommt)
Über das ersetzen von dW durch dn können wir uns gerne streiten  :D
Ich sehe es als weit wahrscheinlicher an, dass n1 und n0 Ganzzahlen sind und somit keine Effekte durch Abschneiden entstehen können.

Aber vielleicht ist meine Denkweise bedingt durch meinen ebenfalls technisch beschränkten Ferraris auch einfach zu beschränkt und ich würde ganz anders denken, hätte ich einen digitalen Stromzähler.
Auch wenn es vielleicht nicht so wirkt, ich will nur helfen und lasse mich gerne belehren, wenn meine Idee dumm ist  :)

Danke für den Tip mit exclude, hatte ich schon auf dem Schirm.


ThomasFh

#574
Hallo,

kann ich das Modul ElectricityCalculator für die kummulierte Energiemessung einer Fritz dect 200 verwenden?

Konkret habe ich:

Steckdose02 (FBDECT)
selbige liefert mir schon die kummulierte Energie als Reading:

energy  164663 Wh 2020-06-22 18:09:04

Der Dect Stecker hängt seit ca. 2 Monaten am 660Wp Panel und hat in dieser Zeit 164kWh geerntet.
Ich hätte gerne die tägliche Energieausbeute und habe in meiner Einfalt gehofft, das dies hier geht?:

define solarEnergyCounter ElectricityCalculator Steckdose02:energy.*

Selbiges liefert mir nun:

Steckdose02_energy_CounterCurrent   164666.000
usw.

wie setze ich den Anfangswert des aktuellen Tages von 00:01, damit er mir die Werte für den Tag angibt?
reicht hier das Setzen von

   Steckdose02_energy_CounterDay1st

mit dem Wert des letzten Tages 24:00?

Danke ..
EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

amenomade

Alle Readings pflegt das Modul selbst. Das manuelle setzen von

<DestinationDevice>_<SourceCounterReading>_CounterDay1st,
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st

muss nur einmal am Anfang gemacht werden, der Rest macht das Modul bei Tages-/Monats/Jahresänderung.
Schon heute Nacht um 00:00 wird das Modul _CounterDay1st wieder setzen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ThomasFh

#576
Zitat von: amenomade am 22 Juni 2020, 18:43:00
Alle Readings pflegt das Modul selbst. Das manuelle setzen von

<DestinationDevice>_<SourceCounterReading>_CounterDay1st,
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st

muss nur einmal am Anfang gemacht werden, der Rest macht das Modul bei Tages-/Monats/Jahresänderung.
Schon heute Nacht um 00:00 wird das Modul _CounterDay1st wieder setzen.

Danke,

wenn ich ein Plot generieren möchte für den täglichen Energieertrag, bietet das Modul da noch eine Unterstützung?
D.h., ich bräuchte am Ende jedes Tages den Wert von
Steckdose02_energy_EnergyDay

ich wüsste jetzt auch nicht auf Anhieb, wie ich selbigen in ein Filelog bekomme.

EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

amenomade

#577
Zitat von: ThomasFh am 22 Juni 2020, 19:41:17

ich wüsste jetzt auch nicht auf Anhieb, wie ich selbigen in ein Filelog bekomme.

define <name> FileLog <filename> <regexp>
Siehe CommandRef: https://fhem.de/commandref_DE.html#FileLog

Wenn DU in <regex> einfach den Name deines ElectricityCalculator nimmst, dann hast Du alle Werte in der Log.
Also z.B.
define meineLog FileLog %L/calculator.log solarEnergyCounter
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ThomasFh

Zitat von: amenomade am 22 Juni 2020, 19:58:11
define <name> FileLog <filename> <regexp>
Siehe CommandRef: https://fhem.de/commandref_DE.html#FileLog

Wenn DU in <regex> einfach den Name deines ElectricityCalculator nimmst, dann hast Du alle Werte in der Log.
Also z.B.
define meineLog FileLog %L/calculator.log solarEnergyCounter

ja, das ist soweit klar, ich habe erstmal:
define   solarEnergyCounterLog FileLog ./log/solarEnergyCounterLog.log solarEnergyCounter:.*

ich hätte das aber nur einmal um 23:59:59 geloggt.
D.h., ich brauche den Wert:

2020-06-22_20:19:36 solarEnergyCounter Steckdose02_energy_EnergyDay: 3543.000

nicht alle paar Minuten, sonder nur am Ende des Tages im Log
EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

amenomade

#579
Zitat von: CommandRef<DestinationDevice>_<SourceCounterReading>_CounterDayLast : Der letzte Zählerstand des vorherigen Tages.
<DestinationDevice>_<SourceCounterReading>_EnergyDayLast : Energieverbrauch in kWh des vorherigen Tages.

Logge dann nur diese Events
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

kabakakao

Hallo,
erstmal vielen Dank für dieses tolle Modul. Es hat viele Jahre meinen Ferraris-Zähler super unterstützt ;)
Jetzt habe ich aber im Zuge einer PV Anlage einen Zweirichtungszähler bekommen.
Somit steht die Frage im Raum, wie ich den mit diesem Modul verheirate.

Grundsätzlich bekomme ich von dem Wechselrichter ein Reading, wie viel Watt ich gerade verbrauche und vor allem, wie viel ich heute verbraucht habe.
Kann ich dieses Reading evtl. auch für dieses Modul verwenden?

Oder habt ihr andere Vorschläge?

amenomade

Nein, der momentane Verbrauch geht nicht, um diesese Modul zu benutzen. Es ist dafür gedacht, abhängig von einem Counter, verschiedene Readings zu kalkulieren.

Ich weiss nicht genau, was Du für Werte willst, aber das Modul statistics ist vielleicht was für dich.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

kabakakao

Okay. Schade. Die ganzen Berechnungen, die dieses Modul bietet, finde ich eigentlich ganz nett.
Aber wenn es nur über Counter geht, muss ich mir wohl was anderes überlegen.

Sailor

Hallo Kakao

Zitat von: kabakakao am 08 September 2020, 13:14:45
Okay. Schade. Die ganzen Berechnungen, die dieses Modul bietet, finde ich eigentlich ganz nett.
Aber wenn es nur über Counter geht, muss ich mir wohl was anderes überlegen.

Wo ist das Problem einen Counter zu nutzen?  ???

Gruß
    Sailor
******************************
Man wird immer besser...

kabakakao

#584
Hi Sailor,

das Problem ist, dass ich keinen Counter habe. Ich bekomme von meiner PV Anlage den aktuellen Verbrauch und auch den Tagesverbrauch. Aber keinen Counter.

edit: hatte nen Denkfehler. Ich habe Gesamt verbrauchte kWh. Sorry :P