Neues Modul EMONITOR - EnergieMonitor

Begonnen von Elektrolurch, 06 Dezember 2014, 17:11:34

Vorheriges Thema - Nächstes Thema

Elektrolurch

@Franz Tenbrock

Derzeit habe ich in EM folgene Geräte berücksichtigt, die Verbrauchswerte liefern können:
# Measuring devices
my %ptypes = ('FBDECT' => 'energy',
'PCA301' => 'consumption',
'EC3000' => 'consumption');


Da sind die von Dir genutzten nicht dabei. Ich müsste wissen, über welche readings der aktuelle Verbrauch und der kumulierte Verbrauch geliefert wird, damit ich diese in EM eintragen kann.

Elektrolurch

configDB und Windows befreite Zone!

Olaf A

Hallo Elektrolurch,

klasse was du das geschaffen hast. So was habe ich schon immer gesucht.
Was ich besonders gut finde ist, dass du die Readins direkt  in den Schalter schreibst.
Die Übersicht in dem Energie- Room  finde ich auch sehr gelungen. Alle in allen eine runde Sache bis auf eine (ich hoffe) Kleinigkeit.

Mich würde interessiere wie lange der Verbraucher eigentlich im Betrieb ist.
Besteht die Möglichkeit diese in das Modul mit einzubauen? Dort einige Readins zu erzeugen, die nach Stunde; Tag; Monat; Jahr und gesamt mit geschienen werden.
Am besten über ein Attributes damit man es individuell einschalten kann.

Ich hoffe, dass ich dir jetzt keine all zu großen Kopfschmerzen gemacht habe und würde mich über eine Umsetzung freuen.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Elektrolurch

Hallo Olaf,

Zitat:
Besteht die Möglichkeit diese in das Modul mit einzubauen? Dort einige Readins zu erzeugen, die nach Stunde; Tag; Monat; Jahr und gesamt mit geschienen werden.
Am besten über ein Attributes damit man es individuell einschalten kann.

Im Prinzip ja, allerdings kosten zusätzliche readings auch Performance.
Wenn man nur Schalter hat, bei denen das power-on - Attribut gesetzt ist und power-off = 0, kann man die 'Einschaltzeit natürlich auch berechnen:

zeit = (power-hourly / power-on) * 60
liefert das Ergebnis in Minuten.

Warum brauchst Du die Einschaltzeit je Stunde, 'Tag, Woche, Monat und Jahr?
Würde da nicht ev. ein einfacher Zähler, der einfach ständig hochzählt, genügen? z.B. zur Bestimmung der "Lebensdauer"?.
Der würde weniger events erzeugen (oder ev. gar keine)

Gruß


Elektrolurch
configDB und Windows befreite Zone!

fhainz

Für die Tages/Stunden/ etc Zeiten kann ich HourCounter Modul empfehlen!

Olaf A

#19
Hallo Elektrolurch,

wenn ich mal einen Wunsch von mir gebe, dann versuche ich es mal mit dem großen Paket.
Das kleine mit den Betriebsstunden würde mir aber auch gefallen.
Ich will dort eigentlich die Lebensdauer abbilden.

Hallo fhainz,

das HourCounter Modul ist mir bekannt. Das Modul bildet aber die Daten nicht in dem Verbraucher ab.
Das gefällt mir aber so nicht.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Kakaomonster

Guten Morgen zusammen,

nach genau dieser Möglichkeit suche ich ereits eine halbe Ewigkeit. Danke für die Mühe und das bereitstellen, endlich etwas mit einem richtigen Mehrwert.

Dennoch muss ich fragen, da ich es irgendwie nicht zum laufen bekomme. Ich bekomme weder eine Fehlermeldung, noch irgendwelche Geräte angezeigt, die überwacht werden. Das einzige als Hinweis ist ein Eintrag im Log

EM_Statistiks (end): Calc next call - found 0 devices 50 59 9 18 0 115 0 17 0


