neues Modul 98_powerMap

Begonnen von igami, 19 Dezember 2016, 05:36:36

Vorheriges Thema - Nächstes Thema

igami

powerMap wurde mit Loredo als Maintainer ofiziell in fhem eingechecked. Die Doku ist in der commandref zu finden.
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

jnewton957

Hallo,

hört sich gut an und ich würde das gerne verwenden.

Kannst du bitte mal ein komplettes Beispiel der CFG insbesodnere für das Attribut Powermap anhängen.
Wie muss dieses gefüllt werden, damit dein Modul das weiter verarbeiten kann.

Danke für die Infos

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

igami

#2
Zitat von: jnewton957 am 19 Dezember 2016, 16:29:46
Kannst du bitte mal ein komplettes Beispiel der CFG insbesodnere für das Attribut Powermap anhängen.
Wie muss dieses gefüllt werden, damit dein Modul das weiter verarbeiten kann.
steht doch in der commandref ;)

hier die Raw definition von einer HUE white
Edit: habe noch "state.on" hinzugefügt, da beim einschalten pct nur aktualisiert wird, wenn es vorher nicht 100 war.

defmod HUEDevice2 HUEDevice 2  IODev=HUEBridge
attr HUEDevice2 IODev HUEBridge
attr HUEDevice2 alias Arbeitszimmer: Deckenlampe Leuchtmittel 1
attr HUEDevice2 color-icons 2
attr HUEDevice2 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr HUEDevice2 event-on-change-reading energy,power,state
attr HUEDevice2 event-on-update-reading pct
attr HUEDevice2 group Beleuchtung
attr HUEDevice2 icon light_ceiling_light
attr HUEDevice2 model LWB006
attr HUEDevice2 powerMap "state.unreachable" => 0,\
"pct.0" => 0.4,\
"pct.10" => 1.2,\
"pct.20" => 1.7,\
"pct.30" => 1.9,\
"pct.40" => 2.3,\
"pct.50" => 2.7,\
"pct.60" => 3.4,\
"pct.70" => 4.7,\
"pct.80" => 5.9,\
"pct.90" => 7.5,\
"pct.100" => 9.2,\
"state.on" => 9.2
attr HUEDevice2 room Arbeitszimmer
attr HUEDevice2 subType dimmer
attr HUEDevice2 webCmd pct


Und hier noch die von meinem Modem

defmod modem dummy
attr modem alias Wohnzimmer: Modem
attr modem devStateIcon off:ios-off:on .*:ios-on-blue:off
attr modem group Unterschrank
attr modem icon it_router
attr modem powerMap "state.on" => 5.7,\
"state.off" => 0
attr modem room Wohnzimmer
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

igami

Es ist noch ein grober Fehler in dem Modul, werde heute Abend mal überlegen wie ich den Beheben kann.
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

igami

Neue Version im ersten Beitrag.
- energy wird nun korrekt berechnet und aktualisiert
- Logging hinzugefügt

ToDo:
Unit.pm verwenden
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

igami

Besteht der Bedarf, dass nur ein energy Reading berechnet wird? Ich selbst habe da keinen Bedarf, kann mir aber vorstellen, dass es  Sensoren gibt die nur Leistung (power) messen, jedoch keinen Zähler für den Verbrauch haben.
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

dferch

Hi,

erstmal Danke für das Modul. Bei mir funktioniert die neuste Version nicht (161220). Ich erhalte folgende Fehlermeldung:

Too many arguments for main::energy_energy at ./FHEM/98_energy.pm line 163, near "$power)"

Und ich verstehe die Definition der Funktion energy_energy nicht so ganz. Das steht:

sub energy_energy($$;$);

Müsste das nicht so aussehen:

sub energy_energy($$$);

Viele Grüße,
David

igami

Hallo David,

hast du die Meldung auch nach einem Neustart von fhem? Das "Problem" ist, dass die alten subs noch im Speicher sind. Die alte sub energy_energy hat nur zwei Argumente zugelassen.

Zitat von: dferch am 22 Dezember 2016, 17:59:23
Und ich verstehe die Definition der Funktion energy_energy nicht so ganz. Das steht:
Argumente nach einem Semikolon sind optional. Die sub wird beim ändern des power Readings mit 3 Argumenten aufgerufen, bei einem zyklischen Update aber nur mit 2 Argumenten.
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

