Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

Loredo

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?




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

Danke! Klingt ja schonmal sehr ähnlich. Leider ist es ja kein offizielles Modul und ist auf den ersten Blick auch nicht dafür konzipiert mit dem ElectricityCalculator kombiniert zu werden (und enthält deshalb wohl dann auch Dopplungen in der Funktion). Ich bin nicht sicher ob es sich lohnt, das Modul zu recyceln oder besser etwas neues, passendes zu schreiben (und sich davon ggf. hier und dort inspirieren zu lassen).
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Sailor

Hallo Andre

Zitat von: justme1968 am 31 August 2016, 13:55:37
für state format musst du:
- $readingFnAttributes in deine AttrList mit einbauen. damit bekommst du automatisch stateFormat und die ganzen event- attribute.
- $hash->{STATE} nicht mehr (bzw. nur noch ein mal im define) ändern. eventuell statt dessen ein state reading verwenden

OK, so weit scheint es zu laufen.
Ich checke mal die Version heute Abend ein, mit der Bitte an Euch es zu testen...

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

Reinhart

Hallo,

möchte mich auch für das interessante Modul bedanken. Ich habe es vor ein paar Tagen erst entdeckt und nun eingebaut und die ersten Daten sprudeln schon herein.
Da ich 2 Varianten der Energieerfassung in Fhem habe, nutze ich jede auch mit diesem Modul.

Ich habe einen eigenen Raspberry dem ich 3 S0-Zähler direkt über GPIO's dem Modul HourCounter zuführe und dieses mit ElectrricityCalculator erweitere. Ohne dem Atrribut "ReadingDestination CounterDevice" ist die Auswertung in readingsGroup etwas schwierig, weil ja der Devicename sonst vorangestellt wird und dann mehrere readingsGroup für jede Auswertung notwendig werden. Zum Glück hat der Autor das bedacht und das Attribut mit 2 Möglichkeiten versehen.

In der zweiten Variante habe ich 2 YoulessModule eingesetzt und ebenfalls mit dem ElectricityCalculator erweitert. Die Youlessmodule werden über einen Readkontakt beim Gaszähler und einer Impuls Led am Stromzähler des Stromlieferanten gespeist. Der einzige große Vorteil von Youless ist, das sie auch ohne Fhem funktionieren und die Daten speichern können.

Inwieweit die Berechnungen Sinn ergeben werde ich in den nächsten Wochen/Monaten dann sehen. Schön ist es auf jeden Fall einmal genau die Euros zu sehen die da täglich verbraucht werden.

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

cjung

Hallo Reinhart,

deine ReadingsGroups sehen super aus. Besonders würde mich die zweite interessieren.
Hast Du Lust die Konfig zu posten ?

Grüße Christoph
Raspberry Pi 2 B
Funk: HM_CFG_USB2, HM-CFG-LAN 8*HM_CC_RT_DN, 3*HM-SEC-SD, 3*HM_TC_IT_WM_W_EU, 1*HM-LC-Dim1TPBU-FM,5*HM-SEC-SC-2, 1*HM-SEC-SCo
Wired: HMW: CFG-LAN, 8*LC_Bl1_DR, LC_Dim1L_DR

Reinhart

#97
Hallo cjung!

Hier bitte die Config der readingsGroup.

####################################################
##         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.

#################################################
#            Strom Zähler UG                                                                         #
#################################################

define Energiezaehler readingsGroup <%measure_power>,<Verbrauch ab 0 Uhr>,<Stundenwert>,<Tageswert>,<Wochenwert>,<€ Gestern>,<Monat>,<Jahr>,<€ Reserve> .*(Zaehlerstand_UG|Zaehlerstand_DG|Zaehlerstand_EG):state,appCountsPerHour,appCountsPerDay,appCountsPerWeek,countsOverall_EnergyCostDayLast,countsOverall_EnergyCostMonth,countsOverall_EnergyCostMeter,countsOverall_FinanceReserve

