Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

Sailor

Ein herzerfrischendes "Moin" vom "hintern-Deich" vorweg

Auf Basis meines Moduls GasCalculator habe ich jetzt das Schwestermodul ElectricityCalculator (73_ElectricityCalculator.pm) ins Leben gerufen.

Das 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 Electrizitätszählern zu finden.

Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.

Das ElectricityCalculator Modul berechnet augenblickliche, historische und Mittelwerte von einem oder mehreren Elektrizitätszählern und erstellt die entsprechenden Readings.

Über eure Rückmeldungen wäre ich sehr dankbar!

Gruss
    Sailor
******************************
Man wird immer besser...

boehm

Hallo Sailor,

danke für das Modul.

Darauf habe ich schon lange gewartet. Bisher habe ich dein GasCalculator eingesetzt war aber nicht ganz glücklich damit.
Ich nutze eine MySQL Datenbank, die über SMLUSB angebunden habe.
Jetzt habe ich dein neues Modul aktiviert und nutze den selben regexp: Powermeter:Zaehlerstand-Bezug-Total:*

Ich bekomme aber keine Readings. Was mache ich falsch. Vielleicht hast Du einen Tip für mich.

Schon mal Danke.

Sailor

Hallo boehm

Zitat von: boehm am 29 August 2016, 18:29:37
Jetzt habe ich dein neues Modul aktiviert und nutze den selben regexp: Powermeter:Zaehlerstand-Bezug-Total:*
Ich bekomme aber keine Readings. Was mache ich falsch. Vielleicht hast Du einen Tip für mich.

Versuchs mal mit einem Punkt "."

regexp: Powermeter:Zaehlerstand-Bezug-Total:.*

Was passiert jetzt?

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

C0mmanda

Moin moin,

Vielen Dank für dieses Klasse Modul! Darauf hab ich auch gewartet!
Läuft bei mir mit einem HM-ES-TX-WM reibungslos!

2 Dinge hätte ich jedoch anzumerken:

1.: Es wird kein _EnergyCostDay berechnet. "Nur" _EnergyCostDayLast. -> Habe ich über ein UserReading gelöst.

2.: Wie es aussieht berechnet das Modul das Reading "_EnergyCostYear" einfach mit "_EnergyYear * ElectricityPricePerKWh".
Wäre es nicht richtiger in den Jahresenergiekosten auch den Basispreis (BasicPricePerAnnum) mit einfliessen zu lassen?
Also _EnergyCostYear = _EnergyYear * (ElectricityPricePerKWh+BasicPricePerAnnum) ?

Oder habe ich was übersehen?
Vielen Dank.

Gruß
C0mmanda


boehm

Hallo Sailor,

dnake für Dein schnelles Feedback.

Ich habe deinen Hinweis eingebaut und danach fhem neu gestartet:
Danach habe ich im fhem Log diese Meldungen gesehen.

SMLUSB: Undefined

2016.08.30 07:35:48 1: PERL WARNING: Use of uninitialized value in string eq at /opt/fhem/FHEM/73_ElectricityCalculator.pm line 101, <$fh> line 1926.

Hilft Dir das?

Danke und Grüße

Sailor

Hallo C0mmanda

Zitat von: C0mmanda am 30 August 2016, 07:42:01
1.: Es wird kein _EnergyCostDay berechnet. "Nur" _EnergyCostDayLast. -> Habe ich über ein UserReading gelöst.
Da wäre ich vorsichtig... Ich hatte das Reading ebenfalls mit drin und habe festgestellt, dass das Log-File komplett zugefüllt wird.

Wenn man dann auch noch so unvorsichtig ist wie ich und einen Plot vom Mai bis Mai mit genau diesen Werten macht, dauert es EWIG.
Den anstelle 365 Tageswerten werden dann plötzlich 105120 Werte versucht anzuzeigen (300s Intervall). Wenn man dann noch die Werte für die finanzielle Reserve darüber legt...
Also ich habe mit diesen Plots die CPU - Temperatur meines RasPis mit diesen Plots um 3°C erhöht!  :o

Zitat von: C0mmanda am 30 August 2016, 07:42:01
2.: Wie es aussieht berechnet das Modul das Reading "_EnergyCostYear" einfach mit "_EnergyYear * ElectricityPricePerKWh".
Wäre es nicht richtiger in den Jahresenergiekosten auch den Basispreis (BasicPricePerAnnum) mit einfliessen zu lassen?
Also _EnergyCostYear = _EnergyYear * (ElectricityPricePerKWh+BasicPricePerAnnum) ?