und davon jede Menge. Hat jemand eine Idee wasich vergessen habe könnte?
Grüsse, Kakaomonster
FHEM auf Raspi m.12cm Antenne, BBB als Server für Zusatz (apache,php,sql)
1 USB CUL/RAW (ReadAnswer):  V 1.61
2 MAX Thermostate, 1 MAX Wanthermostast
1 FHT8V Thermostat, Schaltaktoren,Bewegungsmelder, Wandtatser Elro & IT
1 HMT 360, 4 7"Tablets, FB 7490

Elektrolurch

Hallo,

Zitat:
EM_Statistiks (end): Calc next call - found 0 devices 50 59 9 18 0 115 0 17 0

EM findet keine devices, die aufgezeichnet werden sollen. Mögliche Gründe (siehe Beitrag 1):

1. Das Attribut für die Typen, die ausgewertet werden sollen, wurde nicht gesetzt.
2. Bei den devices, die Schalten, wurde das power-on Attribut für den Verbrauch je Stunde nicht gesetzt.

Noch ein allgemeiner Hinweis:

Seit der letzten fhem.js - Umstellung gibt es einige Probleme mit readingsGroup undd dem Attribut "commands".
Die readingsGroup, EM_rg, die man sich im EM-Modul erzeugen lassen kann, verwendet das Attribut "commands", um Menüs für die Darstellung anzubieten.
Seit der Umstellung werden die Texte der Menüs jedoch durch das Attribut "valueFormat" überschrieben, da ich dies global für alle Werte (und damit auch für die drei Werte der commands-Menüs) setze, statt jeden Wert (und bei mir wären es dann ca. 40 x 10= 400)
Elektrolurch
einzeln zu definieren.
Habe dafür nur im Augenblick die Lösung, dass man bei der EM_rg das Attribut valueFormat erst einmal löscht.

Elektrolurch
configDB und Windows befreite Zone!

dombar

Ersteinmal ein dickes Lob zu diesem Modul!
Habe alle FS20 und FBDECT drin und auch Teilweise meine HM Komponenten integriert!
Bei den Schaltern (HM-PB-2-FM) habe Ich das Power-on und das Power-off Attribute benutzt. Bei dem Zwischenstecker (HM-ES-PMSw1-Pl) dafür müßte Ich in der 99_myUtilsEM.pm folgendes einfügen.

# Measuring devices
my %ptypes = ('FBDECT' => 'energy',
'CUL_HM' => 'energy',
'PCA301' => 'consumption',
'EC3000' => 'consumption');

Es gibt ebenfalls in dem Zwischenstecker das 'energy' Reading!
Aber jetzt kommt das Problem. 
Setze Ich die obere Zeile in die 99_myUtilsEM.pm ein, werden die anderen Komponenten (Schalter mit den Power-on Attributen) der HM nicht mehr in die Tageswerte eingetragen. In den stündlichen Werten funktioniert es mit den Attributen!
Also kann Ich die Homematic Komponenten im moment nur entweder auf den Attributen Power-on , Power-off oder über die my_UtilsEM.pm die Steckdose laufen lassen!

Hat schon jemand eine Lösung dafür???

Gruß

Dominik
1x FB7490, 2x FBDECT200, 1x RPI als Öltankanzeige mit TEK603, 1x Synology NAS, 1xCUL FS20, 2x CCU3, 1xFS20DWT , 1x FS20 DI22-4, 1x FS20IR, 3x FS20ST, 1 x KS300, 3x HM-LC-Sw1PBU-FM, 6x HM-ES-PMSw1-Pl,  Siemens S7 CPU 315 für Stromzähler auf S0 Basis uvm.

Elektrolurch

Hallo,

