Leistungsmessung über neues Modul für FLUKSO

Begonnen von optimizer, 20 November 2014, 14:26:23

Vorheriges Thema - Nächstes Thema

optimizer

Hallo,

zur Anbindung an ein Fluksometer v2 habe ich ein kleines FHEM Modul geschrieben. Dieses liest über einen HTTP Request die Leistungswerte des angegebenen Sensors ein. Ein Sensoreingang kann S0-Signale eines Strom/Gas-zählers verarbeiten oder die üblichen Stromklammern pro Phase oder Leitung.
define <name> FLUKSO <IP-Adresse> <Sensor-ID>
z.B. define Stromzaehler FLUKSO 192.168.x.x abc123456789
oder define Phase1 FLUKSO fluksometer abcd123456789

Dies führt dann folgende Anfrage aus:
http://192.168.x.x:8080/sensor/abc123456789?version=1.0&interval=minute&unit=watt&jsonp_callback=realtime
Das Ergebnis wird in folgenden Readings ausgegeben:
Power_actual / energy_current: gibt den letzten Leistungswert zurück
Power_average / energy_average: gibt einen Mittelwert der übergebenen Leistungswerte zurück, i.d.R. ist das ein Minutendurchschnitt
Power_counter / energy: Berechneter Zählerstand

Attribute:

  • FLUKSO_path: Falls du eine abweichende Flukso-Firmware-Version hast, kann der Parameter "FLUKSO_path" helfen. Per default steht hier:
?version=1.0&interval=minute&jsonp_callback=realtime
  • delay: Wenn die 60-Sekunden-Aktualisierung zu kurz ist, kann mit dem Attribut "delay" eine andere Zeit in Sekunden eingestellt werden. Allerdings gehen damit auch Werte für die Zählerstandermittlung verloren.
  • verbose: mit "2" werden die Meldungen im Log reduziert.
  • connectTimeout: Timeout für den request (Standard ist 5 Sekunden)
  • FLUKSO_corrF: Korrekturfaktor/Multiplikator um reading zu übersteuern. Default = 1
  • FLUKSO_unit: Verwende watt (bei Strom, Wärme) oder lperday (bei Wasser und Gas). Default = watt
  • FLUKSO_offset: Zählerstand oder Offset um den absoluten Wert fortzuschreiben. Bitte nicht in FHEM config abspeichern, da sonst der Aufsetzpunkt jedes mal beim n&auml;chsten FHEM Start verwendet wird.


Viel Spass beim Ausprobieren.

Nebenbei suche ich nach einer Möglichkeit diese Stromklammern am Raspi zu betreiben. Hat jemand eine Idee?

Gruß
optimizer

PS: angehängte Datei nach Unterordner /FHEM kopieren und restart/reload nicht vergessen.

Änderungen:
16.12.2014: Version 0.4: Power_counter mit offset, trend
21.08.2015: Version 0.5: kleine Änderungen, Doku
10.09.2015: Version 0.6: lperday Korrektur
05.11.2015: Version 0.7: neuer Korrekturfaktor, lperday-Fix, neue reading-Namen (energy) für statistics, Attribute überarbeitet

chriz

Hi,

habe gerade dein Modul eingebaut und es funktioniert einwandfrei - super Arbeit!

Bisher logge ich meinen Strom S0 Zähler mit. Im Log hat er noch ein wenig wegen Perl Warnings gemeckert und den Status schreibt er minutlich ins FHEM Log, wird auf Dauer etwas viel, wobei man mit attr verbose= im Modul etwas reduzieren könnte.

2014.11.20 21:29:08 1: PERL WARNING: given is experimental at ./FHEM/23_FLUKSO.pm line 118.
2014.11.20 21:29:08 1: PERL WARNING: when is experimental at ./FHEM/23_FLUKSO.pm line 120.
2014.11.20 21:29:08 1: PERL WARNING: when is experimental at ./FHEM/23_FLUKSO.pm line 124.
2014.11.20 21:29:08 1: PERL WARNING: when is experimental at ./FHEM/23_FLUKSO.pm line 130.
2014.11.20 21:29:08 1: PERL WARNING: when is experimental at ./FHEM/23_FLUKSO.pm line 135.
2014.11.20 21:29:18 3: FLUKSO FluksoStromS0: StatusTimer.335 --- started ---
2014.11.20 21:29:18 3: FLUKSO FluksoStromS0: StatusStart.197 --- started ---
2014.11.20 21:29:18 3: FLUKSO FluksoStromS0: StatusStart.244 --- done ---
2014.11.20 21:29:18 3: FLUKSO FluksoStromS0: StatusTimer.348 --- done ---
2014.11.20 21:30:18 3: FLUKSO FluksoStromS0: StatusTimer.335 --- started ---
2014.11.20 21:30:18 3: FLUKSO FluksoStromS0: StatusStart.197 --- started ---
2014.11.20 21:30:18 3: FLUKSO FluksoStromS0: StatusStart.244 --- done ---
2014.11.20 21:30:18 3: FLUKSO FluksoStromS0: StatusTimer.348 --- done ---
2014.11.20 21:31:18 3: FLUKSO FluksoStromS0: StatusTimer.335 --- started ---
2014.11.20 21:31:18 3: FLUKSO FluksoStromS0: StatusStart.197 --- started ---
2014.11.20 21:31:18 3: FLUKSO FluksoStromS0: StatusStart.244 --- done ---
2014.11.20 21:31:18 3: FLUKSO FluksoStromS0: StatusTimer.348 --- done ---
......


