Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

Reinhart

@Hanneck

ja, auch wir haben alle einmal ganz von vorn begonnen und nur mit Übung wird es immer leichter!

Gerade beim ElectricityCalculator kannst du dich austoben was die Formatierung betrifft, denn jeder Anwender hat hier andere Schwerpunkte was die Ausgabe betrifft. Wichtig ist, das das Modul die Readings erst mal liefert und das tut es Dank Sailor ja bereits perfekt.

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

ghayne

Zitat von: Sailor am 06 Dezember 2016, 13:22:40
Hi Gary

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

Hello Sailor,
The stateFormat just formats the output of the counter. The code for the Calculator is in my post. I copied the definition from the raw definition, that's why it says defmod. I have just tested it again and the PowerCurrent value is jumping all over the place although the counter is updating every 18 seconds, which should give a constant reading of 250W.

Regards, Garry

Sailor

Hi Gary

Zitat von: Garry Hayne am 06 Dezember 2016, 18:35:57
Hello Sailor,
The stateFormat just formats the output of the counter. The code for the Calculator is in my post. I copied the definition from the raw definition, that's why it says defmod. I have just tested it again and the PowerCurrent value is jumping all over the place although the counter is updating every 18 seconds, which should give a constant reading of 250W.

I think I need a plot of PowerCurrent and CounterCurrent to be able to do further suggestions.

Rergards
    Sailor
******************************
Man wird immer besser...

ghayne

Zitat von: Sailor am 07 Dezember 2016, 06:45:57
Hi Gary

I think I need a plot of PowerCurrent and CounterCurrent to be able to do further suggestions.

Rergards
    Sailor

Hallo Sailor,

I think the problem is due to the resolution of your module maybe.

My meter has 800 pulses/Kwh (0.00125 Kw per pulse), this means for example that the pulses are coming every 2 seconds for 2.25 Kw.

To get accurate PowerCurrent this would mean measuring with millisecond accuracy between pulses, I'm not sure this is possible with fhem on my raspberry pi. Correct me if I'm wrong.

In all other respects the Module is wonderful.

I need an accurate Watt-meter, I think I might have to use an Arduino to do the fast calculations on the meter, or is there a possibility in fhem to measure in the millisecond region accurately?

Regards, Garry

Sailor

H Garry

Zitat von: Garry Hayne am 07 Dezember 2016, 12:26:26
I think the problem is due to the resolution of your module maybe.
My meter has 800 pulses/Kwh (0.00125 Kw per pulse), this means for example that the pulses are coming every 2 seconds for 2.25 Kw.
To get accurate PowerCurrent this would mean measuring with millisecond accuracy between pulses, I'm not sure this is possible with fhem on my raspberry pi. Correct me if I'm wrong.
In all other respects the Module is wonderful.
I need an accurate Watt-meter, I think I might have to use an Arduino to do the fast calculations on the meter, or is there a possibility in fhem to measure in the millisecond region accurately?

OK, now we get a bit closer.

Which Kind of Hardware are you using to Count, intermediate store and Forward the pulses?

Do you have a photo of the Setup for us?

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

ghayne

#155
Zitat von: Sailor am 07 Dezember 2016, 12:42:18
H Garry

OK, now we get a bit closer.

Which Kind of Hardware are you using to Count, intermediate store and Forward the pulses?

Do you have a photo of the Setup for us?

Regards
     Sailor


Hi Sailor,
I am using a photodiode module which I am reading directly into fhem using the RPI_GPIO Module and using the HourCounter Module to record the pulses, this is working fine, the pulses are being recorded correctly. I use the HourCounter countsOverall as the source for your module.

Regards, Garry

Update:

Solved it in my RPI_GPIO module by adding userReadings:

First set stateValue to time

then set userReadings:

time:Pinlevel:.low { use Time::HiRes qw(time);; time();; },
power:Pinlevel:.low { use Time::HiRes qw(time);; sprintf("%.2f", 3600000 / (800 * (time() - OldValue("Pin12")))) . " W";; }

might be a good start for you to use in your module for PowerCurrent.

Garry


hartenthaler

