Strommessung einmal anders?

Begonnen von P.A.Trick, 11 September 2014, 15:35:25

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo,

zu dem Thema habe ich mir auch ein paar Gedanken gemacht und werde mal in den nächsten Wochen dazu auch etwas programmieren.
Ansatz:

1. Ich habe zwei DECT200, die liefern ja über das reading "power" direkt den Stromverbrauch.
2. Meine FS20 liefern die Infos, ob etwas ein- oder ausgeschaltet wird.
3. Dann gibt es noch permanent eingeschaltete Verbraucher, die ich auch erfassen möchte.
4. Dann verbleiben noch die nicht erfassten Geräte, wie z.B. Herd.

Ich würde ein eigenes Modul hierfür entwerfen. Über die notifyFN bekommt das Modulalle events mit. Ich würde auf den TYPE schauen (z.B. DECT200 und da "power" auswerten) oder z.B. FS20 (da ein / aus auswerten).
Bei den devices, die nur ein- und aus liefern, muss dann in einem reading der Verbrauch hinterlegt werden. Alle Geräte, bei denen der Verbrauch hinterlegt ist, werden dann von dem Modul erfasst und der Verbrauch gespeichert.

Nun zur Erfassung des Verbrauchs:

a) Entweder liest man den vom Sockel der Lampe ab (Beispiel) und setzt dann

setreading Lampe1 power 15

b( oder man macht das mit Modul-Unterstützung und einer DECT200.

set meinEnergieMonitor measure myTV ts

myTV ist das zu messende Gerät
ts die Messsteckdose (DECT200).

Wird myTV über fhem eingeschaltet, so wird auch der Verbrauch mit Hilfe von ts gemessen und die Kalibrierung dann im reading power von myTV hinterlegt.

  Die permanenten Verbraucher, wie z.B. Fritzbox, Heizungsanlage usw. werden als dummys angelegt und auf "ein" gesetzt.

Um Statistiken machen zu können, wird von den erfassten devices das "group" Attribut ausgewertet. Das ist bei mir z.B. "Beleuchtung", "Media" usw.

Wenn ich das hab, dann sehe ich mal weiter, was ich mit den Daten noch so mache.

Da ich keine Möglichkeit habe, meinen Stromzähler automatisch zu erfassen, mache ich das derzeit per Hand einmal im Monat und trage das in fhem ein, um so den durchschnittlichen Monatsverbrauch und den zu erwarteten Jahresverbrauch zu berechnen.

Das würde ich dann mit dem EM verknüpfen.

Die Lösung hat den Vorteil, das in fhem nichts geändert werden muss, lediglich der Verbrauch wird als reading bei den Geräten hinterlegt.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

P.A.Trick

Hört sich gut an! Ich stelle mich schon einmal als Betatester bereit!
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

rudolfkoenig

Zitatmuss dann in einem reading der Verbrauch hinterlegt werden

Nicht Reading sondern Attribut.

Reading ist fuer das Modul vorgesehen, um Daten die gespeichert werden, zu setzen.
Der Benutzer sollte Attribute setzen. userReading ist mehr oder weniger eine Fehlentwicklung.

Elektrolurch

Hallo,

für bestehende devices kann man doch keine Attribute hinzufügen?
Die Liste wird doch bei der Moduldefinition mit "attrlist" festgelegt oder der Energiemonitor müsste beim Start alle Module, die er nutzen soll, lesen und dann überall an die attrlist noch ein Attribut anhängen. Und dann muss man noch aufpassen, ob die Module schon geladen sind.
Meiner Meinung nach ist der Stromverbrauch auch ein Wert des devices und kann dort als reading hinterlegt werden.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

justme1968

mit addToAttrList kann ein modul neue globale attribute definieren.

die leistung die pro device  konfiguriert werden
müsste gehört in ein attribut.  der wert wird ein mal vom anwender gesetzt und nie mehr verändert.

der daraus über die schaltzeiten berechnete verbrauch gehört in ein reading. der ändert sich ständig.

genauso ein tatsächlich gemessener verbrauch. der ghört auch in ein reading.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Zitatmit addToAttrList kann ein modul neue globale attribute definieren.

Und der Benutzer erweitert "attr global userattr".
Wird von vielen Modulen wie FHEMWEB (icon/webcmd/devStateIcon/etc), structure, usw. verwendet.

fiedel

ZitatUnd der Benutzer erweitert "attr global userattr".

Das macht sich sehr gut! Hat mir schon öfter den Umweg über einen Dummy erspart - in Verbindung mit der ebenfalls sehr schönen "Fehlentwicklung" userReadings.  :)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