Das wären ja nicht die verursachten Energiekosten sondern die abrechnungsfähigen Beträge auf monatlicher Basis. (Buchführung)
Den Basispreis habe ich (auf monatlicher Basis) in der finanziellen Reserve mit einfließen lassen, so dass auf Umwegen diese Werte dort richtig angezeigt werden.

Gruss
    Sailor
******************************
Man wird immer besser...

Sailor

#6
Hallo boehm

Zitat von: boehm am 30 August 2016, 07:49:52
SMLUSB: Undefined

2016.08.30 07:35:48 1: PERL WARNING: Use of uninitialized value in string eq at /opt/fhem/FHEM/73_ElectricityCalculator.pm line 101, <$fh> line 1926.

Das sollte nur auftauchen, wenn das Modul das erste Mal aufgerufen wird und ein bestimmtes Attribut nicht gesetzt wurde.
Ich habe das mit einer Fallabfrage gelöst und der FIX kommt mit dem nächsten Update.

DANKE!

Funktioniert der Rest?

Gruss
    Sailor
******************************
Man wird immer besser...

Franz Tenbrock

Hallo Sailor,
kannst du nicht im ersten Post ein paar Snapshots posten, wie es aussieht. So bekommt man einfach schneller einen Überblick was das Modul kann.
Ich kann mir zwar was vorstellen, aber ob meine vorstellung richtig ist ??
Für die IT Kracks hier sicher alles easy, für andere ....

einfach nur als Bitte !

cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

boehm

Hallo Sailor,

jetzt läuft es fast:-)

Das ursächliche Problem war wohl der Punkt. Danach hatte ich beim rumspielen das Attribut
Reading Destination auf CounterDevice gestellt. Da habe ich dann die Readings im SMLUSB Device dann auch gefunden.
Nach dem Umstellen auf CalculatorDevice erscheinen die Readings an der richtigen Stelle.

Ein Problem habe ich noch. Meine Stromverbrauchswerte stehen bei mir in Wh in der Datenbank. Ich habe das Attribut ElectricityPricePerkWh um drei Stellen nach links verschoben und jetzt im Prinzip den Preis pro Wh. Gibt es da vielleicht noch eine elegantere Lösung so dass ich bei kWh bleiben kann.

Ein weitere Frage. Ich nutze Fernwärme und habe es inzwischen geschafft aus dem Energiezähler per WMBUS die Energiemenge, Wasserdurchfluss und Temperaturen auszulesen. Da kann man doch dieses Modul eigentlich auch zur Kostenberechnung einsetzen?

Danke und Grüße

Sailor

Hallo boehm


Zitat von: boehm am 30 August 2016, 09:59:20
jetzt läuft es fast:-)

Das ursächliche Problem war wohl der Punkt. Danach hatte ich beim rumspielen das Attribut
Reading Destination auf CounterDevice gestellt. Da habe ich dann die Readings im SMLUSB Device dann auch gefunden.
Nach dem Umstellen auf CalculatorDevice erscheinen die Readings an der richtigen Stelle.

Na siehste!  ;)

Zitat von: boehm am 30 August 2016, 09:59:20
Ein Problem habe ich noch. Meine Stromverbrauchswerte stehen bei mir in Wh in der Datenbank. Ich habe das Attribut ElectricityPricePerkWh um drei Stellen nach links verschoben und jetzt im Prinzip den Preis pro Wh. Gibt es da vielleicht noch eine elegantere Lösung so dass ich bei kWh bleiben kann.

Ich verstehe nicht ganz. Werden die Stromverbrauchswerte in Wh vom GasZähler an den GasCalculator geliefert?
Wenn ja, dann kannst du das mit dem Attribut "ElectricityKwhPerCounts" = 0,001 von Wh in kWh umwandeln.

Zitat von: boehm am 30 August 2016, 09:59:20
Ein weitere Frage. Ich nutze Fernwärme und habe es inzwischen geschafft aus dem Energiezähler per WMBUS die Energiemenge, Wasserdurchfluss und Temperaturen auszulesen. Da kann man doch dieses Modul eigentlich auch zur Kostenberechnung einsetzen?

Hmm, vielleicht kann ich auch ohne einen entsprechenden Fernwärmeanschluß zu haben, ein Modul schreiben...