So, ich nähere mich langsam dem gewünschten Ergebnis. Mir ist aufgefallen:

  • die beiden Readings _reading_PowerDaySum und _reading_PowerDayCount können wohl mit deletereading gelöscht werden
  • das Reading _PowerDayMin bekommt um Mitternacht den Wert 0 und das ändert sich dann natürlich den ganzen Tag auch nicht mehr; da stimmt was an der Logik nicht
  • der tiefere Sinn des Attributes Currency erschließt sich mir nicht, da es nirgendswo verwendet wird
  • beim Attribut ElectricityKwhPerCounts muss das W groß und das k klein geschrieben werden
  • beim Attribut ElectricityPricePerKWh muss das k klein geschrieben werden
  • in der Systematik fehlt das Reading _EnergyCostDay

In der commandref steht

Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings
<DestinationDevice>_<SourceCounterReading>_CounterDay1st,
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st
entsprechend mit dem setreading - Befehl korrigiert werden.

Ich denke, dass das so nicht genau stimmt. Sind wirklich genau diese Readings gemeint? Ein Hinweis auf "Raw definition" könnte hier auch helfen, da spart man sich viel Tipparbeit bzw. Copy/Paste-Fehler. Ich habe z.B. basierend auf der letzten Rechnung folgende Readings geändert:

  • _reading_CounterMeter1st
  • _reading_CounterMeterLast (wird dieser Wert für irgendetwas verwendet?)
Viele Grüße
Hermann
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Hanneck