attr Energiezaehler mapping %ALIAS
attr Energiezaehler nameStyle style="color:yellow"
attr Energiezaehler room Energie
attr Energiezaehler valueFormat {'state' =>"%.2f Wh", 'appCountsPerHour' => "%.1f Wh", 'appCountsPerDay' => "%.2f Wh", 'appCountsPerWeek' => "%.0f Wh", 'countsOverall_EnergyCostDayLast' => "%.2f €", 'countsOverall_EnergyCostMonth' => "%.2f €", 'countsOverall_EnergyCostMeter' => "%.2f €", 'countsOverall_FinanceReserve' => "%.2f €" }

attr Energiezaehler valueStyle { if($READING eq "state" && $VALUE >= 0 && $VALUE <= 8000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "state" && $VALUE > 8000 && $VALUE < 17000){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "state" && $VALUE >= 17000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "appCountsPerHour" && $VALUE > 1000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "appCountsPerHour" && $VALUE <= 500){ 'style="color:green;;text-align:right"' }elsif( $READING eq "appCountsPerHour" && $VALUE > 500 && $VALUE < 1000 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "appCountsPerDay" && $VALUE <= 8000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "appCountsPerDay" && $VALUE > 8000 && $VALUE < 17000 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "appCountsPerDay" && $VALUE >= 17000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "appCountsPerWeek" && $VALUE <= 56000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "appCountsPerWeek" && $VALUE > 56000 && $VALUE < 105000 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "appCountsPerWeek" && $VALUE >= 119000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "appCountsPerMonth" && $VALUE <= 240000){ 'style="color:green;;text-align:right"' }elsif( $READING eq "appCountsPerMonth" && $VALUE > 240000 && $VALUE < 510000 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "appCountsPerMonth" && $VALUE >= 510000){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyDay" && $VALUE <= 15){'style="color:green;;text-align:right"'}elsif( $READING eq "countsOverall_EnergyDay" && $VALUE > 15 && $VALUE < 20 ){'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyDay" && $VALUE > 20){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyDayLast" && $VALUE <= 15){'style="color:green;;text-align:right"'}elsif( $READING eq "countsOverall_EnergyDayLast" && $VALUE > 15 && $VALUE < 20 ){'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyDayLast" && $VALUE > 20){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostDayLast" && $VALUE <= 3){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostDayLast" && $VALUE > 3 && $VALUE < 5 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostDayLast" && $VALUE >= 5){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMonth" && $VALUE <= 90){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMonth" && $VALUE > 90 && $VALUE < 150 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMonth" && $VALUE >= 150){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMeter" && $VALUE <= 90){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMeter" && $VALUE > 90 && $VALUE < 150 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_EnergyCostMeter" && $VALUE >= 150){ 'style="color:red;;text-align:right"' }elsif( $READING eq "countsOverall_FinanceReserve" && $VALUE > 400){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "countsOverall_FinanceReserve" && $VALUE < 400 && $VALUE > 200 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "countsOverall_FinanceReserve" && $VALUE < 399){ 'style="color:red;;text-align:right"' }else{ 'style="color:grey;;text-align:right"' } }

und hier die readingGroup aus den GPIO's die direkt von den S0-Zählern kommen.

Wichtig bei beiden readingsGroup ist das Attribut ReadingDestination (attr myElectricityCalculatorUG ReadingDestination CounterDevice) damit die Berechnungen in den urspünglichen Device zurück geschrieben werden und nicht nur im ElectricityCalculator landen, damit tust du dir dann leichter bei der Formatierung.
Deine persönlichen Alarmgrenzen und somit die Umfärbungsschwelle musst halt selber auf deine Bedürfnisse vernünftig einstellen. Ich habe hohen Stromverbrauch und daher die Schwellen relativ hoch eingestellt wenn es rot werden soll.

PS: ach ja, der Gaszähler kommt bei mir schon in Kw, der wird vom Youless schon umgerechnet.

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

cjung

Hallo Reinhard,

Danke Dir !!

Viele Grüße
Christoph
Raspberry Pi 2 B
Funk: HM_CFG_USB2, HM-CFG-LAN 8*HM_CC_RT_DN, 3*HM-SEC-SD, 3*HM_TC_IT_WM_W_EU, 1*HM-LC-Dim1TPBU-FM,5*HM-SEC-SC-2, 1*HM-SEC-SCo
Wired: HMW: CFG-LAN, 8*LC_Bl1_DR, LC_Dim1L_DR

jnewton957

Zitat von: Reinhart am 07 Oktober 2016, 13:40:27


und hier die readingGroup aus den GPIO's die direkt von den S0-Zählern kommen.

LG
Reinhart

Hallo,

kannst du auch noch deine Konfiguration der zwei Devices (LS110|LS110_2) und die dazugehörigen Readingsnamen posten.

Dann wird es einfacher sein, meine (unsere) cfg an deine Readingnamen anzupassen, als umgekehrt.

Danke
Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Reinhart

ja bitte gerne.

Device LS110
define LS110 JSONMETER LS110 10.0.0.14 300
attr LS110 alias Gaszaehler
attr LS110 doStatistics 1
attr LS110 event-on-update-reading electricityConsumed,electricityPower,statElectricityConsumed
attr LS110 group Energie
attr LS110 icon measure_power_meter
attr LS110 room Energie
attr LS110 stateFormat {sprintf("%20s", ReadingsVal($name,"statElectricityConsumedLast",0))}


Device LS110_2
define LS110_2 JSONMETER LS110 10.0.0.13 60
attr LS110_2 alias Stromzaehler
attr LS110_2 doStatistics 1
attr LS110_2 event-on-update-reading electricityConsumed,electricityPower,statElectricityConsumed
attr LS110_2 group Energie
attr LS110_2 icon measure_power_meter
attr LS110_2 room Energie
attr LS110_2 stateFormat {sprintf("%20s", ReadingsVal($name,"statElectricityConsumedLast",0))}


Ich habe die ReadingsGroup auch noch etwas umgebaut um ohne der 99_UtilsHourCounter.pm auszukommen, denn diese funktioniert nach einem Update bei mir nicht mehr und da muss ich den Fehler erst finden.

####################################################
##            Stromzaehler 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"'}}


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

Sailor

Hallo Reinhart

Zitat von: Reinhart am 11 Oktober 2016, 16:21:09
ja bitte gerne.
LG
Reinhart

also ich glaub ich bin dämlicher als ich dachte.

Ich versuche die youless - Erweiterung zu implementieren aber ich scheitere kläglich.

Mein GasCalulator-device heisst: CH_GasCalculator
Das erste Reading im GasCalculator-Device lautet: CH_GasCounter_counters.A_CostMonthLast

Mein ElectricityCalculator-device heisst: CH_ElectricityCalculator
Mein erstes Reading lautet: CH_ElectricityCounter_energyCalc_CounterCurrent

Wie muss ich denn nun bloß deine rgr-Definition umschreiben, dass es funktioniert?  :-[

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

Reinhart

#102
Hallo Sailor!

Ich hänge dir hier ein Bild von den Readings meines Youless an, dann siehst du genau die verwendeten Namen und welchen Wert sie beinhalten. Damit kommst du dann sicher leichter zurecht, wenn man weiß was drinnen steht. Ob Strom oder Gas ist vom Youless gesehen egal, weil ich in der Impulskonstante den Faktor von N/m3 auf KW schon umgerechnet habe und in Fhem alles in elektrischer Leistung betrachte.

und hier nochmals die Definition, weil ich habe da nachträglich noch etwas umgebaut, sonst passen die ReadingNames nicht zusammen.
####################################################
##            Stromzaehler 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"'}}
#attr EnergiezaehlerS group Energie




LG
Reinhart

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

FunkOdyssey

#103
Hallo, ich nutze u.a. GasCalculator wie auch ElectricityCalculator zur Verbrauchsberechnung.
In den Module werden ja bereits historische Readings angelegt.
Ich würde nun gerne aber eine Übersicht üben den Verbrauch der z.B.
- letzten 7 Tage,
- letzten 12 Monate
etc. erstellen.

Hat jemand einen Tipp wie ich das am besten angehe?
Diese würde ich z.B. in einer ReadingsGroup oder evtl. in einem Plot anzeigen lassen.

ReadingsGroup:
Hier müsste ich ja eine Liste an Readings für jeweils die letzten Tage und alle Monate anlegen. Das gefällt mir nicht so gut. Kann man sicherlich per DOIF einfach umsetzen.

Plot:
Das sollte doch eigentlich von den historischen Daten relativ einfach sein, da ich im GC-Log ja die Readings EnergyDayLast und EnergyMonthLast enthalten habe.
Hat zufällig schon jemand ein SVG-Plot damit erstellt? Die Schwierigkeit wird wohl sein, das Plot auf Tage und nicht auf den aktuellen Tag zu fokussieren.
Und leider lassen sich diese Readings im Plot-Editor nicht auswählen. Da werde ich wohl die .gplot-Datei anpacken müssen.

Nachtrag: Tatsache, das klappt sogar. Ich habe mal ein Screenshot angehangen. Ich habe die gplot-Datei manuell um das richtige Reading erweitern müssen. Dann war der Rest mit dem SVG-Attribut "fixedrange=month" schnell erledigt.




Ich frage, weil ich mir einen Tipp erhoffe oder ein "das würde ich aber anders machen". :-)

Danke.

ulli

Ich habe eine ähnlich gelagerte Frage. Ich plotte aktuell den Wert EnergyDay um den Tagesverbrauch zu sehen.
Das funktioniert ganz gut. Ich sehe eine stetig steigende Kurve welches prinzipiell das Integral des Verbrauches ist.
Jetzt würde ich gerne den aktuellen Verbrauch pro Zeitintervall ähnlich der Darstellung von FunkOdyssey nur über einen Tag plotten.
Ich dachte es wäre der Wert PowerCurrent...aber der erscheint mir unplausibel.

Anbei mal mein define

Internals:
   CHANGED
   DEF        Power:Pulse.*
   NAME       PowerCalculator
   NR         616
   NTFY_ORDER 10-PowerCalculator
   REGEXP     Power:Pulse.*
   STATE      active
   TYPE       ElectricityCalculator
   Readings:
     2016-10-24 20:10:57   Power_Pulse_CounterCurrent 104.560
     2016-10-24 00:00:56   Power_Pulse_CounterDay1st 91.200
     2016-10-24 00:00:56   Power_Pulse_CounterDayLast 91.186
     2016-10-17 18:16:01   Power_Pulse_CounterMeter1st 0.0266666
     2016-10-17 18:16:01   Power_Pulse_CounterMeterLast 0.013
     2016-10-17 18:16:01   Power_Pulse_CounterMonth1st 0.0266666
     2016-10-17 18:16:01   Power_Pulse_CounterMonthLast 0.013
     2016-10-17 18:16:01   Power_Pulse_CounterYear1st 0.0266666
     2016-10-17 18:16:01   Power_Pulse_CounterYearLast 0.013
     2016-10-24 00:00:56   Power_Pulse_EnergyCostDayLast 3.317
     2016-10-24 20:10:57   Power_Pulse_EnergyCostMeter 18.277
     2016-10-24 20:10:57   Power_Pulse_EnergyCostMonth 18.277
     2016-10-24 20:10:57   Power_Pulse_EnergyCostYear 18.277
     2016-10-24 20:10:57   Power_Pulse_EnergyDay 13.360
     2016-10-24 00:00:56   Power_Pulse_EnergyDayLast 18.973
     2016-10-24 20:10:57   Power_Pulse_EnergyMeter 104.533
     2016-10-24 20:10:57   Power_Pulse_EnergyMonth 104.533
     2016-10-24 20:10:57   Power_Pulse_EnergyYear 104.533
     2016-10-24 20:10:57   Power_Pulse_FinanceReserve 140.990
     2016-10-24 20:10:57   Power_Pulse_PowerCurrent 50400.000
     2016-10-24 20:10:57   Power_Pulse_PowerDayAver 15817.762
     2016-10-24 00:00:56   Power_Pulse_PowerDayCount 0
     2016-10-24 00:24:19   Power_Pulse_PowerDayMax 50400.000
     2016-10-24 00:00:56   Power_Pulse_PowerDayMin 0
     2016-10-24 00:00:56   Power_Pulse_PowerDaySum 0
   Helper:
     Gets:
       2016-10-24 20:10:57   Power_Pulse_CounterCurrent 104.560
       2016-10-24 00:00:56   Power_Pulse_CounterDay1st 91.200
       2016-10-24 00:00:56   Power_Pulse_CounterDayLast 91.186
       2016-10-17 18:16:01   Power_Pulse_CounterMeter1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterMeterLast 0.013
       2016-10-17 18:16:01   Power_Pulse_CounterMonth1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterMonthLast 0.013
       2016-10-17 18:16:01   Power_Pulse_CounterYear1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterYearLast 0.013
       2016-10-24 00:00:56   Power_Pulse_EnergyCostDayLast 3.317
       2016-10-24 20:10:57   Power_Pulse_EnergyCostMeter 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyCostMonth 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyCostYear 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyDay 13.360
       2016-10-24 00:00:56   Power_Pulse_EnergyDayLast 18.973
       2016-10-24 20:10:57   Power_Pulse_EnergyMeter 104.533
       2016-10-24 20:10:57   Power_Pulse_EnergyMonth 104.533
       2016-10-24 20:10:57   Power_Pulse_EnergyYear 104.533
       2016-10-24 20:10:57   Power_Pulse_FinanceReserve 140.990
       2016-10-24 20:10:57   Power_Pulse_PowerCurrent 50400.000
       2016-10-24 20:10:57   Power_Pulse_PowerDayAver 15817.762
       2016-10-24 00:00:56   Power_Pulse_PowerDayCount 0
       2016-10-24 00:24:19   Power_Pulse_PowerDayMax 50400.000
       2016-10-24 00:00:56   Power_Pulse_PowerDayMin 0
       2016-10-24 00:00:56   Power_Pulse_PowerDaySum 0
     Sets:
       2016-10-24 20:10:57   Power_Pulse_CounterCurrent 104.560
       2016-10-24 00:00:56   Power_Pulse_CounterDay1st 91.200
       2016-10-24 00:00:56   Power_Pulse_CounterDayLast 91.186
       2016-10-17 18:16:01   Power_Pulse_CounterMeter1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterMeterLast 0.013
       2016-10-17 18:16:01   Power_Pulse_CounterMonth1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterMonthLast 0.013
       2016-10-17 18:16:01   Power_Pulse_CounterYear1st 0.0266666
       2016-10-17 18:16:01   Power_Pulse_CounterYearLast 0.013
       2016-10-24 00:00:56   Power_Pulse_EnergyCostDayLast 3.317
       2016-10-24 20:10:57   Power_Pulse_EnergyCostMeter 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyCostMonth 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyCostYear 18.277
       2016-10-24 20:10:57   Power_Pulse_EnergyDay 13.360
       2016-10-24 00:00:56   Power_Pulse_EnergyDayLast 18.973
       2016-10-24 20:10:57   Power_Pulse_EnergyMeter 104.533
       2016-10-24 20:10:57   Power_Pulse_EnergyMonth 104.533
       2016-10-24 20:10:57   Power_Pulse_EnergyYear 104.533
       2016-10-24 20:10:57   Power_Pulse_FinanceReserve 140.990
       2016-10-24 20:10:57   Power_Pulse_PowerCurrent 50400.000
       2016-10-24 20:10:57   Power_Pulse_PowerDayAver 15817.762
       2016-10-24 00:00:56   Power_Pulse_PowerDayCount 0
       2016-10-24 00:24:19   Power_Pulse_PowerDayMax 50400.000
       2016-10-24 00:00:56   Power_Pulse_PowerDayMin 0
       2016-10-24 00:00:56   Power_Pulse_PowerDaySum 0
   System:
     SiPrefixPowerFactor 1
Attributes:
   BasicPricePerAnnum 134.20
   Currency   €
   ElectricityCounterOffset 0
   ElectricityKwhPerCounts 0.0133333
   ElectricityPricePerKWh 0.174840
   MonthOfAnnualReading 7
   MonthlyPayment 51
   ReadingDestination CalculatorDevice
   SiPrefixPower W
   group      Energy
   room       Haus