Nochmals danke für deine Arbeit,

Grüße
Chris
FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

optimizer

Hallo Chris,
freut mich, dass es bei dir funktioniert.
Ich bin mal gespannt, wie das bei deinem Gas- u. Wasser-Zähler aussieht.

chriz

#3
Hi,

hab heute meinen Gas- und Wasserzähler hinzugefügt. Dazu je eine weitere Flukso-Instanz gestartet. Im Frontend sieht es momentan so aus:

(https://lh4.googleusercontent.com/-IMojL_mHhYI/VHX_hyTHbxI/AAAAAAAAT2k/lYsCZvTDJ_g/s800/flukso.png)

Gas und Wasser liefern noch "Watt" Werte, ich denke das kann man im Modul umstellen (unit=Watt).

Auf jeden Fall sehe ich schonmal wenn der Gas- und Wasserzähler läuft, dies ist mir bei diesen Zählern am Wichtigsten. Den Wasserzähler habe ich noch mit DOIF verknüpft - sollte das Wasser länger als 20 Minuten laufen bekomme ich eine Pushnachricht aufs Handy.

Im Log hatte ich heute noch folgende Perl-Warnings, vermutlich wegen eines Timeouts

2014.11.26 15:57:07 2: FLUKSO FluksoStromS0: ParseSensorResponse.263 Error while requesting http://192.168.77.39:8080/sensor/xxxsensor1xxx?version=1.0&interval=minute&unit=watt&jsonp_callback=realtime - read from http://192.168.77.39:8080 timed out
2014.11.26 15:57:07 1: PERL WARNING: Exiting subroutine via last at ./FHEM/23_FLUKSO.pm line 265.
2014.11.26 15:57:12 2: FLUKSO FluksoGasS0: ParseSensorResponse.263 Error while requesting http://192.168.77.40:8080/sensor/xxxsensor2xxx?version=1.0&interval=minute&unit=watt&jsonp_callback=realtime - read from http://192.168.77.40:8080 timed out


Falls jemand Interesse am DOIF code für die Wassermeldung hat:

define DI_FluksoWasser DOIF ([FluksoWasserS0] =~ "W") (set Pushover1 msg 'Achtung - Wasser laeuft' 'seit mehr als 20 Minuten' ''0'')
attr DI_FluksoWasser wait 1200



Cheers
Chris
FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

optimizer

ZitatGas und Wasser liefern noch "Watt" Werte, ich denke das kann man im Modul umstellen (unit=Watt).
Probier mal mit dem Paramter FLUKSO_path eine andere Einheit zu übergeben. Neben watt kann man noch lperday für Gas oder Wasser verwenden. In Version 0.3 wird die Einheit aus dem String übernommen. Wir könnten auch ein eigenes Attribut machen, oder die Einheit auch ganz weglassen?
ZitatIm Log hatte ich heute noch folgende Perl-Warnings, vermutlich wegen eines Timeouts
Timeout ist auf 5 Sekunden eingestellt. Soll ich das auch als Attribut "FLUKSO_timeout" ermöglichen? Was für einen Wasserzähler mit S0 hast du?
ZitatDOIF code für die Wassermeldung
gefällt mir :-)


Gruß
Karlheinz
PS: Ich werde die flukso.pm immer nur im ersten Post aktualisieren (Version 0.3).

chriz

lperday ist ideal, werde das im Path anpassen. Ein Attribut dafür und für die anderen Werte wäre natürlich sehr komfortabel. Somit kann jeder seine Einheiten und Werte selbst anpassen.

Ich nutze folgenden Wasserzähler: http://www.energie-zaehler.com/epages/61422236.sf/de_DE/?ObjectPath=/Shops/61422236/Products/ETAKDN20-130-I1
Funktioniert hier seit über 2 Jahren problemlos.

Grüße
Chris
FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

optimizer

Jetzt kann man zwei neue Attribute verwenden:
- connectTimeout (default 5 Sekunden)
- FLUKSO_unit (default watt)
Neue Version im ersten Post

Gruß
Karlheinz