tupol

Bin mir nicht sicher, ob das die ganze Problematik erfasst, aber ich hatte wegen ähnlicher Interessen meinerseits in das statistics-Modul "Dauer der Status" eingefügt. Das erfasst die Zeit, die ein bestimmter Gerätewert einen bestimmten Wert hat und könnte dann mit den jeweiligem Attribut multipliziert werden.

Elektrolurch

Hallo,

so, ein Modul EM ist im entstehen, dank Regenwetter.
Bisher vorgesehene/implementierte  Features:
1. Die Attribute power-on und power-off können bei jedem device hinterlegt werden. power-on ist z.B. für eine 15 W Energiesparlampe 15, power-off wäre dann der Eigenstromverbrauch, typ. 0.5 W des Schaltaktors.
2. Jeder Schaltvorgang des devices (Trigger ist =~m/(on|ein).*/ und entsprechend off und aus)wird über ein globales notify aufgezeichnet und den daraus resultierenden Stromverbrauch errechnet.
3. Die Stromverbrauchswerte werden als reading beim device je Stunde,Tag,Monat und Jahr gesammelt. Das Rücksetzen erfolgt jeweils zu Beginn der nächsten Zeitperiode.
Das Setzen dieser Werte generiert events, die dann in ein log geschrieben werden können und für einen plot zur Verfügung stehen.
4. EM sammelt zusätzlich die Verbrauchswerte gem. der Gruppen, in denen sich die devices befinden, z.B. group = "Beleuchtung" oder "Mediaanlage".
Die Gruppenwerte gehen auch wieder in hour,day,month und year - readings.
5. Dauerverbraucher, wie z.B. Kühlschrank usw. können über dummys erfasst werden.
Dazu schliesst man temporär den Verbraucher über eine DECT200 an und setzt:

set myEM measure <Verbrauchder> <probe>
und lässt die Messung eine zeitlang laufen, um so automatisch den Mittelwert errechnen zu lassen (sinnvoll bei Kühlschrank)
mit
set myEM measure stop
wird die Messung beendet und das Attribut power-on beim <Verbraucher> gesetzt.

Soweit erst einmal der erste Ansatz.

Ich habe für die Verbrauchsmessung nur DECT200 hier, es gibt ja aber auch andere Funksteckdosen, die den aktuellen Verbrauch übertragen. Wenn diese mit integriert werden sollen, benötige ich einige Angaben dazu:

1. Type (fhem-Typ)
2. Wie heißt das reading, welches den aktuellen Verbrauchswert überträgt? (Bei der DECT200 sieht das so aus: "power: 150 W". Der EM triggert hier also auf "Power:")
3. Wie oft wird der Verbrauchswert übertragen? (bei der DECT200 1 x je Minute).

Noch Anregungen?

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

anregungen und vorschläge:

- wenn die devices direkt schon den verbrauch und nicht nur die last liefern ist es vielleicht genauer diesen zu verwenden und nicht selber zu integrieren. da müsste man nur vorsehen das der wert zwischendurch auf 0 gesetzt werden kann.

- die zeit zwischen readings sollte nicht fest eingetragen werden sondern direkt aus den events abgeleitet werden