Zitat:
Aber jetzt kommt das Problem. 
Setze Ich die obere Zeile in die 99_myUtilsEM.pm ein, werden die anderen Komponenten (Schalter mit den Power-on Attributen) der HM nicht mehr in die Tageswerte eingetragen. In den stündlichen Werten funktioniert es mit den Attributen!
Also kann Ich die Homematic Komponenten im moment nur entweder auf den Attributen Power-on , Power-off oder über die my_UtilsEM.pm die Steckdose laufen lassen!


So ganz verstehe ich nicht Dein Problem:

Wenn Dein Zwischenstecker power und energy - Events liefert, kannst Du ja damit den Verbrauch messen.
Für Geräte, die keine Verbrauchswerte liefern, setzt man power-on und power-off und EM nutzt das "Ein- und Ausschalt-Event" für die Verbrauchsmessung.

Ist die "Typisierung" nicht eindeutig bei den HM-Komponenten?  Wird da bzgl. des Typs nicht zwischen Schalter und messenden Geräten unterschieden?

Elektrolurch
configDB und Windows befreite Zone!

Markus

Wie ist das mit der typisierung gemeint? Auf was muss ich achten ?
Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

dombar

#25
Moin!

Ich habe mal meine nicht funktionierende Konfiguration eingefügt!


In  der Fhem.cfg
Zitat

define Maria_Licht CUL_HM 2AAF12                                                            < Ist ein Lichtschalter ohne Energy reading deswegen weiter unten das power-on power-off Attribute
attr Maria_Licht IODev CUL1
attr Maria_Licht autoReadReg 4_reqStatus
attr Maria_Licht expert 2_full
attr Maria_Licht firmware 2.3                                                     
attr Maria_Licht model HM-LC-Sw1PBU-FM
attr Maria_Licht peerIDs 00000000,
attr Maria_Licht power-off 0.5
attr Maria_Licht power-on 21



Zitatdefine Steckdose0_Homematic CUL_HM 2AB6A7                         <<----- ist die Steckdose mit untergruppen
attr Steckdose0_Homematic IODev CUL1
attr Steckdose0_Homematic actCycle 000:10
attr Steckdose0_Homematic actStatus alive
attr Steckdose0_Homematic autoReadReg 4_reqStatus
attr Steckdose0_Homematic expert 2_full
attr Steckdose0_Homematic firmware 1.6
attr Steckdose0_Homematic model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic room CUL_HM
attr Steckdose0_Homematic serialNr LEQ0540526
attr Steckdose0_Homematic subType powerMeter
attr Steckdose0_Homematic webCmd getConfig:clear msgEvents
define Steckdose0_Homematic_Sw CUL_HM 2AB6A701
attr Steckdose0_Homematic_Sw model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_Sw peerIDs 00000000,
attr Steckdose0_Homematic_Sw room Kueche
define Steckdose0_Homematic_Pwr CUL_HM 2AB6A702                                          <<<  ----- Dieses Untermodul bringt das Energy Reading
attr Steckdose0_Homematic_Pwr model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_Pwr room Kueche
define Steckdose0_Homematic_SenPwr CUL_HM 2AB6A703
attr Steckdose0_Homematic_SenPwr model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_SenPwr peerIDs 00000000,
define Steckdose0_Homematic_SenI CUL_HM 2AB6A704
attr Steckdose0_Homematic_SenI model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_SenI peerIDs 00000000,
define Steckdose0_Homematic_SenU CUL_HM 2AB6A705
attr Steckdose0_Homematic_SenU model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_SenU peerIDs 00000000,
define Steckdose0_Homematic_SenF CUL_HM 2AB6A706
attr Steckdose0_Homematic_SenF model HM-ES-PMSw1-Pl
attr Steckdose0_Homematic_SenF peerIDs 00000000,

Zitatdefine Energie EM                                                                                <<<< die Definition fur EM mit der Abfrage der Cul_HM Komponenten mit dem power-on power-off attribute
attr Energie room AllEnergie
attr Energie types FS20, CUL_HM, dummy

