Hallo zusammen,
ich stelle gerade mal wieder einiges in meinem FHEM um und zusätzlich integriere ich neue Sachen. Daher zur Zeit auf mehreren "Baustellen" unterwegs ;)
Jedenfalls habe ich mir mehrer INNR SP120 Zwischenstecker besorgt und diese erfolgreich in FHEM integriert und Sensoren angelegt.
Nur bin ich jetzt etwas wirr im Kopf und komme nicht weiter :o ::)
Habe folgende Werte:
Power in W
Voltage in V
Current in 0.1A
Und jetzt stehe ich aufm "Schlauch" ...
Wie kann ich aus der Poewerangabe meinen aktuellen Verbrauch berechnen ?
Also Tagesverbrauch / Wochenverbrauch / Monatsverbrauch ?
Diesen hätte ich gerne als Reading, um ihn weiter zu verarbeiten zur Berechnung der Kosten.
Am Modul Statistics habe ich mich schon bei einer anderen Sache versucht, komme damit aber nicht klar. Verstehe es einfach nicht :(
Ich hoffe ihr könnt weiterhelfen ?
Grüße & Danke
Totti
Ok, ich unterstelle mal (....), dass du die über Phoscon eingebunden hast.
Dann gibt es einen weiteren Sensor (meiner hat eine Nummer weniger) des Typs ZHAConsumption. Vermutlich brauchst du eher den wie den anderen...
Leider bin ich mir nicht sicher, welche Einheit der eigentlich benutzt, ich tippe auf Watt-Stunden. Damit würdest du vermutlich eine Umrechnung brauchen (ähnlich den shelly via MQTT2_DEVICE, vgl. shelly1_w_energy_meassuring_washer_example), nur dass das via userReadings ginge und nicht auf direktem Weg wie bei MQTT2_DEVICE.
Den eigentlichen Zähler solltest du dann mit einem userReadings iVm. "monotonic" realisieren können, der dann mit einer "Mitternachtsroutine" jeweils "umgepackt" wird.
Ohne mich bisher in diese Untiefen selbst intensiv eingearbeitet zu haben, dürfte aber entweder statistics einfacher sein oder die schlichte Auswertung von logfiles. Auch dort ist es afaik möglich, Änderungen zu visualisieren bzw. Differenzwerte abzurufen, um diese weiterzuverarbeiten...
@Beta-User
Ja den Sensor habe ich auch und somit auch den Wert ZHAConsumption
Der Wert wird in Wh
Das Problem was ich hier habe ist, der Wert wird bei einem Stromausfall oder ausstecken wohl wieder auf null gesetzt.
Dann würde ja alles wieder durcheinander kommen beim berechnen, oder ?
Irgendwie bekomme ich ja die meisten Sachen hin und schaffe es mich da irgendwie reinzudenken, bei diesem Stromkosten Berechnung etc und dem Modul Statistics fehlt mir irgendwie nas "AhHa" Erlebnis.
Mal sehen :( ;)
Grüße & Danke
Totti
Zitat von: TottiToad am 04 Februar 2020, 16:55:47
Der Wert wird in Wh
Ergo muß man rechnen...
ZitatDas Problem was ich hier habe ist, der Wert wird bei einem Stromausfall oder ausstecken wohl wieder auf null gesetzt.
Genau dafür gibt's monotonic....
Versuch's mal so, vielleicht wird's dann klarer, wie es mit userReadings gehen sollte:
attr <device> userReadings ConsumptionTotal:consumption.* monotonic { ReadingsVal("<device>","consumption",0)/60/1000 }
Danke !
Werd mir das ganze mal anschauen ! Finde zu monotonic nicht wirklich was, also was das genau ist und macht ?!
Habe jedenfalls mal das UserReading angelegt und schaue jetzt mal wann es sich wie gefüllt. Zur Zeit ja noch mit dem Wert 0
Wenn es mir jetzt jeden Tag den Tagesverbrauch anzeigen würde, wäre ich ja schonmal ein Stück weiter.
Was meintest Du mit der "Mitternachtsroutine" ? ein at welches was dann starte ?
Grüße & Danke
Totti
Moin, zu monotonic steht was in dem wichtigsten Teil der Doku, der commandref...
Die Berechnung sollte aber eher so sein (das deckt sich gefühlt besser mit meinen bisherigen stateFormat-Angaben):
attr <device> userReadings Consumption_Total:consumption.* monotonic { ReadingsVal($name,"consumption",0)/1000 }
Mit "Mitternachtsroutine" ist tatsächlich ein at gemeint, das um 23:59 Uhr dann
- Den Tageswert auf den Vortag überträgt
- Den Tageswert auf den Wochenwert addiert
- Den Tageswert löscht
- Am Tag 6 den Wochenwert auf die Vorwoche...
- ...
Aber nochmal: Vermutlich kann man das auch durch Auswertung der Logfiles/DBLog-Einträge viel dynamischer und einfacher haben, wenn man mal einen sinnvollen "monotonic"-Wert hat...
Stichwort wäre evtl. auch LogProxy (bisher keine eigene Erfahrung, bitte selbst einlesen/austesten, feedback ist willkommen).
Moin,
ich benutze dafür den ElectricityCalculator. Funktioniert wunderbar.
Beispiel einer SP120:
defmod Terrarium_Verbrauch HUEDevice sensor 33 IODev=deCONZ
attr Terrarium_Verbrauch DbLogExclude .*
attr Terrarium_Verbrauch DbLogInclude consumption,kWh
attr Terrarium_Verbrauch IODev deCONZ
attr Terrarium_Verbrauch group Steckdose4
attr Terrarium_Verbrauch model SP 120
attr Terrarium_Verbrauch room HUEDevice
attr Terrarium_Verbrauch sortby 2
attr Terrarium_Verbrauch stateFormat {sprintf "%.0f Wh", ReadingsVal($name, "consumption", 0)}
attr Terrarium_Verbrauch subType switch
attr Terrarium_Verbrauch userReadings kWh {sprintf("%.1f",ReadingsVal($name,"consumption","???")/1000)}, Kosten { ReadingsVal($name,"consumption",0)/1000*0.25 . " €"}
defmod Terrarium_Power HUEDevice sensor 34 IODev=deCONZ
attr Terrarium_Power DbLogExclude .*
attr Terrarium_Power DbLogInclude current,power
attr Terrarium_Power IODev deCONZ
attr Terrarium_Power group Steckdose4
attr Terrarium_Power room HUEDevice
attr Terrarium_Power sortby 3
attr Terrarium_Power stateFormat current mA <br>power W
defmod Plug.Calculator.Terrarium_Verbrauch ElectricityCalculator Terrarium_Verbrauch:consumption.*
attr Plug.Calculator.Terrarium_Verbrauch BasicPricePerAnnum 0
attr Plug.Calculator.Terrarium_Verbrauch Currency €
attr Plug.Calculator.Terrarium_Verbrauch DbLogExclude .*
attr Plug.Calculator.Terrarium_Verbrauch ElectricityCounterOffset 0
attr Plug.Calculator.Terrarium_Verbrauch ElectricityKwhPerCounts 0.001
attr Plug.Calculator.Terrarium_Verbrauch ElectricityPricePerKWh 0.2569
attr Plug.Calculator.Terrarium_Verbrauch MonthOfAnnualReading 1
attr Plug.Calculator.Terrarium_Verbrauch MonthlyPayment 0
attr Plug.Calculator.Terrarium_Verbrauch ReadingDestination CounterDevice
attr Plug.Calculator.Terrarium_Verbrauch SiPrefixPower W
attr Plug.Calculator.Terrarium_Verbrauch room Energie
Danke für die Info.
Was mich zum ElectricityCalculator interessieren würde: Da gab es afaik früher mal Probleme, wenn man mehrere dieser Devices parallel im Einsatz hatte. Liege ich da falsch, bzw. ist das überholt?
Zu userReadings allgemein: man sollte m.E. immer einen Trigger definieren, selbst wenn es - wie hier - so ist, dass es nur ein Reading gibt, das sich ändert.
Zu guter Letzt: In einem Beispiel-template für den shelly-pm hatte ich mal vorgeschlagen, den Strompreis irgendwo zentral zu hinterlegen, z.B. (ausnahmsweise...!) in einem Dummy und nicht fest in alle einzelnen Devices zu coden. Das ergäbe in etwa folgendes, wobei man dann Kosten auch in stateFormat einfügen könnte oder gleich dort ermitteln, ohne eigenen userReadings-Eintrag (in dem Fall ist es egal, aber wenn es viele Readings gäbe, wäre userReadings (mit Trigger!) wohl effizienter):
attr Terrarium_Verbrauch userReadings kWh:consumption.* monotonic {sprintf("%.1f",ReadingsVal($name,"consumption",0)/1000)}, Kosten:consumption.* { ReadingsVal($name,"kWh",0)*ReadingsNum("kWh_Price","state",0.30) . " €"}
Zitat von: Beta-User am 05 Februar 2020, 11:18:58
Was mich zum ElectricityCalculator interessieren würde: Da gab es afaik früher mal Probleme, wenn man mehrere dieser Devices parallel im Einsatz hatte. Liege ich da falsch, bzw. ist das überholt?
Ich hatte das damals gemeldet. Es schien daran gelegen zu haben, dass ich ein vorhandenes Device kopiert habe.
Neulich habe ich noch ein weiteres Device vollständig neu angelegt und es gab keine Probleme.
Zitat von: Beta-User am 05 Februar 2020, 11:18:58
Danke für die Info.
Was mich zum ElectricityCalculator interessieren würde: Da gab es afaik früher mal Probleme, wenn man mehrere dieser Devices parallel im Einsatz hatte. Liege ich da falsch, bzw. ist das überholt?
Ich habe keine Probleme, ich habe damit 6 SP120 im Einsatz.
Zitat von: FunkOdyssey am 05 Februar 2020, 12:09:34
Ich hatte das damals gemeldet. Es schien daran gelegen zu haben, dass ich ein vorhandenes Device kopiert habe.
Neulich habe ich noch ein weiteres Device vollständig neu angelegt und es gab keine Probleme.
Danke für die Rückmeldung, dann hatte ich das "wenigstens" nicht ohne Anlaß im Hinterkopf abgespeichert. Solche Effekte sind sehr irritierend, ich kenne das vom Kopieren von anderen Device-Typen (MQTT2_DEVICE (?)) und mache das Kopieren seither indirekt über den RAW-Editor.
Zitat von: Starsurfer am 05 Februar 2020, 14:18:49Ich habe keine Probleme, ich habe damit 6 SP120 im Einsatz.
Auch hier ein Danke für die Rückmeldung und den Beispielcode.
Was mir an der ElectricityCalculator auf den ersten Blick nicht so gut gefällt, ist die Vorgehensweise über je ein eigenes Device, das "parallel" zum eigentlichen Meßgerät läuft und z.B. den Nachteil hat, dass man jeweils separat den Strompreis angeben muß.
Da kommt mir "statistics" irgendwie vom Aufsatz her mehr entgegen. Wenn ich das richtig interpretiere, wird da einmalig ein weiteres Device definiert, das dann einfach die vorhandenen/festgelegten Devices "aufbohrt" (also beliebig viele andere) und die Readings finden sich dann auch bei dem jeweiligen "Quell"-Device wieder, und nicht irgendwo anders.
Bei aktuell zwei weniger wichtigen innr schlägt das nicht so zu Buche, aber dann packe ich da auch mal den Gaszähler ran, der bisher nur vor sich hin blubbelt (schon klar, dass es da auch einen eigenen Calculator gibt).
(Was die Finanzdaten angeht, die die Calculator-Module auch bieten, sehe ich den Mehrwert für mich im Moment nicht; mir genügen voraussichtlich die reinen Zahlenwerte).
@Totti, falls der kleine Exkurs gestört haben sollte: Sorry...
Zitat von: Beta-User am 05 Februar 2020, 10:25:42
Moin, zu monotonic steht was in dem wichtigsten Teil der Doku, der commandref...
Eigentlich schaue ich immer direkt im Wiki und commandref nach ... aber Monotonic find ich nix :-\
Zitat von: Starsurfer am 05 Februar 2020, 10:54:48
Moin,
ich benutze dafür den ElectricityCalculator. Funktioniert wunderbar.
Das schaue ich mir mal an ! Danke schon mal für den Beispielcode
Ich ging davon aus das mit dem Modul nur Counter funktionieren. Hatte mal das Gaszählermodul davon genutzt.
Ich werde mich mal etwas intensiver mit dem Modul Statistics auseinander setzen, mit monotonic und dem Calculator ...
Ich weiß auch nicht warum mir ich da so ein paar Sachen einfach nicht in meinem Kopf bekomme und verstehe ::)
Dank euch allen & Grüße
Totti
Zitat von: TottiToad am 06 Februar 2020, 11:10:48
Eigentlich schaue ich immer direkt im Wiki und commandref nach ... aber Monotonic find ich nix :-\
Gehst du nach https://fhem.de/commandref_modular.html.
Ctrl+f für Suche, dann "monot"=> schon bist du da:
Zitat
monotonic: if the difference between the current and the previously evaluated value is positive the reading is incremented by this difference. this allows to derive a monotonic growing counter from an original counter even if the original will be rest by a power loss
(soll wohl reset statt rest heißen), in der deutschen Fassung (https://fhem.de/commandref_modular_DE.html) ließt sich das so:
Zitat
monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.
Hi,
Zitat von: Beta-User am 06 Februar 2020, 11:24:20
Gehst du nach https://fhem.de/commandref_modular.html.
Ctrl+f für Suche, dann "monot"=> schon bist du da:(soll wohl reset statt rest heißen), in der deutschen Fassung (https://fhem.de/commandref_modular_DE.html) ließt sich das so:
Riesen Dank ! Mal wieder viel dazugelernt ;) ... Ctrl+f zum Suchen hatte ich nicht aufm Schirm und hätte ich schon oft gebrauchen können !
Und die Funktion monotonic ist ja genial ... und die muss ich definitiv bei bei dem SP120 einbauen, da er ja der Wert nach Stromauswahl verlieren würde.
Zitat von: Beta-User am 05 Februar 2020, 14:54:16
@Totti, falls der kleine Exkurs gestört haben sollte: Sorry...
Ne alles Super, so verstehe ich langsam ja auch immer mehr ... bin über jeden Exkurs dankbar !
Ich habe jetzt mal das Modul ElectricityCalculator angelegt und ausprobiert.
Finde es so schon echt genial und geht schon absolut in die Richtung die ich gerne erreichen will !
Und mich würde es nicht stören, für jede Steckdose eine Modul ElectricityCalculator anzulegen, werden ja nur ca 6 Stück ;)
Muss jetzt mal schauen das ich noch das von Beta-User Einbaue
Zitat von: Beta-User am 05 Februar 2020, 11:18:58
attr Terrarium_Verbrauch userReadings kWh:consumption.* monotonic {sprintf("%.1f",ReadingsVal($name,"consumption",0)/1000)}, Kosten:consumption.* { ReadingsVal($name,"kWh",0)*ReadingsNum("kWh_Price","state",0.30) . " €"}
Inwiefern muss dieses getriggert werden ?
Und jetzt nochmal für doofe :P ?
Mit dem ElectricityCalculator so wie ihn @Starsurfer angelegt hat, bekomme ich die bisherigen Gesamtkosten, oder ? Und das fortlaufend über die Jahre hinweg ?
Wie daraus jetzt Tages / Wochen / Monats / Jahres Werte raus generieren ?
Grüße & Danke weiterhin
Totti
Zitat von: TottiToad am 06 Februar 2020, 12:10:40
Und die Funktion monotonic ist ja genial ...
Da ist nur ein kleines Beispiel für das, was so an "genialen Kleinigkeiten" im "Rahmen" der commandref steht. Einen oder mehrere lange Blicke in die Modular-Variante der commandref zu werfen, ist super aufschlußreich zum Verständnis vieler Zusammenhänge, finde ich jedenfalls.
ZitatInwiefern muss dieses getriggert werden ?
Etwas oberhalb der "monotonic"-Beschreibung findest du:
userReadings
ZitatA comma-separated list of definitions of user-defined readings. Each definition has the form:
- <reading>[:<trigger>] [<modifier>] { <perl code> }
[...] If <trigger> is given, then all processing for this specific user reading is only done if one of the just updated "reading: value" combinations matches <trigger>, which is treated as a regexp.
In meinem Code ist also "consumption.*" als Trigger festgelegt, was bedeutet, dass das userReading "kWh" NUR DANN BERECHNET wird, wenn das Reading consumption (an diesem Device) aktualisiert/geändert wird. Das ist - wie bereits erläutert - vor allem dann wichtig, wenn du ein Device mit sehr vielen Readings hast, die auch noch häufig aktualisiert werden. Leider ist es nach wie vor so, dass man fast nur userReadings -Beispiele/-Empfehlungen zu sehen bekommt, die keinen Trigger definiert haben. MMn. ist trigger ein Muß, auch wenn das formal nur eine Option ist...
Was den Rest angeht, würde ich mal drauf tippen, dass das mit den Werteabgrenzungen nach Zeit ziemlich automatisch geht, ganz egal, ob du statistics oder eine der Calculator-Variante nimmst.
Aber bei geplanten 6 Zählern würde ich tendenziell auf statistics setzen...
Kannst ja auch einfach mal beides ausprobieren und dann berichten ;) (das mit der Syntax wird schon werden, aber commandref solltest du schon lesen (zu statistics gibt es auch einen Wiki-Artikel in D).)
Zitat von: TottiToad am 06 Februar 2020, 12:10:40
Und jetzt nochmal für doofe :P ?
Mit dem ElectricityCalculator so wie ihn @Starsurfer angelegt hat, bekomme ich die bisherigen Gesamtkosten, oder ? Und das fortlaufend über die Jahre hinweg ?
Wie daraus jetzt Tages / Wochen / Monats / Jahres Werte raus generieren ?
Grüße & Danke weiterhin
Totti
Sieht bei mir so aus wie im angehängten Bild, ob man da irgendwie eine Übersicht über Jahre hinbekommt weiß ich nicht.
Zitat von: Starsurfer am 06 Februar 2020, 17:47:45
Sieht bei mir so aus wie im angehängten Bild, ob man da irgendwie eine Übersicht über Jahre hinbekommt weiß ich nicht.
Das sieht schon Super aus !
Im Prinzip will ich es so umsetzen wie Du bei Verrauch Steckdosen hast.
Darf ich Fragen wie du das konkret gemacht hast ?
Grüße
Totti
Hier mal die RAW Auszug, muss natürlich auf deine Steckdosen angepasst werden.
defmod r_Verbrauch.Steckdosen readingsGroup <%measure_power>,<Zählerstand>,<aktuelle Leistung>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr>,<€-Reserve> \
.*(Gefrierschrank_Verbrauch|GefrierschrankHinten_Verbrauch|Server_Verbrauch|Terrarium_Verbrauch|Terrarium2_Verbrauch|Kuehlschrank_Verbrauch|Steckdose_SaschaPC_Verbrauch|Heizung_Verbrauch):consumption_CounterCurrent,consumption_PowerCurrent,consumption_EnergyDay,consumption_EnergyCostDay,consumption_EnergyDayLast,consumption_EnergyCostDayLast,consumption_EnergyCostMonth,consumption_EnergyCostMeter,consumption_FinanceReserve
attr r_Verbrauch.Steckdosen DbLogExclude .*
attr r_Verbrauch.Steckdosen mapping %ALIAS
attr r_Verbrauch.Steckdosen nameStyle style="color:black"
attr r_Verbrauch.Steckdosen room Energie
attr r_Verbrauch.Steckdosen valueFormat {'consumption_CounterCurrent' =>"%09d",\
'consumption_PowerCurrent' =>"%.0f W",\
'consumption_EnergyDay'=> "%.1f kWh",\
'consumption_EnergyCostDay' => "%.2f €",\
'consumption_EnergyDayLast' => "%.1f kWh",\
'consumption_EnergyCostDayLast'=> "%.2f €",\
'consumption_EnergyCostMonth'=> "%.2f €",\
'consumption_EnergyCostMeter'=> "%.2f €",\
'consumption_FinanceReserve' => "%.2f €"\
}
attr r_Verbrauch.Steckdosen valueStyle {\
'consumption_CounterCurrent' => '{"style=\"color:#".substr(Color::pahColor(0,1000,3000,$VALUE,0),0,6)."\""}',\
'consumption_PowerCurrent' => '{"style=\"color:#".substr(Color::pahColor(0,6000,15000,$VALUE,1),0,6)."\""}',\
'consumption_EnergyDayLast' => '{"style=\"color:#".substr(Color::pahColor(0,15,20,$VALUE,3),0,6)."\""}',\
'consumption_EnergyDay' => '{"style=\"color:#".substr(Color::pahColor(0,15,20,$VALUE,0),0,6)."\""}',\
'consumption_EnergyCostDay' => '{"style=\"color:#".substr(Color::pahColor(0,2,5,$VALUE,0),0,6)."\""}',\
'consumption_EnergyCostDayLast' => '{"style=\"color:#".substr(Color::pahColor(0,2,5,$VALUE,0),0,6)."\""}',\
'consumption_EnergyCostMonth' => '{"style=\"color:#".substr(Color::pahColor(0,15,30,$VALUE,0),0,6)."\""}',\
'consumption_EnergyCostMeter' => '{"style=\"color:#".substr(Color::pahColor(0,90,150,$VALUE,0),0,6)."\""}',\
'consumption_FinanceReserve' => '{"style=\"color:#".substr(Color::pahColor(0,200,400,$VALUE,0),0,6)."\""}'\
}
Nur mal zum Vergleich...
Habe eben mal statistics definiert (die Namen der beiden innr enden mit _Verbrauch):
defmod Statistik statistics .*_Verbrauch
attr Statistik deltaReadings Consumption_Total
attr Statistik singularReadings .*:Consumption_Total:Delta:Day
Etwas warten oder "set Statistik doStatistics", schon hat man - ausgehend von dem bereits definierten userReading - Werte in den Devices, die man mitloggen kann, wie das aktuelle Tagesdelta...
Ebenfalls super-easy, finde ich...
Zitat von: Beta-User am 06 Februar 2020, 23:03:32
Nur mal zum Vergleich...
Habe eben mal statistics definiert (die Namen der beiden innr enden mit _Verbrauch):
defmod Statistik statistics .*_Verbrauch
attr Statistik deltaReadings Consumption_Total
attr Statistik singularReadings .*:Consumption_Total:Delta:Day
Etwas warten oder "set Statistik doStatistics", schon hat man - ausgehend von dem bereits definierten userReading - Werte in den Devices, die man mitloggen kann, wie das aktuelle Tagesdelta...
Ebenfalls super-easy, finde ich...
Dank Dir, habe es heute Nachmittag ähnlich eingerichtet (etwas komplizierte ;) ) und lasse es gerade parallel zum ElectricityCalculator Modul laufen.
So kann ich mal sehen wie ich was machen kann und wer wie wo was für Werte ausgibt.
Zitat von: Starsurfer am 06 Februar 2020, 21:03:46
Hier mal die RAW Auszug, muss natürlich auf deine Steckdosen angepasst werden.
Auch ein Riesen Dank an Dich !
Habs auch direkt mal umgesetzt
.
Was mir aufgefallen ist, das ich keine Werte im Reading consumption_PowerCurrent habe - also der Wert bleibt bei 0
Im Gegensatz erhalte ich consumption_PowerDayAver Werte - also den Mittelwert
Woran kann das liegen ? Bzw. der power Wert ist ja im anderen Sensor als Reading und nicht beim Sensor mit dem consumption und in dem die "neuen" Readings vom Modul auftauchen.
Verstehe nicht wirklich warum dürren nicht angezeigt wird, avg jedoch schon
Grüße & weiterhin Riesen Dank
Totti
P.S.: So langsam verstehe ich das Modul Statistics etwas besser ;)
Zitat von: TottiToad am 06 Februar 2020, 23:40:04
Was mir aufgefallen ist, das ich keine Werte im Reading consumption_PowerCurrent habe - also der Wert bleibt bei 0
Im Gegensatz erhalte ich consumption_PowerDayAver Werte - also den Mittelwert
Woran kann das liegen ? Bzw. der power Wert ist ja im anderen Sensor als Reading und nicht beim Sensor mit dem consumption und in dem die "neuen" Readings vom Modul auftauchen.
Verstehe nicht wirklich warum dürren nicht angezeigt wird, avg jedoch schon
Kein Problem, ich freue mich auch immer, wenn ich im Forum Beispiele aus der Praxis finde.
Das ist bei mir auch so, dort werden nur sporadisch mal Werte angezeigt. Ich habe mich bisher aber noch nicht weiter drum gekümmert, da ich mir das direkt bei den Steckdosen anzeigen lasse.
Zitat von: Starsurfer am 07 Februar 2020, 08:27:49
Das ist bei mir auch so, dort werden nur sporadisch mal Werte angezeigt. Ich habe mich bisher aber noch nicht weiter drum gekümmert, da ich mir das direkt bei den Steckdosen anzeigen lasse.
Ah Ok ! Dann scheint es eher ein grundsätzliches Problem zu sein.
Ich lasse es mir ja auch über die Steckdose anziehen, jedoch wäre bei einer Readinggroup dann schon super alles im Gesamtüberblick zu haben.
Grüße & Danke
Totti
Hi,
So denn ich habe mir jetzt was "gebastelt", ich denke man wird schnell sehen, das programmieren nicht ganz meins ist ;)
Wäre schön wenn ich dazu nen Feedback und Verbesserungsvorschläge oder Fragen bekomme
Ein Sensor Verbrauch (Consumption):
defmod Sensor_Server_Verbrauch HUEDevice sensor 2 IODev=deCONZ
attr Sensor_Server_Verbrauch DbLogExclude .*
attr Sensor_Server_Verbrauch DbLogInclude consumption,kWh,ConsumptionTotal
attr Sensor_Server_Verbrauch IODev deCONZ
attr Sensor_Server_Verbrauch group Steckdose1
attr Sensor_Server_Verbrauch model SP 120
attr Sensor_Server_Verbrauch room Energie
attr Sensor_Server_Verbrauch sortby 2
attr Sensor_Server_Verbrauch stateFormat {sprintf "%.0f Wh", ReadingsVal($name, "consumption", 0)}
attr Sensor_Server_Verbrauch subType switch
attr Sensor_Server_Verbrauch userReadings kWh:consumption.* monotonic {sprintf("%.1f",ReadingsVal($name,"consumption",0)/1000)}, Kosten_Gesamt:consumption.* { ReadingsVal($name,"kWh",0)*ReadingsNum("kWh_Price","state",0.25) . " €"}, ConsumptionTotal:consumption.* monotonic { ReadingsVal("Sensor_Server_Verbrauch","consumption",0)/1000 }, Kosten_Tag { ReadingsVal($name,"statConsumptionTotalDay",0)*0.25 . " €"}, Kosten_Monat { ReadingsVal($name,"statConsumptionTotalMonth",0)*0.25 . " €"}, Kosten_Jahr { ReadingsVal($name,"statConsumptionTotalYear",0)*0.25 . " €"}, Kosten_Gestern { ReadingsVal($name,"statConsumptionTotalDayLast",0)*0.25 . " €"}
Der Sensor mit Power:
defmod Sensor_Server_Power HUEDevice sensor 3 IODev=deCONZ
attr Sensor_Server_Power DbLogExclude .*
attr Sensor_Server_Power DbLogInclude current,power
attr Sensor_Server_Power IODev deCONZ
attr Sensor_Server_Power group Steckdose1
attr Sensor_Server_Power room Energie
attr Sensor_Server_Power sortby 3
attr Sensor_Server_Power stateFormat current mA <br>power W
Das Modul Statistics für die Steckdosen:
defmod VerbrauchStatistik statistics .*_Verbrauch.*
attr VerbrauchStatistik deltaReadings ConsumptionTotal
attr VerbrauchStatistik room Energie
attr VerbrauchStatistik singularReadings .*:ConsumptionTotal:Delta:(Hour|Day|Week|Month|Year)
Die dazugehörige Readingsgroup:
defmod Gruppe_Verbrauch_Steckdosen readingsGroup <aktuelle Leistung>,<Tagesverbrauch=>>,<Heute>,<Tagesverbrauch=>>,<Gestern>,<Monat>,<Jahr> \
(Sensor_TV_Verbrauch|Sensor_Server_Verbrauch|):power@{$DEVICE=~s/_Verbrauch/_Power/;;$DEVICE;;},statConsumptionTotalDay,Kosten_Tag,statConsumptionTotalDayLast,Kosten_Tag_Gestern,Kosten_Monat,Kosten_Jahr
attr Gruppe_Verbrauch_Steckdosen DbLogExclude .*
attr Gruppe_Verbrauch_Steckdosen mapping %ALIAS
attr Gruppe_Verbrauch_Steckdosen nameStyle style="color:black"
attr Gruppe_Verbrauch_Steckdosen room Energie
attr Gruppe_Verbrauch_Steckdosen valueFormat {'consumption_CounterCurrent' =>"%09d",\
'power' =>"%.0f W",\
'statConsumptionTotalDay'=> "%.1f kWh",\
'Kosten_Tag' => "%.2f €",\
'statConsumptionTotalDayLast' => "%.1f kWh",\
'Kosten_Tag_Gestern'=> "%.2f €",\
'Kosten_Monat'=> "%.2f €",\
'Kosten_Jahr'=> "%.2f €",\
}
attr Gruppe_Verbrauch_Steckdosen valueStyle {\
'power' => '{"style=\"color:#".substr(Color::pahColor(0,6000,15000,$VALUE,1),0,6)."\""}',\
'statConsumptionTotalDay' => '{"style=\"color:#".substr(Color::pahColor(0,15,20,$VALUE,3),0,6)."\""}',\
'Kosten_Tag' => '{"style=\"color:#".substr(Color::pahColor(0,15,20,$VALUE,0),0,6)."\""}',\
'statConsumptionTotalDayLast' => '{"style=\"color:#".substr(Color::pahColor(0,2,5,$VALUE,0),0,6)."\""}',\
'Kosten_Tag_Gestern' => '{"style=\"color:#".substr(Color::pahColor(0,2,5,$VALUE,0),0,6)."\""}',\
'Kosten_Monat' => '{"style=\"color:#".substr(Color::pahColor(0,15,30,$VALUE,0),0,6)."\""}',\
'Kosten_Jahr' => '{"style=\"color:#".substr(Color::pahColor(0,90,150,$VALUE,0),0,6)."\""}',\
}
Bezüglich dem Userreading beim Sensor habe ich ein paar Fragen:
- wie kann ich bei den kWh Preis irgendwie als Reading oder so übergeben ? Ich habe ja jetzt mehrmals jeweils den Preisangegeben, besser und übersichtlicher wäre ja wenn ich es irgendwoher übergebe.
- dann würde ich noch gerne wissen, ob es irgendwie möglichst ist userReadings in mehrere Zeilen zu definieren. Es ist jetzt alles in einer meeeega langen Zeile.
Wenn Ich nach dem Komma in den nächsten Absatz gehe bei der definition, funktioniert es nicht mehr ? (Ich hoffe ihr wisst wie und was ich meine !)
Wenn ich das mal alles habe, schaue ich mal wie ich das ganze in einen Plot bekomme
Hoffe ihr könnt auch hier weiterhelfen
Grüße & Danke
Totti
Auf die Schnelle:
Den Preis mußt du nur als "state" in ein Gerät (z.B. Dummy) bringen, der "kWh_Price" heißt, und ansonsten verstehe ich gewisse Doppelungen in dem userReadings nicht...
Warum du nicht bei den power-Geräten "event-on-..." verwendest, verstehe ich auch nicht, ebensowenig warum du da überhaupt was logst.
(Überhaupt: Warum die Kosten loggen? Verbauch kann man beeinflussen, Anzeige mit stateFormat machen, damit die Mitbewohner sehen, was passiert, aber loggen?)
MMn. ist weniger mehr...
Wenn Du die Userreading untereinander haben willst, schau dir mal stateFormat an.
Zitat von: Beta-User am 07 Februar 2020, 17:41:13
Auf die Schnelle:
Den Preis mußt du nur als "state" in ein Gerät (z.B. Dummy) bringen, der "kWh_Price" heißt, und ansonsten verstehe ich gewisse Doppelungen in dem userReadings nicht...
Warum du nicht bei den power-Geräten "event-on-..." verwendest, verstehe ich auch nicht, ebensowenig warum du da überhaupt was logst.
(Überhaupt: Warum die Kosten loggen? Verbauch kann man beeinflussen, Anzeige mit stateFormat machen, damit die Mitbewohner sehen, was passiert, aber loggen?)
MMn. ist weniger mehr...
Mit dem Preis probiere ich später mal aus, Danke !
Mit dem loggen gebe ich Dir vollkommen Recht, hab ich so auch nicht unbedingt am Ende vor. Zur Zeit logge ich ja "nur" cosumption, power, KWh und consumptionTotal mit.
Werd ich aber auch noch ändern, jenachdem wie und was ich noch in Graphen darstellen will.
Mit den Dopplungen muss ich mal schauen was Du da meinst.
Bin erstmal froh es vom Ergebnis so zu haben wie gehofft, jetzt gehts darum es zu verbessern und "unnsiinges" zu entfernen.
Zitat von: Starsurfer am 07 Februar 2020, 17:58:33
Wenn Du die Userreading untereinander haben willst, schau dir mal stateFormat an.
Es geht mir darum das ich die UserReadings beim "definieren" der übersichtshalber auf mehrere Zeilen schrieben wollte.
Das ist ja zur Zeit alles in EINER ewig langen Zeile
attr Sensor_Server_Verbrauch userReadings kWh:consumption.* monotonic {sprintf("%.1f",ReadingsVal($name,"consumption",0)/1000)}, Kosten_Gesamt:consumption.* { ReadingsVal($name,"kWh",0)*ReadingsNum("kWh_Price","state",0.25) . " €"}, ConsumptionTotal:consumption.* monotonic { ReadingsVal("Sensor_Server_Verbrauch","consumption",0)/1000 }, Kosten_Tag { ReadingsVal($name,"statConsumptionTotalDay",0)*0.25 . " €"}, Kosten_Monat { ReadingsVal($name,"statConsumptionTotalMonth",0)*0.25 . " €"}, Kosten_Jahr { ReadingsVal($name,"statConsumptionTotalYear",0)*0.25 . " €"}, Kosten_Gestern { ReadingsVal($name,"statConsumptionTotalDayLast",0)*0.25 . " €"}
Würde es gerne ungefähr so machen:
code]
attr Sensor_Server_Verbrauch userReadings kWh:consumption.* monotonic {sprintf("%.1f",ReadingsVal($name,"consumption",0)/1000)},
Kosten_Gesamt:consumption.* { ReadingsVal($name,"kWh",0)*ReadingsNum("kWh_Price","state",0.25) . " €"},
ConsumptionTotal:consumption.* monotonic { ReadingsVal("Sensor_Server_Verbrauch","consumption",0)/1000 },
Kosten_Tag { ReadingsVal($name,"statConsumptionTotalDay",0)*0.25 . " €"},
Kosten_Monat { ReadingsVal($name,"statConsumptionTotalMonth",0)*0.25 . " €"},
Kosten_Jahr { ReadingsVal($name,"statConsumptionTotalYear",0)*0.25 . " €"},
Kosten_Gestern { ReadingsVal($name,"statConsumptionTotalDayLast",0)*0.25 . " €"}
[/code]
So funktioniert es jedoch nicht
Grüße
Totti