- vielleicht wäre es gut zusätzlich zu on und off auch noch dim werte auszuwerten ?

- was spricht dagegen auch wochen werte zu haben?

- wie wäre es zusätzlich zu den gruppen noch mal 'alles' werte zu haben?

- das mit den gruppen sollte auch gehen wenn ein device in mehreren gruppen ist um z.b. stockwerksweise zu gruppieren.

- wie wäre es wenn man haus oder stockwerks zähler mit den obigen gruppen 'verrechnen' kann um die nicht direkt erfasste differenz zu bekommen. also z.b. haus zähler minus alle erfassten devices oder zähler wohnzimmer minus alle im wohnzimmer erfassten devices. letzteres könnte dann z.b. alles - medienanlage = beleuchtung ergeben.

- die PCA301 und EC3000 haben power und consumption readings

ich hoffe du bist jetzt nicht erschlagen :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

#25
Zitat:
- wenn die devices direkt schon den verbrauch und nicht nur die last liefern ist es vielleicht genauer diesen zu verwenden und nicht selber zu integrieren. da müsste man nur vorsehen das der wert zwischendurch auf 0 gesetzt werden kann.

Bei der DECT200 steht der summierte Verbrauch in einem reading "energy", der scheint aber seitens der Fritzbox auch nur aufintegriert zu werden...
Da eine Änderung von "energy" kein event generiert, ist das mit dem von aussen initiierten Zurücksetzen ein Problem, da man den Zeitpunkt nicht mitbekommt.


Zitat:
- die zeit zwischen readings sollte nicht fest eingetragen werden sondern direkt aus den events abgeleitet werden

Was meinst Du damit. Ich triggere den EM auf ein|on|off|aus|power:
Um den Verbrauch je Stunde zu ermittlen, und bspw. eine Lampe, die nur an einem Aktor mit ein|aus hängt kann ja länger als eine Stunde brennen, läuft der EM einmal je Stunde und sammelt die Werte aller devices mit dem Attribut power-on ein und kumuliert sie.
Zitat:
- vielleicht wäre es gut zusätzlich zu on und off auch noch dim werte auszuwerten ?
Ja, in der Version 1.5


Zitat:
- was spricht dagegen auch wochen werte zu haben?

Eigentlich nichts. Fängt die Woche mit Sonntag oder Montag an?
Ok. Eingebaut. Und die Woche fängt mit Montag an.


Zitat:
- wie wäre es zusätzlich zu den gruppen noch mal 'alles' werte zu haben?
Ok. Eingebaut und auch die Räume habe ich noch mit eingebaut.
Kann man jetzt über Attribute use-groups und use-rooms ein- und ausschalten.



Zitat:
- das mit den gruppen sollte auch gehen wenn ein device in mehreren gruppen ist um z.b. stockwerksweise zu gruppieren.

Mit den mehreren Gruppen hatte ich nicht bedacht.....
Ist der Trenner bei mehreren Gruppen eindeutig? ',' oder ' ' oder beides? Wegen dem split auf das Attribut 'group'.
Zitat:
- wie wäre es wenn man haus oder stockwerks zähler mit den obigen gruppen 'verrechnen' kann um die nicht direkt erfasste differenz zu bekommen. also z.b. haus zähler minus alle erfassten devices oder zähler wohnzimmer minus alle im wohnzimmer erfassten devices. letzteres könnte dann z.b. alles - medienanlage = beleuchtung ergeben.

Ja. War auch das Endziel, denn ich habe leider keinen "elektrisch" auslesbaren Stromzähler und erfasse die Werte einmal monatlich per Hand und berechne die Jahresprognose.
Daher auch der Ansatz mit den dummys für Kühlschrank und anderen Verbrauchern.
Wobei die Idee im Hinterkopf war, den dummy ev. auch ein- und auszuschalten, wenn ich aus anderen 'Daten "erraten" kann, das der Verbraucher ein- oder ausgeschaltet wurde.
(z.B. Umwälzpumpe für den Heizkreis oder ein Licht mit normalen Schalter aber einem Bewegungsmelder in der Nähe + Dunkel)

