Sebastian Mogilowskis Blog

Just another blog about administration, linux and other stuff

ELV EM 1000 energy meter on debian with cacti

Dieser Artikel beschreibt, wie man das Energiemesssystem EM 1000 mit einem EM 1000-WZ Strommesssensor unter Debian einrichtet und die Messwerte mit Hilfe von Cacti darstellt.

current power graph

Zum Betrieb wird das “ftdi_sio” Kernel Modul benötigt. Bevor man es einsetzen kann werden jedoch die “vendor” und “product” IDs benötigt.

lsusb
Bus 005 Device 017: ID 0403:e0ef Future Technology Devices International, Ltd

nun kann man mit

modprobe ftdi_sio vendor=0x0403 product=0xe0ef

das Kernel Modul laden. Dabei werden die durch “lsusb” ermittelten “vendor” und “product” IDs ingesetzt.

Weitere Informationen. (EM Linux Driver)

Um das Kernel Modul bei jedem Systemstart automatisch zu laden, muss es in der Datei “/etc/modules” folgende Zeile eingefügt werden:

ftdi_sio options vendor=0x0403 product=0xe0ef

Nun steht das EM 1000 als USB Gerät zur Verfügung. (z.B. /dev/ttyUSB0)

Außerdem ist das Paket “libdevice-serialport-perl” erfoderlich um die Werte mit Perl auslesen zu können.

aptitude install libdevice-serialport-perl

Um die Werte des Stromsensors auszulesen wird nun noch FHEM benötigt.

Die FHEM Software läuft als Serveranwendung und schreibt die Werte alle 5 Minuten in eine Datei. Allerdings akzeptiert die Anwendung EMWZ Devices nur an Port 1-4. Auch nach mehreren Versuchen, wurde bei mir das EMWZ immer als Device 5 mit der EM 1000 verbunden. Da ich die Auswertung mit Cacti machen will, und nicht das eigene Webinterface von FHEM verwenden will, habe ich eine andere Methode gewählt.

Im “contrib” Verzeichnis des FHEM Ordners findet sich eine Datei em1010.pl mit ihrer Hilfe kann man mit:

./em1010.pl /dev/ttyUSB0 getDevStatus 5

eine Ausgabe in dieser Form erhalten:

Readings       (off  2): 1730
Nr devs        (off  6): 2
puls/5min      (off 13): 14
puls.max/5min  (off 15): 15
cur.power      (      ): 0.140 kW
cur.power max  (      ): 0.150 kW
energy h       (off 33): 0.138 kWh (h)
energy d       (off 37): 3.536 kWh (d)
energy w       (off 41): 38.850 kWh (w)
total energy   (off  7): 38.850 kWh (total)
Alarm PA       (off 45): 2300 W
Price CF       (off 47): 0.15 EUR/kWh
R/kW  EC       (off 49): 0
RAW    e901 c206 0000 02c2 9700 0094 b10e 000f
RAW    0080 0c02 1ab6 19a2 1700 00bf 19be 1780
RAW    0c8a 0000 00d0 0d00 00c2 9700 00fc 08dc
RAW    0500 00

Im nächsten Schritt müssen nun nur noch diese Werte in eine für Cacti verständliche Form gebracht werden.

Zuerst kopiert man die Datei em1010.pl nach “/usr/local/bin/”:

cp em1010.pl /usr/local/bin/

Nun erstellt man im Skriverzeichnis von Cacti eine Datei mit dem Namen em1010wz.pl und folgenden Inhalt:

#!/usr/bin/perl
# 2008 - Mogilowski Sebastian
# Script that parses the output of em1010.pl getDevStatus for cacti internal processing:

# Settings:
$deviceNumber = 5;
$USBDevice = '/dev/ttyUSB0';
# - End settings -

open(DEV_STATE, "/usr/local/bin/em1010.pl $USBDevice getDevStatus $deviceNumber|");

while(<DEV_STATE>) {
chomp;
if (s/^[ ]*cur\.power[ ]*\([ ]*\)[:][ ](\d+\.*\d+).*/\1/) {
print "cur_power:" . $_ * 1000 . " ";
}
}

close(DEV_STATE);

Dieses Perl Skript liest den EMWZ Sensor aus und bringt den Wert der aktuellen Leistungsaufnahme in eine von Cacti lesbare Form. Außerdem wird der Wert von Kilowatt in Watt umgerechnet.

Aktuell liest das Skript nur “cur. power” aus. Wer will kann jedoch noch weitere Werte analog zu diesen hinzufügen.

Für dieses Skript muss nun eine entsprechende “Data Input Method” (cur_power) im Cacti angelegt werden und anschließend das entsprechende “Graph Template”.

Das fertige Template für Cacti sowie die benötigten Skripts habe ich zum Download bereitgestellt: Cacti Template EM1010WZ (19.82 KB)

Update:

Wie das ganze mit Munin funktioniert, findet Ihr hier:
http://netaddict.de/howtos:em1010

Links:

http://www.koeniglich.de/fhem/fhem.html
http://groups.google.com/group/FHZ1000-users-on-unix
http://www.elv.de/Funk-Energie-Me%C3%9Fsystem/x.aspx/cid_74/detail_1/detail2_439
http://forums.cacti.net/viewtopic.php?p=151850

, , , , , , ,

3 thoughts on “ELV EM 1000 energy meter on debian with cacti

  • Jan says:

    Sehr hilfreiche Doku!
    Leider kann man anscheinend dem EM1000-DL keine Werte entlocken. Jedenfalls nicht auf diesem Wege.
    ich bekomme bei
    # em1010.pl /dev/ttyUSB0 getDevStatus 1
    Timeout reading the answer
    #

  • Markus says:

    super doku – hab´s gerade getestet funktioniert einwandfrei, allerdings muss man unter CenOS aufpassen das aktuelle perl-Device-SerialPort Paket zu installieren -> EPEL repo (mit aktuellem rpmforge wird die v 1.003001 des SerialPort.pm geladen und damit funktioniert em1010.pl nicht)

    Vielen Dank für die Doku!

Leave a Reply

Your email address will not be published. Required fields are marked *

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.