dferch

Hi igami,

Dann versuche ich Morgen mal einen Restart von FHEM.
Und danke für die Erläuterung mit dem Semikolon - dessen Funktion kannte ich so noch nicht.

VG,
David


Gesendet von iPad mit Tapatalk

igami

Zitat von: dferch am 22 Dezember 2016, 19:52:26
Dann versuche ich Morgen mal einen Restart von FHEM.
Auf die Rückmeldung freue ich mich schon :) Von allen anderen die das Modul bisher getestet haben natürlich auch  ;)

Bin momentan noch dabei ein ElectricityCalculator device passend für mehrere Zähler zu konfigurieren.
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

Schön. Scheint zu funktionieren. Die Einheiten sind bei power wohl W und bei energy Wh oder? Ich werde mich morgen auch mal daran machen das in mein ElectricityCalculator einzubauen. Damit ist meine alte Lösung per EMONITOR dann wohl hinfällig. Den Modulnamen "energy" finde ich etwas vermessen generalisierend. Und es geht nicht nur um energy, sondern auch um power und es geht um monitoring. Für "energy" überlege ich mir gerade etwas in Richtung Carbon-Footprint, also CO2-Gesamtbilanz, also Stromverbrauch und Heizungsenergie und Mobilitätsenergie (Auto/Bahn/Flugreisen) zu erfassen und in Tonnen CO2 auszudrücken. Stromverbrauch geht einfach, bei Heizenergie braucht man noch Faktoren wie Energiegehalt des Erdgases oder Heizöls, CO2 für Flugreisen kann man eventuell aus einem Portal der Fluggesellschaft auslesen, zumindest wird es auf der Buchung immer mit angegeben. Dann kann man den persönlichen Energieverbrauch durch Strom, Heizung, Reisen in Relation setzen.
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, ...

igami

Zitat von: hartenthaler am 23 Dezember 2016, 00:01:00
Schön. Scheint zu funktionieren. Die Einheiten sind bei power wohl W und bei energy Wh oder?
siehe commandref:

  • energy
    Ein Zähler für die bisher bezogene Energie in Wh.
  • power
    Die aktuelle Leistungsaufnahme des Gerätes in W.

Zitat von: hartenthaler am 23 Dezember 2016, 00:01:00
Ich werde mich morgen auch mal daran machen das in mein ElectricityCalculator einzubauen. Damit ist meine alte Lösung per EMONITOR dann wohl hinfällig.
Da bin ich gespannt, ich komme da momentan nicht auf einen grünen Zweig. ElectricityCalculator überforfdert mich noch ein bisschen :D

Zitat von: hartenthaler am 23 Dezember 2016, 00:01:00
Den Modulnamen "energy" finde ich etwas vermessen generalisierend. Und es geht nicht nur um energy, sondern auch um power und es geht um monitoring.
Für Vorschläge bin ich offen. Wie wäre es mit powerMap?

Zitat von: hartenthaler am 23 Dezember 2016, 00:01:00
Für "energy" überlege ich mir gerade etwas in Richtung Carbon-Footprint, also CO2-Gesamtbilanz, also Stromverbrauch und Heizungsenergie und Mobilitätsenergie (Auto/Bahn/Flugreisen) zu erfassen und in Tonnen CO2 auszudrücken. Stromverbrauch geht einfach, bei Heizenergie braucht man noch Faktoren wie Energiegehalt des Erdgases oder Heizöls, CO2 für Flugreisen kann man eventuell aus einem Portal der Fluggesellschaft auslesen, zumindest wird es auf der Buchung immer mit angegeben. Dann kann man den persönlichen Energieverbrauch durch Strom, Heizung, Reisen in Relation setzen.
Das hört sich kompliziert an. Ich wünsche dir viel Erfolg bei der Umsetzung und warte gespannt :)
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

Zitat von: igami am 23 Dezember 2016, 05:13:34
Da bin ich gespannt, ich komme da momentan nicht auf einen grünen Zweig.

Hier meine Definition des zu meinen HUE-Lampen gehörigen ElectricityCalculator

