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.

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)
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