Hallo
ich komme noch nicht ganz an`s Ziel. Ich habe beim umsetzen des Energiezähler noch nicht das richtige Aussehen. Außerdem habe ich im log einen Fehler den ich noch nicht gefunden habe.
2016.12.09 22:07:00 1: PERL WARNING: String found where operator expected at (eval 568) line 1, at end of line
2016.12.09 22:07:00 1: stacktrace:
2016.12.09 22:07:00 1:     main::__ANON__                      called by (eval 568) (1)
2016.12.09 22:07:00 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (373)
2016.12.09 22:07:00 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (1305)
2016.12.09 22:07:00 1:     main::readingsGroup_Notify          called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (3209)
2016.12.09 22:07:00 1:     main::DoTrigger                     called by fhem.pl (4110)
2016.12.09 22:07:00 1:     main::readingsEndUpdate             called by ./FHEM/73_ElectricityCalculator.pm (829)
2016.12.09 22:07:00 1:     main::ElectricityCalculator_Notify  called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (3209)
2016.12.09 22:07:00 1:     main::DoTrigger                     called by fhem.pl (3534)
2016.12.09 22:07:00 1:     main::Dispatch                      called by ./FHEM/00_HMLAN.pm (779)
2016.12.09 22:07:00 1:     main::HMLAN_Parse                   called by ./FHEM/00_HMLAN.pm (604)
2016.12.09 22:07:00 1:     main::HMLAN_Read                    called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (672)
2016.12.09 22:07:00 1: PERL WARNING: (Missing semicolon on previous line?)
2016.12.09 22:07:00 1: stacktrace:
2016.12.09 22:07:00 1:     main::__ANON__                      called by (eval 568) (1)
2016.12.09 22:07:00 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (373)
2016.12.09 22:07:00 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (1305)
2016.12.09 22:07:00 1:     main::readingsGroup_Notify          called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (3209)
2016.12.09 22:07:00 1:     main::DoTrigger                     called by fhem.pl (4110)
2016.12.09 22:07:00 1:     main::readingsEndUpdate             called by ./FHEM/73_ElectricityCalculator.pm (829)
2016.12.09 22:07:00 1:     main::ElectricityCalculator_Notify  called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (3209)
2016.12.09 22:07:00 1:     main::DoTrigger                     called by fhem.pl (3534)
2016.12.09 22:07:00 1:     main::Dispatch                      called by ./FHEM/00_HMLAN.pm (779)
2016.12.09 22:07:00 1:     main::HMLAN_Parse                   called by ./FHEM/00_HMLAN.pm (604)
2016.12.09 22:07:00 1:     main::HMLAN_Read                    called by fhem.pl (3287)
2016.12.09 22:07:00 1:     main::CallFn                        called by fhem.pl (672)
2016.12.09 22:07:00 2: Can't find string terminator '"' anywhere before EOF at (eval 568) line 1.


Wenn ich es richtig verstehe fehlt da irgendwo ein Beistrich oder ein Semikolon, aber wo?
defmod Energiezaehler readingsGroup <%measure_power>,<Zaehlerstand>,<aktueller Wert>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€ Reserve>,<hr> .*(HA|WP):Strom_HA01_energy_CounterCurrent,Strom_HA01_energy_EnergyDay,Strom_HA01_energy_EnergyDayLast,Strom_HA01_energy_EnergyCostDayLast,Strom_HA01_energy_EnergyCostMonth,Strom_HA01_energy_EnergyCostMeter,Strom_HA01_energy_FinanceReserve,Strom_HA01_energyEnergyDay,Strom_WP01_energy_CounterCurrent,Strom_WP01_energy_EnergyDay,Strom_WP01_energy_EnergyDayLast,Strom_WP01_energy_EnergyCostDayLast,Strom_WP01_energy_EnergyCostMonth,Strom_WP01_energy_EnergyCostMeter,Strom_WP01_energy_FinanceReserve,Strom_WP01_energy_EnergyDay
attr Energiezaehler room 2.4_Energie
attr Energiezaehler valueFormat {'Strom_WP01_energy_CounterCurrent' =>"%09d",'Strom_HA01_energy_CounterCurrent' =>"%09d", 'energy_EnergyDay1st' =>"%.0f W", "kW/h", 'energy_EnergyDayLast' =>"%.2f kW/h",'energy_EnergyCostMonth' => "%.2f€",'energy_EnergyCostMeter' =>"%.2f €",'energy_FinanceReserve' =>"%.2f €",'energy_EnergyDay' => {sprintf("%.2f €",$VALUE*0.32")}}


Warum wird mir im Energiezähler auch nicht die kWh angezeigt. Was mache ich da noch falsch?

Viele Grüße Dieter

igami

#158
Zitat von: Loredo am 04 Oktober 2016, 14:05:49
Eignet sich das Modul auch, um die ungefähren/geschätzten Kosten eines einzelnen Gerätes zu berechnen?

Ich stelle mir das so vor:

1. Man schreibt ein zusätzliches Modul, welches ein beliebiges FHEM-Gerät aufgrund seines on/off/absent Status überwacht und somit einen Pulse-Reader simuliert. Während das Gerät an ist wird das Pulse-Reading öfter hochgezählt, während des im standby ist weniger oft und wenn es ganz aus bzw. absent ist dann wird der Pulse Wert gar nicht mehr erhöht.
2. Man konfiguriert als Attribute den ungefähren Verbrauchswert für "on", "standby" und "off/absent". Diese Werte hat man entweder einmalig real ermittelt oder z.B. der Bedienungsanleitung entnommen (wie gesagt, es soll nur ganz ungefähr eine Hausnummer liefern bzw. einen Trend/Verlauf ermöglichen!).

Inwiefern könnte man das bereits bestehende ElectricityCalculator Modul dafür verwenden? Würde man Punkt 2 dort bereits durch entsprechende Attribute zu definieren können?
Ich bin momentan bei den gleichen Gedanken. EMONITOR habe ich mir auch schon angeschaut.

Ich habe aber erst mal noch eine Frage zum ElectricyCalculator.
Ich habe den wie folgt definiert

defmod ElectricityCalculator ElectricityCalculator .*:energy.*

Es werden auch meine beiden HM-ES-PMSw1-Pl erkannt und es entstehen die entsprechenden Readings.
Was mir fehlt: es werden nicht alle Zähler zusammengerechnet, sodass ich einen Gesamtverbrauch pro Tag sehe. Könnte man das noch einbauen, oder muss ich das nur noch konfigurieren?
Laut commandref
Zitat
Das ElectricityCalculator Modul berechnet den Verbrauch an elektrischer Energie (Stromverbrauch) und den verbundenen Kosten von einem oder mehreren Elektrizitätszählern.
verstehe ich das so, dass man auch mehrere Zähler mit einem device erfassen kann.

@Julian: hast du noch weiter was gemacht?

Edit: Ich habe noch ein Problem, dass ich das attribut room nicht löschen kann, da es dann automatisch von dem Modul wieder angelegt wird. Da bin ich auch der Meinung: Attribute gehören dem Benutzer und sollten nicht von dem Modulautor vorbelegt werden, aber dazu gibt es einen anderen Thread ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Sailor

#159
Hallo Hermann

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
So, ich nähere mich langsam dem gewünschten Ergebnis. Mir ist aufgefallen:
Na das freut mich! :-)


Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • die beiden Readings _reading_PowerDaySum und _reading_PowerDayCount können wohl mit deletereading gelöscht werden
Korrekt. Dies sind jetzt versteckte Readings mit "." und können, wie bereits gepostet, gelöscht werden.

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • das Reading _PowerDayMin bekommt um Mitternacht den Wert 0 und das ändert sich dann natürlich den ganzen Tag auch nicht mehr; da stimmt was an der Logik nicht
Gefixt! Es soll der erste Wert übernommen werden und nicht der Null-gesetzte.
Danke für die Erinnerung!


Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • der tiefere Sinn des Attributes Currency erschließt sich mir nicht, da es nirgendswo verwendet wird
Das kommt erst zum Tragen, wenn ich eine Routine zum automatischen Erstellen von Plots und ReadingsGroups erstelle.
Siehe auch die Beiträge zu ValueStyle etc.

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • beim Attribut ElectricityKwhPerCounts muss das W groß und das k klein geschrieben werden
Nein, das soll so sein um die einzelnen Worte voneinander zu trennen. Es soll nicht die SI-Einheit korrekt wiedergeben.

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • beim Attribut ElectricityPricePerKWh muss das k klein geschrieben werden
Nein das "W". Begründung siehe oben. Aber Treffer! Werde dies aber nicht mehr ändern um die Abwärtskompatibilität nicht zu gefährden.

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
  • in der Systematik fehlt das Reading _EnergyCostDay
OK, ist geändert!

Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
In der commandref steht

Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings
<DestinationDevice>_<SourceCounterReading>_CounterDay1st,
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st
entsprechend mit dem setreading - Befehl korrigiert werden.

Ich denke, dass das so nicht genau stimmt. Sind wirklich genau diese Readings gemeint? Ein Hinweis auf "Raw definition" könnte hier auch helfen, da spart man sich viel Tipparbeit bzw. Copy/Paste-Fehler.
Man muss, wie in der Commandref beschrieben, die Platzhalter in den eckigen Klammern <Platzhalter> entsprechend seiner Gerätedefinition ändern.
Mit Copy-and-Paste ist da nix zu machen. Allenfalls für die Endung nach dem letzten Unterstrich.


Zitat von: hartenthaler am 08 Dezember 2016, 17:00:41
Ich habe z.B. basierend auf der letzten Rechnung folgende Readings geändert:
  • _reading_CounterMeter1st
  • _reading_CounterMeterLast (wird dieser Wert für irgendetwas verwendet?)
Der letzte Wert ist historisch begründet und wird noch "mitgeschleppt". Da nur ein Wert pro Jahr gesetzt wird, füllt er aber nicht sonderlich das Log-File.

Danke für diesen Beitrag!!!

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

hartenthaler

Hallo Sailor!
danke für Deine vielen Antworten.

Zitat von: Sailor am 11 Dezember 2016, 21:57:42
Man muss, wie in der Commandref beschrieben, die Platzhalter in den eckigen Klammern <Platzhalter> entsprechend seiner Gerätedefinition ändern.
Mit Copy-and-Paste ist da nix zu machen. Allenfalls für die Endung nach dem letzten Unterstrich.
Da stecken zwei Sachen drin: Das mit den spitzen (nicht eckigen) Klammern ist klar. Meist dürften die entsprechenden Teile eher länglich und komplex sein. Daher fand ich es sinnvoll mir "Raw definition" anzeigen zu lassen (auf der Device-Detail-Seite ganz unten der dritte Menüpunkt von links (neben Select icon und Extend devStateIcon)). Dort muss man dann nur aus "setstate" ein "setreading" machen und den Datums-/Zeitstempel löschen und schon hat man es so dastehen wie man es zum ändern der Werte braucht.

Und das andere: ich zweifele daran, dass

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

genau die richtigen Werte sind, die man von Hand setzen sollte. Muss man nicht auch

_CounterMonthLast
_CounterYearLast

setzen, denn diese werden wohl nicht automatisch auf einen etwas kleineren Wert als _CounterMonth1st bzw. _CounterYear1st gesetzt.

Darüber hinaus ist die Logik bei den Last-Werten für Day und Month, dass sie jeweils ganz kurz vor den entsprechenden 1st-Werten liegen. Bei _CounterYearLast ist das laut commandref anscheinend anders. Dort steht
CounterYearLast : Der letzte Zählerstand seit Mitternacht des ersten Tages des vorherigen Jahres.
Wahrscheinlich muss das in der commandref anders heißen, aber vielleicht ist hier ja tatsächlich auch die Logik anders. Meine Vermutung:
CounterYearLast : Der letzte Zählerstand am letzten Tag des vorherigen Jahres.

Viele Grüße
Hermann
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Sailor

Hallo Hermann

Zitat von: hartenthaler am 11 Dezember 2016, 23:55:16
Und das andere: ich zweifele daran, dass

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

genau die richtigen Werte sind, die man von Hand setzen sollte. Muss man nicht auch

_CounterMonthLast
_CounterYearLast

setzen, denn diese werden wohl nicht automatisch auf einen etwas kleineren Wert als _CounterMonth1st bzw. _CounterYear1st gesetzt.

Die Antwort finden sich in den augenblicklichen Codeyeilen 703 bis 713>

### Calculate consumed Energy of current  day   W = (Wcurrent[kWh] - W1stReadDay[kWh])   
my $ElectricityCalcEnergyDay       = ($ElectricityCountReadingValueCurrent - ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_CounterDay1st", "0"));

### Calculate consumed Energy of current  month W = (Wcurrent[kWh] - W1stReadMonth[kWh])
my $ElectricityCalcEnergyMonth     = ($ElectricityCountReadingValueCurrent - ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_CounterMonth1st", "0"));

### Calculate consumed Energy of current   year W = (Wcurrent[kWh] - W1stReadYear[kWh]) 
my $ElectricityCalcEnergyYear      = ($ElectricityCountReadingValueCurrent - ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_CounterYear1st", "0"));

### Calculate consumed Energy of Electricity-meter year W = (Wcurrent[kWh] - W1stReadMeter[kWh])
my $ElectricityCalcEnergyMeter     = ($ElectricityCountReadingValueCurrent - ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_CounterMeter1st", "0"));

Zitat von: hartenthaler am 11 Dezember 2016, 23:55:16
Darüber hinaus ist die Logik bei den Last-Werten für Day und Month, dass sie jeweils ganz kurz vor den entsprechenden 1st-Werten liegen. Bei _CounterYearLast ist das laut commandref anscheinend anders. Dort steht
CounterYearLast : Der letzte Zählerstand seit Mitternacht des ersten Tages des vorherigen Jahres.
Wahrscheinlich muss das in der commandref anders heißen, aber vielleicht ist hier ja tatsächlich auch die Logik anders. Meine Vermutung:
CounterYearLast : Der letzte Zählerstand am letzten Tag des vorherigen Jahres.

Ja. du hast Recht - Dämliche Übersetzung aus dem Englischen. Dort steht es richtig.
Korrigiert.

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

Hanneck

Hallo,

kann mir jemand sagen warum diese Fehlermeldung bei einem Zähler erfolgt?
Bei der Wärmepumpe ist es Ok.
2016-12-12 13:35:49 HMLAN HMLAN1 loadLvl: low
2016-12-12 13:36:05 CUL_HM Strom_HA 46880
2016.12.12 13:36:05 2 : syntax error at (eval 20756) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20757) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20758) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20759) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20760) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20761) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20762) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20763) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20764) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016.12.12 13:36:05 2 : syntax error at (eval 20765) line 1, near ";'Strom_HA01_energy_CounterCurrent'" 2016-12-12 13:36:05 readingsGroup Energiezaehler HA.Strom_HA01_energy_CounterCurrent: 46.880
2016-12-12 13:36:05 readingsGroup Energiezaehler HA.Strom_HA01_energy_EnergyCostMeter: -128.966
2016-12-12 13:36:05 readingsGroup Energiezaehler HA.Strom_HA01_energy_EnergyDay: 3.690
2016-12-12 13:36:05 readingsGroup Energiezaehler HA.Strom_HA01_energy_FinanceReserve: 791.966
2016-12-12 13:36:05 readingsGroup Energiezaehler HA.Strom_HA01_energy_EnergyCostMonth: -128.966
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_PowerCurrent: 219.512
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_PowerDayAver: -361.550
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyDay: 3.690
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyMonth: -403.020
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyYear: -403.020
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyMeter: -403.020
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyCostMonth: -128.966
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyCostYear: -128.966
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_EnergyCostMeter: -128.966
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_FinanceReserve: 791.966
2016-12-12 13:36:05 ElectricityCalculator HA Strom_HA01_energy_CounterCurrent: 46.880
2016-12-12 13:36:05 CUL_HM Strom_HA01 boot: off
2016-12-12 13:36:05 CUL_HM Strom_HA01 eState: E: 46880 P: 220
2016-12-12 13:36:05 CUL_HM Strom_HA01 energy: 46880
2016-12-12 13:36:05 CUL_HM Strom_HA01 energyCalc: 46880
2016-12-12 13:36:05 CUL_HM Strom_HA01 power: 220
2016-12-12 13:36:05 CUL_HM Strom_HA01 E-Energy_kWh: 25458.0
2016-12-12 13:36:14 HMLAN HMLAN1 loadLvl: low


Danke Dieter

igami

Zitat von: igami am 10 Dezember 2016, 21:46:09
Ich habe aber erst mal noch eine Frage zum ElectricyCalculator.
Ich habe den wie folgt definiert

defmod ElectricityCalculator ElectricityCalculator .*:energy.*

Es werden auch meine beiden HM-ES-PMSw1-Pl erkannt und es entstehen die entsprechenden Readings.
Was mir fehlt: es werden nicht alle Zähler zusammengerechnet, sodass ich einen Gesamtverbrauch pro Tag sehe. Könnte man das noch einbauen, oder muss ich das nur noch konfigurieren?
Laut commandrefverstehe ich das so, dass man auch mehrere Zähler mit einem device erfassen kann.
Heute kam mir schon eine Idee, wie man das mit userreadings lösen kann. Sobald das funktioniert werde ich das hier mal vorstellen und würde mich freuen, wenn das dann Bestandteil des Modul wird :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

hartenthaler

Dadurch, dass in der neuen Version des Moduls u.a. auch die Tageskosten enthalten sind, kann man eine readingsGroup etwas einfacher formulieren (basierend auf der Lösung von Reinhart):

define rg_Energie.Wohnung readingsGroup <%measure_power>,<Zählerstand>,<aktuelle Leistung>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€-Reserve> Energie.Wohnung:Stromzaehler.Wohnung_meter_reading_CounterCurrent,Stromzaehler.Wohnung_meter_reading_PowerCurrent,Stromzaehler.Wohnung_meter_reading_EnergyDay,Stromzaehler.Wohnung_meter_reading_EnergyCostDay,Stromzaehler.Wohnung_meter_reading_EnergyDayLast,Stromzaehler.Wohnung_meter_reading_EnergyCostDayLast,Stromzaehler.Wohnung_meter_reading_EnergyCostMonth,Stromzaehler.Wohnung_meter_reading_EnergyCostMeter,Stromzaehler.Wohnung_meter_reading_FinanceReserve
attr rg_Energie.Wohnung mapping %ALIAS
attr rg_Energie.Wohnung nameStyle style="color:blue"
attr rg_Energie.Wohnung room Energie,Preis
attr rg_Energie.Wohnung valueFormat {'Stromzaehler.Wohnung_meter_reading_CounterCurrent' =>"%09d",\
'Stromzaehler.Wohnung_meter_reading_PowerCurrent' =>"%.0f W",\
'Stromzaehler.Wohnung_meter_reading_EnergyDay'=> "%.1f kWh",\
'Stromzaehler.Wohnung_meter_reading_EnergyCostDay' => "%.2f €",\
'Stromzaehler.Wohnung_meter_reading_EnergyDayLast' => "%.1f kWh",\
'Stromzaehler.Wohnung_meter_reading_EnergyCostDayLast'=> "%.2f €",\
'Stromzaehler.Wohnung_meter_reading_EnergyCostMonth'=> "%.2f €",\
'Stromzaehler.Wohnung_meter_reading_EnergyCostMeter'=> "%.2f €",\
'Stromzaehler.Wohnung_meter_reading_FinanceReserve' => "%.2f €"\
}
attr rg_Energie.Wohnung valueStyle { if($READING =~ "_PowerCurrent" && $VALUE >= 0 && $VALUE <= 1000){'style="color:green;;text-align:right"'}\
elsif( $READING =~ "_PowerCurrent" && $VALUE > 1000 && $VALUE < 3000){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_PowerCurrent" && $VALUE >= 3000){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE <= 10){'style="color:green;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE > 10 && $VALUE < 15 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE >= 15){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE <= 3){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE > 3 && $VALUE < 5 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE >= 5){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE <= 90){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE > 90 && $VALUE < 150){'style="color:orange;;text-align:right"' }\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE >= 150){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE <= 90){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE > 90 && $VALUE < 150 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE >= 150){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_FinanceReserve" && $VALUE > 400){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_FinanceReserve" && $VALUE < 400 && $VALUE > 300 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_FinanceReserve" && $VALUE <= 300){'style="color:red;;text-align:right"'}\
else{'style="color:grey;;text-align:right"'}}

Hier mal nur für einen Stromzähler.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...