defmod Energie.HUE_Lampen ElectricityCalculator HUE.*:energy.*
attr Energie.HUE_Lampen BasicPricePerAnnum 0
attr Energie.HUE_Lampen Currency €;
attr Energie.HUE_Lampen ElectricityCounterOffset 0
attr Energie.HUE_Lampen ElectricityKwhPerCounts 0.001
attr Energie.HUE_Lampen ElectricityPricePerKWh 0.2567
attr Energie.HUE_Lampen MonthOfAnnualReading 5
attr Energie.HUE_Lampen MonthlyPayment 0
attr Energie.HUE_Lampen ReadingDestination CalculatorDevice
attr Energie.HUE_Lampen SiPrefixPower W
attr Energie.HUE_Lampen group Kosten_Verbrauch
attr Energie.HUE_Lampen room Energie
attr Energie.HUE_Lampen stateFormat {sprintf("Heutige Kosten: 1: %.2f €, 2: %.2f €, 3: %.2f €, 4: %.2f €, 5: %.2f €, 6: %.2f €, 7: %.2f €, 8: %.2f €, 10: %.2f €, 11: %.2f €, 12: %.2f €",\
ReadingsVal("Energie.HUE_Lampen","HUEDevice1_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice2_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice3_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice4_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice5_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice6_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice7_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice8_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice10_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice11_energy_EnergyCostDay",""),\
ReadingsVal("Energie.HUE_Lampen","HUEDevice12_energy_EnergyCostDay","")\
)}


Und hier eine passende readingsGroup zur Anzeige als ersten Wurf