chriz

Hallo Karlheinz

hab gerade die 0.3 Version probiert. Funktioniert sowiet, nur leider läßt sich das Attribut FLUKSO_unit im Webfrontend nicht ändern (nicht anklickbar).

Grüße
Chris
FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

optimizer

Hi Chris,
die Attribute erscheinen nur wenn ein define mit der neuen Version durchgeführt wurde. Probier mal folgendes: "DEF" von deinem device anklicken (da könntest du den define ändern) und anschließend auf den Knopf modify ... drücken; dann sollten die Attribute in der Liste erscheinen.

Gruß
Karlheinz

chriz

FHEM auf Intel NUC D34010WYK Core i3, SSD, Ubuntu. HomeMatic mit HMLAN (Groundplane Antenne), Fritz DECT!200, FritzBox 7490, EnerGenie EG-PMS2-LAN, Yamaha RX-V475, Netatmo, Withings, Philips hue, Osram Lightify, Flukso Energy Meter, Harmony, RooWifi, Junkers ZSB 24-4 C Heizung via Heatronic HT-BUS

bilbo_b

Hallo Optimizer,

vielen Dank für Deinen Hinweis auf diesen Thread.

Habe mir eben mal die 0.3 installiert und hatte sofort den aktuellen Stromverbrauch in der Anzeige.

Super, klasse, vielen Dank!

Der Chumby neben mir zieht mit einem http-request immer gleich die letzten 60 Sekunden mit jeweils Wert pro Sekunde (wenn ich es richtig verstanden habe) und bildet daraus Graphen, Mittelwerte der letzten 5 Min und 15 Min.

Meinst Du sowas wäre auch in fhem mit Deinem Modul möglich?

Soll nicht fordernd rüber kommen, freue mich sehr über das was ich Dank Dir jetzt schon habe.

Hat jemand die Werte die aktuell geliefert werden in einen Graphen gepackt und könnte mir einen Code-Schnipsel zukommen lassen?
Bin leider noch zu doof, um selbst Graphen zu erstellen (hab es wirklich mal 2h probiert).

Lieben Gruss,

Bilbo_b

Christoph

Hallo,

Danke für das Modul, hab 3 einzelne Phasen eingebunden und lass dein Modul im 10 Sekundentakt die Daten abrufen.

Funktioniert problemlos seit fast einer Woche... :P

Über ein userreading addiere ich die 3 Phasen zusammen um den aktuellen Verbrauch angezeigt zu bekommen.

Hat jemand eine Idee wie ich einen "aktuellen" Zählerwert generieren könnte?


Gruß Christoph

optimizer

@ bilbo_b:
Danke für dein Feedback.
Die grafische Ausgabe ist in FHEM einfach und wegen der Historie besser als im Chumby.
1. Du musst die Daten erstmal mitschreiben - das ist mit einem " filelog " am einfachsten: z.B. define Zaehler_filelog FILELOG ./log/Zaehlerlog-%Y.log (Stromzaehler:Power_average).*
Anstatt "Stromzaehler" muss der Name vom Flukso device eingesetzt werden!
2. nach einigen Minuten sollten Readings in die Datei eingetragen werden, dann (oder besser am nächsten Tag) kannst du das Diagramm erzeugen: Im neu erstellten device (hier Zaehler_filelog) auf "create SVG plot" klicken und das Diagramm nach deinem Geschmack erstellen. Wähle column "4" und das Reading u. drück dann einmal auf "write gplot file"
Mir hat dabei die Anleitung http://forum.fhem.de/index.php/topic,25040.0.html geholfen. Da muss man am Anfang ausprobieren.
Viel Erfolg

optimizer

@Christoph:
10-Sekundentakt erzeugt VIELE Daten!
ZitatHat jemand eine Idee wie ich einen "aktuellen" Zählerwert generieren könnte?
Du meinst den Zählerstand? Bei jedem Reading den Zählerstand anhand eines Offsets zu errechnen stelle ich mir im Moment etwas aufwändig und ungenau vor.
Vielleicht hilft http://www.fhemwiki.de/wiki/Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice weiter?

optimizer

Hallo Christoph,

deine Idee mit dem Zählerstand war doch nicht so schwer. Über das neue Attribut FLUKSO_offset in der Version 0.4, kann der Zählerstand als neue Basis verwendet werden. Dieser wird beim nächsten Reading dem durchschnittlichen Verbrauch zugerechnet und in das neue Reading Power_counter geschrieben. FLUKSO_offset wird anschliessend gelöscht. Zusätzlich gibt es noch eine kleine Trendanzeige mit Power_counter im state.
Ich bin mir nicht sicher wie genau das ganze ist. Probiert mal die neue Version 0.4 aus.
Das unnötige Reading Sensor-id hab ich entfernt.