Was sind den die Rahmenparameter:

  • Was steht auf der Rechnung?
  • Was liefert dir der Zähler?
  • Wie greifst du welche Werte ab?

Gruss
    Sailor
******************************
Man wird immer besser...

C0mmanda

Zitat von: Sailor am 30 August 2016, 08:05:55
Hallo C0mmanda
Da wäre ich vorsichtig... Ich hatte das Reading ebenfalls mit drin und habe festgestellt, dass das Log-File komplett zugefüllt wird.

Wenn man dann auch noch so unvorsichtig ist wie ich und einen Plot vom Mai bis Mai mit genau diesen Werten macht, dauert es EWIG.
Den anstelle 365 Tageswerten werden dann plötzlich 105120 Werte versucht anzuzeigen (300s Intervall). Wenn man dann noch die Werte für die finanzielle Reserve darüber legt...
Also ich habe mit diesen Plots die CPU - Temperatur meines RasPis mit diesen Plots um 3°C erhöht!  :o

Danke für den Hinweis!
Aktuell logge ich noch gar nichts da ich noch am einrichten war.
Wenn ich dann loggen will werde ich daran denken und ein event-min-interval einbauen.
Darüber hinaus läuft mein FHEM auf einem Intel NUC, hat also etwas Reserven das ganze ;)

Zitat
Das wären ja nicht die verursachten Energiekosten sondern die abrechnungsfähigen Beträge auf monatlicher Basis. (Buchführung)
Den Basispreis habe ich (auf monatlicher Basis) in der finanziellen Reserve mit einfließen lassen, so dass auf Umwegen diese Werte dort richtig angezeigt werden.

Gruss
    Sailor

Okay, gut zu wissen. Danke.
Wie sich die finanzielle Reserve errechnet habe ich zwar noch nicht ganz nachvollzogen, aber da komme ich sicher noch hinter.

Eine Frage noch:
Bei uns wird zwar immer gegen Ende Nov/Anfang Dez. am Zähler abgelesen (müssen wir selbst machen), die Endabrechnung wird aber zum 31.12. hochgerechnet.
Heißt auf dem Papier wird bei mir der Zähler am 31.12. abgelesen.
Was müsste ich dann korrekterweise als "MonthOfAnnualReading" angeben? 12 oder 1?

Vielen Dank!

grtz
CmdA

hermann258

Super Modul
Ich will es mit dem ArduCounter nutzen.
Gibt es da noch etwas zu beachten?

justme1968

ich habe gerade etwas mit dem modul gespielt. schaut bis jetzt gut aus. danke...

könntest du noch unterstützung für stateFormat einbauen? dann kann man sich konfigurieren was man in der raum übersicht sieht statt nur active.

zu _EnergyCostDay: man könnte das reading ohne event erzeugen so das es nicht geloggt wird und per logProxy direkt aus dem reading in den plot holen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

peterK

,Hallo und natürlich auch von mir vielen Dank zu so einem tollen Modul.
Habe damit auch schon romprobiert.
Eine Frage wenn ich das Reading KwhperCounts auf 1 setze dann übernimmt der genau meine regex.
Ändere ich dies z.B aus 0.1 dann wird irgendwas gerechnet , bei 0.01 noch was anders und bei 0.001 wieder was anderes.
Würde diesen Faktor gerne benutzen um von 7 Stelligen Counter auf 4 Stellung.xxx zu kommen.
Was könnte ich falsch machen ?
Peter

Sailor

Hallo CmdA
Zitat von: C0mmanda am 30 August 2016, 17:47:38

Okay, gut zu wissen. Danke.
Wie sich die finanzielle Reserve errechnet habe ich zwar noch nicht ganz nachvollzogen, aber da komme ich sicher noch hinter.

Ganz einfach: Monatlicher zu zahlender Abschlag jeweils am 01. eines Monats aufsummiert minus die aktuellen Verbrauchskosten.


Zitat von: C0mmanda am 30 August 2016, 17:47:38
Bei uns wird zwar immer gegen Ende Nov/Anfang Dez. am Zähler abgelesen (müssen wir selbst machen), die Endabrechnung wird aber zum 31.12. hochgerechnet.
Heißt auf dem Papier wird bei mir der Zähler am 31.12. abgelesen.
Was müsste ich dann korrekterweise als "MonthOfAnnualReading" angeben? 12 oder 1?

1

Gruss
    Sailor
******************************
Man wird immer besser...