defmod rg_Energie.HUE_Lampen readingsGroup <%measure_power>,<Zählerstand>,<aktuelle Leistung>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr> \
Energie.HUE_Lampen:@2,<#1>,(.*)_CounterCurrent,#1_PowerCurrent,#1_EnergyDay,#1_EnergyCostDay,#1_EnergyDayLast,#1_EnergyCostDayLast,#1_EnergyCostMonth,#1_EnergyCostMeter
attr rg_Energie.HUE_Lampen group Kosten_Verbrauch
attr rg_Energie.HUE_Lampen nameStyle style="color:blue"
attr rg_Energie.HUE_Lampen nonames 1
attr rg_Energie.HUE_Lampen room Energie,Preis
attr rg_Energie.HUE_Lampen sortColumn 5
attr rg_Energie.HUE_Lampen valueFormat {\
if    ($READING =~ "_CounterCurrent")    {return "%09d";;}\
elsif ($READING =~ "_PowerCurrent")      {return "%.0f W";;}\
elsif ($READING =~ "_EnergyDay")         {return "%.3f kWh";;}\
elsif ($READING =~ "_EnergyCostDay")     {return "%.2f €";;}\
elsif ($READING =~ "_EnergyDayLast")     {return "%.3f kWh";;}\
elsif ($READING =~ "_EnergyCostDayLast") {return "%.2f €";;}\
elsif ($READING =~ "_EnergyCostMonth")   {return "%.2f €";;}\
elsif ($READING =~ "_EnergyCostMeter")   {return "%.2f €";;}\
}
attr rg_Energie.HUE_Lampen valueStyle { if($READING =~ "_PowerCurrent" && $VALUE >= 0 && $VALUE <= 5){'style="color:green;;text-align:right"'}\
elsif( $READING =~ "_PowerCurrent" && $VALUE > 5 && $VALUE < 10){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_PowerCurrent" && $VALUE >= 10){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE <= 0.05){'style="color:green;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE > 0,05 && $VALUE < 0.1 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyDay" && $VALUE >= 0.1){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE <= 0.015){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE > 0.015 && $VALUE < 0.03 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostDay" && $VALUE >= 0.03){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE <= 0.3){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE > 0.3 && $VALUE < 0.06){'style="color:orange;;text-align:right"' }\
elsif( $READING =~ "_EnergyCostMonth" && $VALUE >= 0.06){'style="color:red;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE <= 3){'style="color:lightgreen;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE > 3 && $VALUE < 6 ){'style="color:orange;;text-align:right"'}\
elsif( $READING =~ "_EnergyCostMeter" && $VALUE >= 6){'style="color:red;;text-align:right"'}\
else{'style="color:grey;;text-align:right"'}\
}


Was mir aber noch nicht gefällt: es sind derzeit etliche HUE-Lampen an, aber nur bei einer wird etwas aufsummiert. Woran es liegt, muss ich noch untersuchen. Aber zumindest die Struktur steht schon mal.

Zitat
Für Vorschläge bin ich offen. Wie wäre es mit powerMap?
Ja. PowerMon oder EnergyMonitor fände ich auch ok.
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, ...

igami

Zitat von: hartenthaler am 23 Dezember 2016, 21:22:32
Was mir aber noch nicht gefällt: es sind derzeit etliche HUE-Lampen an, aber nur bei einer wird etwas aufsummiert. Woran es liegt, muss ich noch untersuchen. Aber zumindest die Struktur steht schon mal.
Wie sieht es denn mit event-on-change-reading und event-on-update-reading bei den HUE Leuchten aus? Desweiteren habe ich bei mir state.on noch in das powerMap attribut hinzugefügt.
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

igami

Zitat von: hartenthaler am 23 Dezember 2016, 21:22:32
Was mir aber noch nicht gefällt: es sind derzeit etliche HUE-Lampen an, aber nur bei einer wird etwas aufsummiert. Woran es liegt, muss ich noch untersuchen. Aber zumindest die Struktur steht schon mal.
Das liegt einfach an dem geringen Verbrauch. Bei mir stehen die Zählerstände auch noch auf 0, da sie noch nicht 1 kWh verbraucht haben :D

Anbei auch mal meine readingsGroup: alias wird ausgewertet, power wird aus dem device gelesen und nicht die Berechnung aus ElectricyCalculator benutzt

defmod ElectricityCalculator_readingsGroup readingsGroup <%measure_power>,<Zählerstand>,<Leistung>,<Heute>,<Gestern>,<Monat>,<Jahr>\
ElectricityCalculator:@2,!alias@#1,(.*)_energy_CounterCurrent,power@#1,#1_energy_EnergyDay,#1_energy_EnergyCostDay,#1_energy_EnergyDayLast,#1_energy_EnergyCostDayLast,#1_energy_EnergyMonth,#1_energy_EnergyCostMonth,#1_energy_EnergyYear,#1_energy_EnergyCostYear
attr ElectricityCalculator_readingsGroup nameStyle {return 'style="font-weight: bold;; color: #025995"' if($READING =~ /Heute|Gestern|Monat|Jahr/);;\
return 'style="text-align: left;; font-weight: bold;; color: #025995"';;\
}
attr ElectricityCalculator_readingsGroup noheading 1
attr ElectricityCalculator_readingsGroup nonames 1
attr ElectricityCalculator_readingsGroup room Messstation
attr ElectricityCalculator_readingsGroup style style="text-align: center"
attr ElectricityCalculator_readingsGroup valueColumn {return 2 if($READING =~ "_CounterCurrent");;\
}
attr ElectricityCalculator_readingsGroup valueColumns {"Heute" => "colspan = 2",\
"Gestern" => "colspan = 2",\
"Monat" => "colspan = 2",\
"Jahr" => "colspan = 2"\
}
attr ElectricityCalculator_readingsGroup valueFormat {return(AttrVal("$DEVICE", "alias", "$DEVICE")) if($READING =~ /alias/);;\
return "%09d" if($READING =~ /_CounterCurrent/);;\
return "%.1f W" if($READING =~ "power");;\
return "%.3f kWh" if($READING =~ "_EnergyDay");;\
return "%.2f €" if($READING =~ "_EnergyCostDay");;\
return "%.3f kWh" if($READING =~ "_EnergyDayLast");;\
return "%.2f €" if($READING =~ "_EnergyCostDayLast");;\
return "%.3f kWh" if($READING =~ "_EnergyMonth");;\
return "%.2f €" if($READING =~ "_EnergyCostMonth");;\
return "%.3f kWh" if($READING =~ "_EnergyYear");;\
return "%.2f €" if($READING =~ "_EnergyCostYear");;\
}
attr ElectricityCalculator_readingsGroup valueStyle {return 'style="text-align: left"' if($READING =~ /alias/);;\
return 'style="text-align: center"' if($READING =~ /_CounterCurrent/);;\
return 'style="text-align: right"';;\
}
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