Jetzt die 99_my_UtilsEM.pm
Zitat
# Measuring devices
my %ptypes = ('FBDECT' => 'energy',                           
'CUL_HM' => 'energy',                                                                                           <<<        Damit Ich das Energy reading auswerten kann
'PCA301' => 'consumption',
'EC3000' => 'consumption');

Ich denke mal das sich beide Funktionen aufeinmal (in der fhem.cfg (attr Energie types CUL_HM) in der my_UtilsEM.pm ('CUL_HM' => 'energy',)) nicht vertragen.
Das wenn Ich in der my_Utils den Wert 'CUL_HM' => 'energy' eintrage, daß dann in jedem Device auch ein Energy reading erwartet wird! Also auch bei den Schaltern ohne ein energy Reading.
Die Homematic Komponenten mit den Power-on Power-off attributen werden dann einfach bei der Übertragung in die Tageswerte ignoriert werden bzw. da ja ein energy reading erwartet wird.
Ich denke mal, dass das nicht vorhandene Energy Reading dann den Wert 0 bekommt und dieser Wert dann in die Tageswerte übernommen werden!

Hier mal noch ein Auszug meiner Logfile, wenn Ich einmal alles neu initialisiere
Zitat
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_Sw rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_Sw with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_SenU rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_SenU with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_SenPwr rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_SenPwr with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_SenI rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_SenI with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_SenF rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_SenF with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic_Pwr rd energy energy 6054.6 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic_Pwr with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Steckdose0_Homematic rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Steckdose0_Homematic with type CUL_HM
2015.01.21 12:48:05 2: EM_InitSingle: Warning device Maria_Licht rd energy energy 0 !
2015.01.21 12:48:05 3: EM_InitSingle: found new Maria_Licht with type CUL_HM

Dominik
1x FB7490, 2x FBDECT200, 1x RPI als Öltankanzeige mit TEK603, 1x Synology NAS, 1xCUL FS20, 2x CCU3, 1xFS20DWT , 1x FS20 DI22-4, 1x FS20IR, 3x FS20ST, 1 x KS300, 3x HM-LC-Sw1PBU-FM, 6x HM-ES-PMSw1-Pl,  Siemens S7 CPU 315 für Stromzähler auf S0 Basis uvm.

dombar

Eine Idee dazu wäre vielleicht das Ich in der Kofiguration noch ausswählen könnte ob Ich die Auswertung der devices auf Ptypes oder auf Power-on Power-off bezieht!
1x FB7490, 2x FBDECT200, 1x RPI als Öltankanzeige mit TEK603, 1x Synology NAS, 1xCUL FS20, 2x CCU3, 1xFS20DWT , 1x FS20 DI22-4, 1x FS20IR, 3x FS20ST, 1 x KS300, 3x HM-LC-Sw1PBU-FM, 6x HM-ES-PMSw1-Pl,  Siemens S7 CPU 315 für Stromzähler auf S0 Basis uvm.

dombar

#27
Habe eine halbwegs einfache Lösung jetzt gemacht damit Ich alle HM Geräte auslesen kann!

In der Fhem.cfg:
Erstens für jeden HM Lichtschalter ein dummy erzeugt! Diesem Dummy power-on power-off Attribute zugewiesen!
Anschließend eben ein Notify erzeugt der auf den HM Lichtschalter reagiert und den dummy dann damit versorgt.

Beispiel:

define Badezimmer_licht CUL_HM 2A7FFC
attr Badezimmer_licht IODev CUL1
attr Badezimmer_licht autoReadReg 4_reqStatus
attr Badezimmer_licht expert 2_full
attr Badezimmer_licht firmware 2.3
attr Badezimmer_licht fp_Grundriss 570,415,5, Badezimmer Licht
attr Badezimmer_licht model HM-LC-Sw1PBU-FM
attr Badezimmer_licht peerIDs 00000000,
attr Badezimmer_licht room Badezimmer
attr Badezimmer_licht serialNr LEQ0494041
attr Badezimmer_licht subType switch
attr Badezimmer_licht webCmd statusRequest:toggle:on:off
define FileLog_Badezimmer_licht FileLog /usr/local/FHEM/var/log/Badezimmer_licht-%Y.log Badezimmer_licht
attr FileLog_Badezimmer_licht logtype text
attr FileLog_Badezimmer_licht room CUL_HM