Zitat:
- die PCA301 und EC3000 haben power und consumption readings
Sind das auch die exakten fhem-types?
comsuption = energy, also 'Gesamtverbrauch?

Zitat:
ich hoffe du bist jetzt nicht erschlagen :)

Na, lieber jetzt ein paar Dinge mehr berücksichtigen, als nachher das Konzept über den Haufen werfen.
Habe sowieso erst einmal zwei Wochen über das Thema nachgedacht, bevor ich eine Zeile Code gebaut habe.
Dann das Modul-Grundgeräst...
Um letzten Sonntag war dann der 'Tag der Kreativität...

Gruß


Elektrolurch
configDB und Windows befreite Zone!

P.A.Trick

Uh das nimmt ja wirklich schon konkrete Formen an! ich bin begeistert Jungs!

Da ich Besitzer zweier DECT200 finde ich das mit dem erfassen der "echten" gemittelten Werte genial!
Die von André erwähnte Funktion die Dim Statuswerte zu erfassen finde ich auch klasse! Wenn dann wuerde es mich auch freuen, wenn wir Homematic beachten würden und demnach das äquivalente "pct" Reading.

Zur Mustererkennung: da ich einen Durchlauferhitzer habe würde ich mich über eine Funktion, ähnlich wie Threshold freuen, die erkennt ob z.B mehr als 5kw in den letzten 5 Minuten vom CUL_EM gemeldet wurden.

Ich sage jetzt schon einmal Danke fuer die super konstruktiven Vorschlaege hier im Forum und besonders an Elektrolurch fuer die Umsetzung! Ich bin wirklich begeistert was hier alles mit FHEM und Co umgesetzt werden kann! Klasse!
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

marcus42

Hallo,

könnte man auch berücksichtigen, dass ein Verbraucher mehr Leistungsstufen als on/off hat? Meine Lüftung hat z.B 10 Stufen , welche jeweils eine charakteristische Leistung haben. Die jeweilige Leistungsstufe ist fhem bekannt, so dass man den Momentanverbrauch daraus ableiten könnte.

VG Marcus

Elektrolurch

Hallo,

Zitat:
wuerde es mich auch freuen, wenn wir Homematic beachten würden und demnach das äquivalente "pct" Reading.


wenn die nicht on/off oder ein/aus liefern, dann müsste ich schon wissen, was die tun. Das reading sagt mir garnichts.
Habe leider keine Homematik.


Einen threshold sehe ich erst mal nicht vor.Aber für die innerhalb einer Stunde gesammlten "Strom-Ereignisse" für Gruppe oder Raum kann man per Attribut einschalten, dass diese seitens EM neue Events erzeugen. Ansonsten werden diese nur stündlich beim Update der Counter für Gruppen, Räume oder 'Alle' erzeugt.
Per userreading und Differenz könnte man dann einen threshold generieren.

dim ist nicht so ganz trivial, da EM ja nur die Zustandsänderungen mitbekommt und immer erst bei Änderungen den Verbrauch berechnet, muss also 1 x Mal Historie pflegen.
Mein Ziel ist es erst einmal die beschriebene Basisfunktion fehlerfrei zum Laufen zu bekommen, ich muss ja auch nachprüfen, ob das Teil richtig rechnet.
Mein erster Test war jedenfalls schon mal positiv....

Gruß


Elektrolurch
configDB und Windows befreite Zone!

der-Lolo

Ich glaube hier entsteht etwas feines, deswegen hefte ich mich mal hier an...
Werden komponenten wie HUE bulbs & Stripes auch integriert? Und zum messen und mitteln der Verbrauchswerte auch andere Messteckdosen wie z.b. Homematic und PCA301 eingebaut?