define Badezimmerlicht_dummy dummy
attr Badezimmerlicht_dummy power-off 0.02
attr Badezimmerlicht_dummy power-on 14.5
attr Badezimmerlicht_dummy room Badezimmer
define Badezimmernotifyon notify Badezimmer_licht:on set Badezimmerlicht_dummy on
define Badezimmernotifyoff notify Badezimmer_licht:off set Badezimmerlicht_dummy off

Anschließend bei dem Attribute für die types nicht mehr die HM Module mit einlesen lassen!
bei mir sieht es dann so aus:

define Energie EM
attr Energie room AllEnergie
attr Energie types dummy

Danach damit Ich die Steckdose auslesen kann eben in der 99_myUtilsEM.pm die makierte Zeile hinzugefügt.
99_myUtilsEM.pm
# Measuring devices
my %ptypes = ('FBDECT' => 'energy',
'CUL_HM' => 'energy',
'PCA301' => 'consumption',
'EC3000' => 'consumption');

Beispiel meines Readings:

Badezimmer
Gerät
                                                lfd h      heute      akt. Woche   Januar   2015
Badezimmer_licht                         0.0 W      0.0 W        0.0 W          0.0 W       0.0 W             <<<< Diese werte werden jetzt null bleiben da eben nur die Energy werte benutzt werden!
Badezimmerlicht_dummy              1.2 W      0.0 W        0.0 W          0.0 W       0.0 W             <<<< Diese werte werden jetzt durch das Power-on Power off Attribute erzeugt!
Badezimmer                                 1.2 W       0.0 W         0.0 W          0.0 W       0.0W

Und die Steckdose mit dem Energy readings wird jetzt auch mit aufgezeichnet!  :)
Einziges problem ist eben das jedes HM Modul in den Reading drin steht auch wenn es nur 0 werte liefert! Aber das stört mich nicht hauptsache das Ergebnis stimmt! :)

Gruß

Dominik
1x FB7490, 2x FBDECT200, 1x RPI als Öltankanzeige mit TEK603, 1x Synology NAS, 1xCUL FS20, 2x CCU3, 1xFS20DWT , 1x FS20 DI22-4, 1x FS20IR, 3x FS20ST, 1 x KS300, 3x HM-LC-Sw1PBU-FM, 6x HM-ES-PMSw1-Pl,  Siemens S7 CPU 315 für Stromzähler auf S0 Basis uvm.

Markus

Die Idee finde ich gut. Aber werde es mal andersherum probieren. Ich verwende auch noch 1 wire Zähler da sind in einem Gerät zwei Verbraucher und somit die Verbrauchswerte doppelt vorhanden , wenn ich jetzt zwei Geräte definieren würde und die Verbrauchswerte reinkopieren würde musste es doch gehen? ..
Werd ich morgen mal testen
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Markus

Die ersten Tests waren ziemlich enttäuschend  :'(

ich hab versucht als dummy einen FBDECT zu verwenden leider akzeptiert der als state keine zahlen das wird dann bei den anderen aktoren auch so sein und die dummy's sind ja durch das attr belegt....
Unknown argument 158.7287, choose one of msgInterval off on blink toggle on-for-timer on-till off-for-timer intervals off-till

Hier mal mein code vieleicht hat ja jemand einen besseren forschlag..
define bett FBDECT 16 switch,powerMeter
define Bett_Watt_berechnen notify Zahler_Schlafzimmer {my $energy =ReadingsVal("Zahler_Schlafzimmer","energy","");; fhem ("set bett $energy")}

attr bett userReadings power:state {ReadingsVal($name,"state",0)}

Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa