Energie-Funk-Mess

Werbung
31.03.2017 05:58.
1/37
Energie-Funk-Mess-System EM 1000
Energie-Funk-Mess-System EM 1000
Zum Überwachen des Gas- und Stromverbrauchs nutze ich seit Januar 2009 das ELV
Energie-Funk-Mess-System EM 1000. Ferner soll auch der variable Verbrauch meiner
IT-TK-Infrastruktur dokumentiert werden, da dieser zuweilen für wüste Spekulationen
Grundlage war.
Hardware
Das Empfangs-/Anzeigegerät EM 1010 verfügt über einen USB-Port über welchen wir später die
Messwerte auslesen und in unsere MySQL-Datenbank speichern wollen.
CentOS 5.x
Stecken wir die Station an einen CentOS 5.x Rechner an, so wird uns dies im Syslog entsprechend
dokumentiert:
Jan 7 19:20:35 nss kernel: usb 3-2: new full speed USB device using
ohci_hcd and address 8
Jan 7 19:20:35 nss kernel: usb 3-2: configuration #1 chosen from 1 choic
Wie auch schon meine alte Wetterstation Wetterstation 500 von ELV wird dieses Gerät auch via dem
FTDI-Kernelmodul angesprochen. Da das benötigte Kernel-Modul jedoch nicht von Haus aus
geladen worden ist, müssen wir ein klein wenig nachhelfen.
Als erstes ermitteln wir die Product- und Vendor-ID unseres Gerätes:
# lsusb
Bus 003 Device 008: ID 0403:e0ef Future Technology Devices International,
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Ltd
Alternativ können wir diese auch wie folgt ermitteln:
# cat /proc/bus/usb/devices
...
T:
D:
P:
S:
S:
C:*
I:
E:
E:
Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 8 Spd=12 MxCh= 0
Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
Vendor=0403 ProdID=e0ef Rev= 2.00
Manufacturer=ELV AG
Product=ELV EM 1010 PC
#Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA
If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Diese beiden Werte Vendor=0403 und ProdID=e0ef benötigen wir nun für die weitere
Konfiguration.
Einen ersten Start ermöglichen wir via:
# modprobe ftdi_sio vendor=0x0403 product=0xe0ef
Im Syslog wird dies nun erfolgreich vermerkt:
Jan 7 20:43:17 nss kernel:
support registered for FTDI
Jan 7 20:43:17 nss kernel:
converter detected
Jan 7 20:43:17 nss kernel:
FT8U232AM
Jan 7 20:43:17 nss kernel:
attached to ttyUSB2
Jan 7 20:43:17 nss kernel:
Jan 7 20:43:17 nss kernel:
Serial Converters Driver
drivers/usb/serial/usb-serial.c: USB Serial
USB Serial Device
ftdi_sio 3-2:1.0: FTDI USB Serial Device
drivers/usb/serial/ftdi_sio.c: Detected
usb 3-2: FTDI USB Serial Device converter now
usbcore: registered new driver ftdi_sio
drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI
Damit nun beim Systemstart dieses Kernel-Modul automatisch geladen wird, legen wir uns eine
individuelle udev-Regel an:
# vim /etc/udev/rules.d/99-custom.rules
SYSFS{idProduct}=="e0ef", SYSFS{idVendor}=="0403", RUN+="/sbin/modprobe -q
ftdi_sio product=0xe0ef vendor=0x0403"
CentOS 6.x
Verbinden wir die Station mit einem Rechner, auf dem CentOS 6.x installiert ist, wird im syslog
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
3/37
Energie-Funk-Mess-System EM 1000
wesentlich mehr als bei CentOS 5.x ausgegeben:
Jul 26 16:49:45 vml000020 kernel:
3 using uhci_hcd
Jul 26 16:49:45 vml000020 kernel:
idVendor=0000, idProduct=0000
Jul 26 16:49:45 vml000020 kernel:
Product=2, SerialNumber=3
Jul 26 16:49:45 vml000020 kernel:
Jul 26 16:49:45 vml000020 kernel:
Jul 26 16:49:45 vml000020 kernel:
Jul 26 16:49:45 vml000020 kernel:
choice
Jul 26 16:49:45 vml000020 kernel:
Jul 26 16:49:45 vml000020 kernel:
Jul 26 16:49:46 vml000020 kernel:
number 4 using uhci_hcd
Jul 26 16:49:47 vml000020 kernel:
idVendor=0403, idProduct=e0ef
Jul 26 16:49:47 vml000020 kernel:
Product=2, SerialNumber=0
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
choice
Jul 26 16:49:47 vml000020 kernel:
usbserial
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
usbserial_generic
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Serial Device
Jul 26 16:49:47 vml000020 kernel:
converter detected
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
Jul 26 16:49:47 vml000020 kernel:
converter now attached to ttyUSB0
Jul 26 16:49:47 vml000020 kernel:
ftdi_sio
Jul 26 16:49:47 vml000020 kernel:
Converters Driver
usb 1-2: new full speed USB device number
usb 1-2: New USB device found,
usb 1-2: New USB device strings: Mfr=1,
usb
usb
usb
usb
1-2:
1-2:
1-2:
1-2:
Product: QEMU
Manufacturer:
SerialNumber:
configuration
USB Hub
QEMU 0.12.1
314159
#1 chosen from 1
hub 1-2:1.0: USB hub found
hub 1-2:1.0: 8 ports detected
usb 1-2.1: new full speed USB device
usb 1-2.1: New USB device found,
usb 1-2.1: New USB device strings: Mfr=1,
usb 1-2.1: Product: ELV EM 1010 PC
usb 1-2.1: Manufacturer: ELV AG
usb 1-2.1: configuration #1 chosen from 1
usbcore: registered new interface driver
USB Serial support registered for generic
usbcore: registered new interface driver
usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB
ftdi_sio 1-2.1:1.0: FTDI USB Serial Device
usb
usb
usb
usb
usb
usb
1-2.1:
1-2.1:
1-2.1:
1-2.1:
1-2.1:
1-2.1:
Detected FT8U232AM
Number of endpoints 2
Endpoint 1 MaxPacketSize 64
Endpoint 2 MaxPacketSize 64
Setting MaxPacketSize 64
FTDI USB Serial Device
usbcore: registered new interface driver
ftdi_sio: v1.5.0:USB FTDI Serial
Da hier bereits der notwendige FTDI Serial Converters Driver automatisch geladen wurde, brauchen
wir hier nichts weiter mehr händisch konfigurieren. Wir können direkt die Station über die
automatisch angelegten Gerätetreiberdatei /dev/ttyUSB0 wie nachfolgend gezeigt ansprechen.
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Software
Perl Bibliotheken
perl-Device-SerialPort
Da wir zum Auslesen der Verbrauchswerte auf Perl zurückgreifen wollen, installieren wir uns als
erstes das betreffende Programmpaket zum Ansprechen des seriellen Posts perl-Device-SerialPort.
# yum install perl-Device-SerialPort
Was uns dieses perl-Device-SerialPort bietet, entnehmen wir am einfachsten dem rpm.
# rpm -qil perl-Device-SerialPort
Name
: perl-Device-SerialPort
Relocations: (not relocatable)
Version
: 1.04
Vendor: Dag Apt Repository,
http://dag.wieers.com/apt/
Release
: 1.el6.rf
Build Date: Thu 11 Nov 2010
05:44:11 AM CET
Install Date: Thu 26 Jul 2012 04:51:09 PM CEST
Build Host:
lisse.hasselt.wieers.com
Group
: Applications/CPAN
Source RPM: perl-DeviceSerialPort-1.04-1.el6.rf.src.rpm
Size
: 245573
License: Artistic/GPL
Signature
: DSA/SHA1, Thu 11 Nov 2010 07:30:56 AM CET, Key ID
a20e52146b8d79e6
Packager
: Dries Verachtert <[email protected]>
URL
: http://search.cpan.org/dist/Device-SerialPort/
Summary
: Linux/POSIX emulation of Win32::SerialPort functions
Description :
This is a POSIX-based version of the Win32::Serialport module ported by
Joe Doss for the MisterHouse Home Automation Package from Version 0.08
of the Win32 module. He replaced calls to the Win32 API with similar
functions implemented using POSIX calls. While most of the testing has
occurred on linux, the package should work on other POSIX-compliant
Operating Systems.
/usr/bin/modemtest
/usr/lib64/perl5/vendor_perl/Device
/usr/lib64/perl5/vendor_perl/Device/SerialPort.pm
/usr/lib64/perl5/vendor_perl/auto/Device
/usr/lib64/perl5/vendor_perl/auto/Device/SerialPort
/usr/lib64/perl5/vendor_perl/auto/Device/SerialPort/SerialPort.bs
/usr/lib64/perl5/vendor_perl/auto/Device/SerialPort/SerialPort.so
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
5/37
Energie-Funk-Mess-System EM 1000
/usr/share/doc/perl-Device-SerialPort-1.04
/usr/share/doc/perl-Device-SerialPort-1.04/Changes
/usr/share/doc/perl-Device-SerialPort-1.04/MANIFEST
/usr/share/doc/perl-Device-SerialPort-1.04/META.yml
/usr/share/doc/perl-Device-SerialPort-1.04/README
/usr/share/doc/perl-Device-SerialPort-1.04/TODO
/usr/share/doc/perl-Device-SerialPort-1.04/eg
/usr/share/doc/perl-Device-SerialPort-1.04/eg/any_os.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo1.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo2.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo3.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo4.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo5.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo6.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo7.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/demo8.plx
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example1.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example2.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example3.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example4.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example5.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example6.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example7.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/example8.txt
/usr/share/doc/perl-Device-SerialPort-1.04/eg/options.plx
/usr/share/man/man1/modemtest.1.gz
/usr/share/man/man3/Device::SerialPort.3pm.gz
perl-Time-HiRes
Weiter wird noch das Paket perl-Time-HiRes von dem Projekt FHEM benötigt, welches wir noch
installieren.
# yum install perl-Time-HiRes
Was uns dieses perl-Time-HiRes bietet, entnehmen wir am einfachsten dem rpm.
# rpm -qil perl-Time-HiRes
Name
: perl-Time-HiRes
Relocations: (not relocatable)
Version
: 1.9721
Vendor: CentOS
Release
: 127.el6
Build Date: Fri 22 Jun 2012
03:38:59 PM CEST
Install Date: Thu 26 Jul 2012 10:58:43 PM CEST
Build Host:
c6b7.bsys.dev.centos.org
Group
: Development/Libraries
Source RPM:
perl-5.10.1-127.el6.src.rpm
Size
: 57406
License: GPL+ or Artistic
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Signature
: RSA/SHA1, Mon 25 Jun 2012 12:16:43 AM CEST, Key ID
0946fca2c105b9de
Packager
: CentOS BuildSystem <http://bugs.centos.org>
URL
: http://www.perl.org/
Summary
: High resolution alarm, sleep, gettimeofday, interval timers
Description :
The Time::HiRes module implements a Perl interface to the usleep, nanosleep,
ualarm, gettimeofday, and setitimer/getitimer system calls, in other words,
high resolution time and timers. See the "EXAMPLES" section below and the
test
scripts for usage; see your system documentation for the description of the
underlying nanosleep or usleep, ualarm, gettimeofday, and
setitimer/getitimer
calls.
/usr/lib64/perl5/Time/HiRes.pm
/usr/lib64/perl5/auto/Time/HiRes/HiRes.so
/usr/share/man/man3/Time::HiRes.3pm.gz
perl-Compress-Zlib
Schließlich wird noch das Paket perl-Compress-Zlib von dem Projekt FHEM benötigt, welches wir
noch installieren.
# yum install perl-Compress-Zlib -y
Was uns dieses perl-Compress-Zlib bietet, entnehmen wir am einfachsten dem rpm.
# rpm -qil perl-Compress-Zlib
Name
: perl-Compress-Zlib
Relocations: (not relocatable)
Version
: 2.020
Vendor: CentOS
Release
: 127.el6
Build Date: Fri 22 Jun 2012
03:38:59 PM CEST
Install Date: Fri 27 Jul 2012 02:46:02 PM CEST
Build Host:
c6b7.bsys.dev.centos.org
Group
: Development/Libraries
Source RPM:
perl-5.10.1-127.el6.src.rpm
Size
: 52167
License: GPL+ or Artistic
Signature
: RSA/SHA1, Mon 25 Jun 2012 12:17:14 AM CEST, Key ID
0946fca2c105b9de
Packager
: CentOS BuildSystem <http://bugs.centos.org>
URL
: http://www.perl.org/
Summary
: A module providing Perl interfaces to the zlib compression
library
Description :
The Compress::Zlib module provides a Perl interface to the zlib
compression library. Most of the functionality provided by zlib is
available in Compress::Zlib.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
7/37
Energie-Funk-Mess-System EM 1000
The module can be split into two general areas of functionality,
namely in-memory compression/decompression and read/write access to
gzip files.
/usr/lib64/perl5/Compress/Zlib.pm
/usr/lib64/perl5/auto/Compress/Zlib
/usr/lib64/perl5/auto/Compress/Zlib/autosplit.ix
/usr/share/man/man3/Compress::Zlib.3pm.gz
perl-DBI
Abschließend wird noch das Paket perl-DBI und perl-DBD-MySQL von dem Projekt FHEM benötigt,
welches wir noch installieren.
# yum install perl-DBI perl-DBD-MySQL -y
Was uns dieses perl-DBI bietet, entnehmen wir am einfachsten dem rpm.
# rpm -qil perl-DBI
Name
: perl-DBI
Relocations: (not relocatable)
Version
: 1.609
Vendor: CentOS
Release
: 4.el6
Build Date: Fri 20 Aug 2010
02:34:23 AM CEST
Install Date: Fri 27 Jul 2012 07:16:50 PM CEST
Build Host:
c6b1.bsys.dev.centos.org
Group
: Development/Libraries
Source RPM: perlDBI-1.609-4.el6.src.rpm
Size
: 1733598
License: GPL+ or Artistic
Signature
: RSA/8, Sun 03 Jul 2011 06:55:01 AM CEST, Key ID
0946fca2c105b9de
Packager
: CentOS BuildSystem <http://bugs.centos.org>
URL
: http://dbi.perl.org/
Summary
: A database access API for perl
Description :
DBI is a database access Application Programming Interface (API) for
the Perl Language. The DBI API Specification defines a set of
functions, variables and conventions that provide a consistent
database interface independent of the actual database being used.
/usr/bin/dbilogstrip
/usr/bin/dbiprof
/usr/bin/dbiproxy
/usr/lib64/perl5/Bundle
/usr/lib64/perl5/Bundle/DBI.pm
/usr/lib64/perl5/DBD
/usr/lib64/perl5/DBD/DBM.pm
/usr/lib64/perl5/DBD/ExampleP.pm
/usr/lib64/perl5/DBD/File.pm
/usr/lib64/perl5/DBD/Gofer
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
/usr/lib64/perl5/DBD/Gofer.pm
/usr/lib64/perl5/DBD/Gofer/Policy
/usr/lib64/perl5/DBD/Gofer/Policy/Base.pm
/usr/lib64/perl5/DBD/Gofer/Policy/classic.pm
/usr/lib64/perl5/DBD/Gofer/Policy/pedantic.pm
/usr/lib64/perl5/DBD/Gofer/Policy/rush.pm
/usr/lib64/perl5/DBD/Gofer/Transport
/usr/lib64/perl5/DBD/Gofer/Transport/Base.pm
/usr/lib64/perl5/DBD/Gofer/Transport/null.pm
/usr/lib64/perl5/DBD/Gofer/Transport/pipeone.pm
/usr/lib64/perl5/DBD/Gofer/Transport/stream.pm
/usr/lib64/perl5/DBD/NullP.pm
/usr/lib64/perl5/DBD/Proxy.pm
/usr/lib64/perl5/DBD/Sponge.pm
/usr/lib64/perl5/DBI
/usr/lib64/perl5/DBI.pm
/usr/lib64/perl5/DBI/Changes.pm
/usr/lib64/perl5/DBI/Const
/usr/lib64/perl5/DBI/Const/GetInfo
/usr/lib64/perl5/DBI/Const/GetInfo/ANSI.pm
/usr/lib64/perl5/DBI/Const/GetInfo/ODBC.pm
/usr/lib64/perl5/DBI/Const/GetInfoReturn.pm
/usr/lib64/perl5/DBI/Const/GetInfoType.pm
/usr/lib64/perl5/DBI/DBD
/usr/lib64/perl5/DBI/DBD.pm
/usr/lib64/perl5/DBI/DBD/Metadata.pm
/usr/lib64/perl5/DBI/FAQ.pm
/usr/lib64/perl5/DBI/Gofer
/usr/lib64/perl5/DBI/Gofer/Execute.pm
/usr/lib64/perl5/DBI/Gofer/Request.pm
/usr/lib64/perl5/DBI/Gofer/Response.pm
/usr/lib64/perl5/DBI/Gofer/Serializer
/usr/lib64/perl5/DBI/Gofer/Serializer/Base.pm
/usr/lib64/perl5/DBI/Gofer/Serializer/DataDumper.pm
/usr/lib64/perl5/DBI/Gofer/Serializer/Storable.pm
/usr/lib64/perl5/DBI/Gofer/Transport
/usr/lib64/perl5/DBI/Gofer/Transport/Base.pm
/usr/lib64/perl5/DBI/Gofer/Transport/pipeone.pm
/usr/lib64/perl5/DBI/Gofer/Transport/stream.pm
/usr/lib64/perl5/DBI/Profile.pm
/usr/lib64/perl5/DBI/ProfileData.pm
/usr/lib64/perl5/DBI/ProfileDumper
/usr/lib64/perl5/DBI/ProfileDumper.pm
/usr/lib64/perl5/DBI/ProfileDumper/Apache.pm
/usr/lib64/perl5/DBI/ProfileSubs.pm
/usr/lib64/perl5/DBI/ProxyServer.pm
/usr/lib64/perl5/DBI/PurePerl.pm
/usr/lib64/perl5/DBI/Roadmap.pm
/usr/lib64/perl5/DBI/SQL
/usr/lib64/perl5/DBI/SQL/Nano.pm
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
9/37
Energie-Funk-Mess-System EM 1000
/usr/lib64/perl5/DBI/Util
/usr/lib64/perl5/DBI/Util/CacheMemory.pm
/usr/lib64/perl5/DBI/Util/_accessor.pm
/usr/lib64/perl5/Roadmap.pod
/usr/lib64/perl5/TASKS.pod
/usr/lib64/perl5/auto/DBI
/usr/lib64/perl5/auto/DBI/DBI.so
/usr/lib64/perl5/auto/DBI/DBIXS.h
/usr/lib64/perl5/auto/DBI/Driver.xst
/usr/lib64/perl5/auto/DBI/Driver_xst.h
/usr/lib64/perl5/auto/DBI/dbd_xsh.h
/usr/lib64/perl5/auto/DBI/dbi_sql.h
/usr/lib64/perl5/auto/DBI/dbipport.h
/usr/lib64/perl5/auto/DBI/dbivport.h
/usr/lib64/perl5/auto/DBI/dbixs_rev.h
/usr/lib64/perl5/dbixs_rev.pl
/usr/share/doc/perl-DBI-1.609
/usr/share/doc/perl-DBI-1.609/README
/usr/share/doc/perl-DBI-1.609/ex
/usr/share/doc/perl-DBI-1.609/ex/perl_dbi_nulls_test.pl
/usr/share/doc/perl-DBI-1.609/ex/profile.pl
/usr/share/man/man1/dbilogstrip.1.gz
/usr/share/man/man1/dbiprof.1.gz
/usr/share/man/man1/dbiproxy.1.gz
/usr/share/man/man3/Bundle::DBI.3pm.gz
/usr/share/man/man3/DBD::DBM.3pm.gz
/usr/share/man/man3/DBD::File.3pm.gz
/usr/share/man/man3/DBD::Gofer.3pm.gz
/usr/share/man/man3/DBD::Gofer::Policy::Base.3pm.gz
/usr/share/man/man3/DBD::Gofer::Policy::classic.3pm.gz
/usr/share/man/man3/DBD::Gofer::Policy::pedantic.3pm.gz
/usr/share/man/man3/DBD::Gofer::Policy::rush.3pm.gz
/usr/share/man/man3/DBD::Gofer::Transport::Base.3pm.gz
/usr/share/man/man3/DBD::Gofer::Transport::null.3pm.gz
/usr/share/man/man3/DBD::Gofer::Transport::pipeone.3pm.gz
/usr/share/man/man3/DBD::Gofer::Transport::stream.3pm.gz
/usr/share/man/man3/DBD::Proxy.3pm.gz
/usr/share/man/man3/DBD::Sponge.3pm.gz
/usr/share/man/man3/DBI.3pm.gz
/usr/share/man/man3/DBI::Const::GetInfo::ANSI.3pm.gz
/usr/share/man/man3/DBI::Const::GetInfo::ODBC.3pm.gz
/usr/share/man/man3/DBI::Const::GetInfoReturn.3pm.gz
/usr/share/man/man3/DBI::Const::GetInfoType.3pm.gz
/usr/share/man/man3/DBI::DBD.3pm.gz
/usr/share/man/man3/DBI::DBD::Metadata.3pm.gz
/usr/share/man/man3/DBI::FAQ.3pm.gz
/usr/share/man/man3/DBI::Gofer::Execute.3pm.gz
/usr/share/man/man3/DBI::Gofer::Request.3pm.gz
/usr/share/man/man3/DBI::Gofer::Response.3pm.gz
/usr/share/man/man3/DBI::Gofer::Serializer::Base.3pm.gz
/usr/share/man/man3/DBI::Gofer::Serializer::DataDumper.3pm.gz
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
/usr/share/man/man3/DBI::Gofer::Serializer::Storable.3pm.gz
/usr/share/man/man3/DBI::Gofer::Transport::Base.3pm.gz
/usr/share/man/man3/DBI::Gofer::Transport::pipeone.3pm.gz
/usr/share/man/man3/DBI::Gofer::Transport::stream.3pm.gz
/usr/share/man/man3/DBI::Profile.3pm.gz
/usr/share/man/man3/DBI::ProfileData.3pm.gz
/usr/share/man/man3/DBI::ProfileDumper.3pm.gz
/usr/share/man/man3/DBI::ProfileDumper::Apache.3pm.gz
/usr/share/man/man3/DBI::ProfileSubs.3pm.gz
/usr/share/man/man3/DBI::ProxyServer.3pm.gz
/usr/share/man/man3/DBI::PurePerl.3pm.gz
/usr/share/man/man3/DBI::SQL::Nano.3pm.gz
/usr/share/man/man3/DBI::Util::CacheMemory.3pm.gz
/usr/share/man/man3/Roadmap.3pm.gz
/usr/share/man/man3/TASKS.3pm.gz
Was uns das Paket perl-DBD-MySQL bietet, entnehmen wir am einfachsten dem rpm.
# rpm -qil perl-DBD-MySQL
Name
: perl-DBD-MySQL
Relocations: (not relocatable)
Version
: 4.013
Vendor: CentOS
Release
: 3.el6
Build Date: Fri 20 Aug 2010
02:31:30 AM CEST
Install Date: Fri 27 Jul 2012 08:31:39 PM CEST
Build Host:
c6b3.bsys.dev.centos.org
Group
: Development/Libraries
Source RPM: perl-DBDMySQL-4.013-3.el6.src.rpm
Size
: 345831
License: GPL+ or Artistic
Signature
: RSA/8, Sun 03 Jul 2011 06:55:00 AM CEST, Key ID
0946fca2c105b9de
Packager
: CentOS BuildSystem <http://bugs.centos.org>
URL
: http://search.cpan.org/dist/DBD-mysql/
Summary
: A MySQL interface for perl
Description :
An implementation of DBI for MySQL for Perl.
/usr/lib64/perl5/Bundle
/usr/lib64/perl5/Bundle/DBD
/usr/lib64/perl5/Bundle/DBD/mysql.pm
/usr/lib64/perl5/DBD
/usr/lib64/perl5/DBD/mysql
/usr/lib64/perl5/DBD/mysql.pm
/usr/lib64/perl5/DBD/mysql/GetInfo.pm
/usr/lib64/perl5/DBD/mysql/INSTALL.pod
/usr/lib64/perl5/auto/DBD
/usr/lib64/perl5/auto/DBD/mysql
/usr/lib64/perl5/auto/DBD/mysql/mysql.so
/usr/share/doc/perl-DBD-MySQL-4.013
/usr/share/doc/perl-DBD-MySQL-4.013/ChangeLog
/usr/share/doc/perl-DBD-MySQL-4.013/INSTALL.html
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
11/37
Energie-Funk-Mess-System EM 1000
/usr/share/doc/perl-DBD-MySQL-4.013/README
/usr/share/doc/perl-DBD-MySQL-4.013/TODO
/usr/share/man/man3/Bundle::DBD::mysql.3pm.gz
/usr/share/man/man3/DBD::mysql.3pm.gz
/usr/share/man/man3/DBD::mysql::INSTALL.3pm.gz
FHEM
Download
Als erstes laden wir uns das aktuelle Programmarchiv von der FHEM Projektseite auf unseren Rechner.
Hierzu legen wir uns erst noch den entsprechenden Zielordner an, falls noch nicht erfolgt.
# mkdir /usr/local/src/packages
Dann wechseln wir in das Verzeichnis.
# cd /usr/local/src/packages
Im nächsten Schritt holen wir uns nun mit Hilfe von wget das entsprechende Programmarchiv.
# wget http://fhem.de/fhem-5.2.tar.gz
Zu gute Letzt entpacken wir das Archiv, verschieben den Ordner an Ort und Stelle und verlinken
diesen entsprechend noch.
# tar zxvf fhem-5.2.tar.gz
# mv /usr/local/src/packages/fhem-5.2/ /usr/local/src/
# ln -s /usr/local/src/fhem-5.2 /usr/local/src/fhem
Installation
Die Installation beschließen wir nun nur noch mit folgendem Aufruf:
# make install-pgm2
After installation start fhem with
perl /usr/bin/fhem.pl /etc/fhem.cfg
mkdir -p /usr/bin /usr/share/fhem /var/log/fhem
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
mkdir -p /usr/share/doc/fhem /etc /usr/share/man/man1
cp fhem.pl /usr/bin
cp -r FHEM /usr/share/fhem
rm -rf examples_changed
cp -r examples examples_changed
perl -pi -e 's,modpath \.,modpath /usr/share/fhem,' examples_changed/[a-z]*
perl -pi -e 's,([^h]) /tmp,$1 /var/log/fhem,' examples_changed/[a-z]*
mv /etc/fhem.cfg /etc/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`
mv: cannot stat `/etc/fhem.cfg': No such file or directory
make: [install-base] Error 1 (ignored)
cp examples_changed/sample_fhem /etc/fhem.cfg
cp -rp contrib /usr/share/fhem
cp -rp docs/* /usr/share/doc/fhem
cp docs/fhem.man /usr/share/man/man1/fhem.pl.1
gzip -f -9 /usr/share/man/man1/fhem.pl.1
cp -r webfrontend/pgm2/* /usr/share/fhem/FHEM
cp docs/commandref.html docs/faq.html docs/HOWTO.html /usr/share/fhem/FHEM
cp docs/*.png docs/*.jpg /usr/share/fhem/FHEM
cd examples_changed; for i in *; do cp -r $i
/usr/share/fhem/FHEM/example.$i; done
cp examples_changed/sample_pgm2 /etc/fhem.cfg
Stationswerte abfragen
Für die ersten Schritte scheint das Paket FEHM recht geeignet. Zumindest können wir schon mal
damit die ersten (Meß-)Werte auslesen.
Einen ersten Testabruf der Stationsdaten erfolgt mittels em1010.pl; dieses befindet sich unter
/usr/local/src/fhem/contrib/em1010.pl.
# /usr/local/src/fhem/contrib/em1010.pl
Usage: perl em1010.pl serial-device command args
Unseren ersten Stromzähler - der mit der ID 1 - fragen wir also wie folgt ab:
# /usr/local/src/fhem/contrib/em1010.pl /dev/ttyUSB1 getDevStatus 1
Readings
(off
Nr devs
puls/5min
puls.max/5min
cur.energy(off
cur.power
cur.power max
energy h
energy d
energy w
https://dokuwiki.nausch.org/
2):
(off
(off
(off
):
(
(
(off
(off
(off
62071
6): 1
13): 6
15): 443
0.040 kWh
): 0.480 kW
): 0.000 kW
33): 0.380 kWh (h)
37): 13.900 kWh (d)
41): 91.907 kWh (w)
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
RAW
RAW
RAW
RAW
13/37
Energie-Funk-Mess-System EM 1000
total energy
(off 7): 10356.553 kWh (total)
Alarm PA
(off 45): 0 W
Price CF
(off 47): 0.15 EUR/kWh
R/kW EC
(off 49): 150
0300 77f2 8900 014b b417 00f3 0406 00bb
0180 f3b7 26ab 2697 1f17 eab6 2680 268d
1c39 0000 0025 0800 00da 3500 0000 00dc
05dc 05
FHEM - GPL'd server for house automation
Im weiteren Verlauf betrachten wie nun das Softwareprojekt FHEM etwas genauer. Schließlich wollen
wir ja unsere Meßpunkte
1. Haus-Stromzähler
2. EDV-Schrank-Stromzähler
3. Gaszähler
laufend abfragen und die Meßwerte in unsere vorhandene MySQL-Datenbank ablegen und später
graphisch aufbereiten.
Konfiguration
erste Konfiguration
Als erstes passen wir die mitgelieferte Konfigurationsdatei unseren individuellen Gegebenheiten an:
# vim /etc/fhem.cfg
/etc/fhem.cfg
#
# pgm2 / autocreate configfile. Take a look at the other examples for
more.
#
attr global logfile /var/log/fhem/fhem-%Y-%m.log
attr global modpath /usr/share/fhem
# where our
FHEM directory is
attr global port 7072 global
# our TCP/IP port
attr global statefile /var/log/fhem/fhem.save
# where to save the
state of the devices
attr global verbose 3
# "normal" verbosity
(min 1, max 5)
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
attr WEBphone smallscreen
define WEBtablet FHEMWEB 8085 global
attr WEBtablet touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog /var/log/fhem/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate autosave
attr autocreate device_room %TYPE
attr autocreate filelog /var/log/fhem/%NAME-%Y.log
attr autocreate weblink
attr autocreate weblink_room Plots
# Disable this to avoid looking for new USB devices on startup
# Django : 2012-07-27
# initialUsbCheck disabled
# define initialUsbCheck notify global:INITIALIZED usb create
# If the above notify did not helped, then you probably have to enable
some of
# the following lines. Verify first that /dev/xxx ist correct.
#define FHZ FHZ /dev/USB0
#define CUL CUL /dev/ttyACM0@9600 1234
#attr CUL rfmode HomeMatic
#define EUL TCM 310 /dev/ttyACM0@57600
#define BscBor TCM 120 /dev/ttyUSB0@9600
#define BscSmartConnect TCM 310 /dev/ttyUSB0@57600
# Django : 2012-07-27
define EM EM /dev/ttyUSB0 # the serial port of an FHZ 1000 PC
define Hauptzaehler EMWZ 1
define Gaszaehler EMGZ 9
define EDV_Schrank EMEM 5
Paketfilter iptables
Damit Wir mit unserem bevorzugten Webbrowser auf die Webseiten von FHEM zugreifen können,
erweitern wir noch bei Bedarf unseren Paketfilter.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
15/37
Energie-Funk-Mess-System EM 1000
# vim /etc/sysconfig/iptables
...
# Django
-A INPUT
-A INPUT
-A INPUT
#
: 2012-07-27 Port 8083 für FHEM freigeschaltet
-m state --state NEW -m tcp -p tcp --dport 8083 -j ACCEPT
-m state --state NEW -m tcp -p tcp --dport 8084 -j ACCEPT
-m state --state NEW -m tcp -p tcp --dport 8085 -j ACCEPT
...
Zum Aktivieren der neuenRegeln führn wir nun noch einen Restart des Daemons durch.
# service iptables restart
Programmstart
Wir starten nunmehr zum ersten mal FHEM.
# fhem.pl /etc/fhem.cfg
Im Logfile /var/log/fhem/fhem-2009-01.log wird uns der Start entsprechend quittiert:
/var/log/fhem/fhem-2009-01.log
2012.07.27
2012.07.27
2012.07.27
2012.07.27
2012.07.27
2012.07.27
14:20:26
14:20:26
14:20:26
14:20:26
14:20:26
14:20:26
2:
2:
2:
2:
3:
3:
Telnet port 7072 opened
FHEMWEB port 8083 opened
FHEMWEB port 8084 opened
FHEMWEB port 8085 opened
EM opening device /dev/ttyUSB0
EM opened device /dev/ttyUSB0
In der Prozessliste finden wir das laufende Programm ebenso:
# ps aux | grep fhem
root
4463 0.0 1.1 150568 11716 pts/1
/usr/bin/perl /usr/bin/fhem.pl /etc/fhem.cfg
S
14:20
0:00
Mit dem Befehl netstat -tulpen können wir auch noch überprüfen, ob die Ports 8083, 8084 und 8085
auch geöffnet wurden.
# netstat -tulpen | grep 808
tcp
0
0 0.0.0.0:8083
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
0.0.0.0:*
Last update:
26.06.2014 11:56.
LISTEN
tcp
LISTEN
tcp
LISTEN
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
0
0
0
0
0
410542
4463/perl
0 0.0.0.0:8084
410543
4463/perl
0 0.0.0.0:8085
410544
4463/perl
0.0.0.0:*
0.0.0.0:*
Nun rufen wir die Statusseite von FHEM in unserem bevorzugten Browser auf.
$ firefox http://10.0.0.20:8083/fhem
Über den Menüpunkt [Everything] können wir uns die Detail zu unserem Gerät anzeigen lassen.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
17/37
Energie-Funk-Mess-System EM 1000
Über den FHEM-Befehl shutdown können wir unseren ersten Test beenden.
Im Logfile wird uns dies entsprechend quittiert:
2012.07.27 14:31:44 0: Server shutdown
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Der status unseres FHEM-Gerätes wurde in der Logdatei /var/log/fhem/fhem.save gesichert.
# cat /var/log/fhem/fhem.save
/var/log/fhem/fhem.save
#Fri Jul 27 14:31:44 2012
setstate EDV_Schrank 0.37 kW
setstate EDV_Schrank 2012-07-27 14:26:44 5min_pulses 37
setstate EDV_Schrank 2012-07-27 14:26:44 5min_pulses_max 43
setstate EDV_Schrank 2012-07-27 14:26:44 alarm_PA_W
setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh 154.483
setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_d 9.055
setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_h 0.376
setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_w 64.873
setstate EDV_Schrank 2012-07-27 14:26:44 power_kW 0.370
setstate EDV_Schrank 2012-07-27 14:26:44 power_kW_max 0.430
setstate EDV_Schrank 2012-07-27 14:26:44 price_CF 0.150
setstate Gaszaehler 0.12 m3ph
setstate Gaszaehler 2012-07-27 14:26:44 5min_pulses 1
setstate Gaszaehler 2012-07-27 14:26:44 Rperm3_EC 100
setstate Gaszaehler 2012-07-27 14:26:44 act_flow_m3 0.010
setstate Gaszaehler 2012-07-27 14:26:44 alarm_PA Watt
setstate Gaszaehler 2012-07-27 14:26:44 cum_m3 0.010
setstate Gaszaehler 2012-07-27 14:26:44 m3ph 0.120
setstate Gaszaehler 2012-07-27 14:26:44 price_CF 0.630
setstate Hauptzaehler 0.48 kW
setstate Hauptzaehler 2012-07-27 14:31:44 5min_pulses 6
setstate Hauptzaehler 2012-07-27 14:31:44 RperKW_EC 150
setstate Hauptzaehler 2012-07-27 14:31:44 alarm_PA Watt
setstate Hauptzaehler 2012-07-27 14:31:44 cum_kWh 0.206
setstate Hauptzaehler 2012-07-27 14:31:44 energy 0.040
setstate Hauptzaehler 2012-07-27 14:31:44 power 0.480
setstate Hauptzaehler 2012-07-27 14:31:44 price_CF 0.150
setstate Hauptzaehler 2012-07-27 14:31:44 summary Pulses: 6 Energy:
0.040 Power: 0.480 Cum: 0.206
setstate Logfile active
setstate autocreate active
setstate global <no definition>
erweiterte Konfiguration
Startscript
Damit unser FHEM-Daemon automatisch beim Hochfahren des Rechners gestartet werden kann,
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
19/37
Energie-Funk-Mess-System EM 1000
legen wir uns noch ein entsprechendes Startscript an.
# vim /etc/init.d/fhem
/etc/init.d/fhem
#!/bin/sh
#
#
#
#
#
#
#
#
#
$Id: fhem 19 2012-07-27 21:33:44Z dws $
example init script for fhem
chkconfig: 2345 82 28
description: FHEM Home automation.
processname: fhem.pl
Written by Django
DAEMON=/usr/bin/fhem.pl
PIDFILE=/var/run/fhem.pid
OPTION="/etc/fhem.conf"
PROG="FHEM"
test -x $DAEMON || exit
. /lib/lsb/init-functions
case "$1" in
start)
echo -n $"Starting $PROG: "
$DAEMON $OPTION
echo "
[ OK ]"
;;
stop)
pid=`ps -ef | grep "fhem.pl" | grep -v grep | awk '{ print $2}'`
echo -n $"Stopping $PROG: "
kill $pid
echo "
[ OK ]"
;;
status)
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "$0 is not running"
else
echo "$0 is running"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
exit
Nun können wir bequem den FHEM-Daemon starten und Stoppen.
# service fhem start
Starting FHEM:
[
OK
]
[
OK
]
Oder eben stoppen:
# service fhem stop
Stopping FHEM:
Damit nun der Daemon beim Starten des Systems automatisch gestartet werden kann, legen wir die
notwendigen Symlinks automatisch an.
# chkconfig fhem on
Wenn wir uns unsicher sind, ob der Daemon beim Systemstart in den entsprechenden Runleveln auch
gestartet wird, vergewissern wir uns mit folgendem Aufruf.
# chkconfig --list | grep fhem
fhem
0:off
1:off
2:on
3:on
4:on
5:on
6:off
Apache V-Host mit Authentifizierung
In der Regel wollen wir ja nicht, dass jedermann, also quasi Hinz & Kunz auf unsere FHEM-Web-Seite
zugreifen kann. FHEM selbst stellt uns hierzu keine Einstellungsoptionen zur Verfügung. Wir greifen
daher auf die Dienste unseres Apache-Webservers zurück.
Neben der Benutzerauthentifizierung gegen unseren zentralen LDAP-Server sichern wir noch die
Übertragung mit Hilfe eines SSL-Zertifikats ab.
In die Konfigurationsdatei fü unsere vHosts /etc/httpd/conf.d/vhosts.conf tragen wir hierzu ein.
# vim /etc/httpd/conf.d/vhosts.conf
/etc/httpd/conf.d/vhosts.conf
#
# FHEM : fhem.nausch.org
#
<VirtualHost *:80>
ServerAdmin [email protected]
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
21/37
Energie-Funk-Mess-System EM 1000
ServerName fhem.nausch.org
ServerAlias www.fhem.nausch.org
ServerPath /
<Location />
Options -Indexes FollowSymLinks
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.20/32
Allow from 10.0.10.0/26
</Location>
Redirect / https://fhem.nausch.org/
ErrorLog logs/fhem_error.log
CustomLog logs/fhem_access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName fhem.nausch.org
ServerAlias www.fhem.nausch.org
ServerPath /
<Location />
Options -Indexes FollowSymLinks
AuthType Basic
AuthName "FHEM Home Automation on vml000090 nausch.org"
AuthBasicProvider ldap
AuthzLDAPAuthoritative On
AuthLDAPURL
"ldap://ldap.dmz.nausch.org:389/ou=People,dc=nausch,dc=org?uid"
AuthLDAPBindDN "cn=TechnischerUser,dc=nausch,dc=org"
AuthLDAPBindPassword
"Das_streng_geheime_Passwort_das_keiner_kennt"
Require ldap-user django michael
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.20/32
Allow from 10.0.10.0/26
</Location>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /fhem http://10.0.0.20:8083/fhem
ProxyPassReverse /fhem http://10.0.0.20:8083/fhem
ErrorLog logs/fhem_error.log
CustomLog logs/fhem_access.log combined
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
</VirtualHost>
Bevor wir den Apache-Webserver durchstarten überprüfen wir noch die Konfigurationsdatei auf
schreib und Tipp-Fehler.
# service httpd configtest
Syntax OK
Da kein Fehler enthalten ist, starten wir nun zur Aktivierung den Webserver einmal durch.
# service httpd condrestart
Stopping httpd:
Starting httpd:
[
[
OK
OK
]
]
Wir erreichen nun unseren vHost für FHEM ganz einfach via www.fhem.nausch.org. Geben wir beim
Verbindungsprotokoll „nur“ http statt https ein, werden wir direkt zur verschlüsselten Seite
weitergeleitet.
$ firefox http://fhem.nausch.org
erweiterte iptables Paketfilterregel
Wir haben zwar im vorgenannten Beispiel bereits über die Apache-eigenen Regeln den Zugriff auf
bestimmte Hosts beschränkt. Zur Sicherheit werden wir aber nun die Paketfilterregeln noch etwas
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
23/37
Energie-Funk-Mess-System EM 1000
strenger auslegen.
# vim /etc/sysconfig/iptables
...
# Django : 2012-07-27 Port 8083 von IP-Adresse 10.0.0.90 für FHEM
freigeschaltet
-A INPUT -s 10.0.0.90 -i eth1 -m tcp -p tcp --dport 8083 -j ACCEPT
#
...
Zum Aktivieren der neuenRegeln führn wir nun noch einen Restart des Daemons durch.
# service iptables restart
Datenbank-Konfiguration
Im Verzeichnis /usr/local/src/fhem/contrib/dblog/ werden uns Vorlagen für unsere
Datenbankeinstellung mitgeliefert, die wir nun nachfolgend zu Rate ziehen werden.
Datenbankdefinition
Die Konfiguration der nötigen Tabellen nehmen wir mit Hilfe der von FHEM mitgelieferten Schematas
vor. Dazu nutzen wir entweder direkt den Konsolenzugang, oder wir verwenden phpMyAdmin.
1. Datenbank anlegen
Als erstes legen wir die Datenbank an. MySQL frägt uns bei den nachfolgenden Definitionen
nach dem Passwort unseres mysql-Superusers root.
# mysql -h 127.0.0.1 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights
reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
mysql> create database fhem;
Query OK, 1 row affected (0.11 sec)
2. neuen Benutzer anlegen
Mit folgendem Befehl legen wir uns einen neuen Nutzer an:
mysql> CREATE USER 'fhemdatabaseuser'@'vml000020.dmz.nausch.org'
IDENTIFIED BY 'databasepassword';
Query OK, 0 rows affected (0.00 sec)
mysql>
sowie
mysql> CREATE USER 'fhemdatabaseuser'@'10.0.0.20' IDENTIFIED BY
'databasepassword';
Query OK, 0 rows affected (0.00 sec)
mysql>
3. Benutzerprivilegien setzen und zuweisen
Anschließend setzen wir die Benutzerrechte unseres gerade angelegten Datenbanknutzers.
mysql> GRANT ALL PRIVILEGES ON fhem.* TO
'fhemdatabaseuser'@'vml000020.dmz.nausch.org' IDENTIFIED BY
'databasepassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS
0;
Query OK, 0 rows affected (0.01 sec)
mysql>
und
mysql> GRANT ALL PRIVILEGES ON fhem.* TO 'fhemdatabaseuser'@'10.0.0.20'
IDENTIFIED BY 'databasepassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR
0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0
MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.01 sec)
mysql>
4. Rechte des Nutzers in der Datenbank neu laden
Im letzten Schritt laden wir nun die Rechte unseres neuen Datenbankusers.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
5. mySQL-Datenbanktabellen anlegen
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
25/37
Energie-Funk-Mess-System EM 1000
Aus der Vorlagedatei /usr/local/src/fhem/contrib/dblog/fhemdb_create.sql übernehmen
wir nun die Tabellendefinition und legen diese an. Zuvor benutzen wir noch die richtige
Datenbank fhem, wie wir zuvor angelegt haben.
mysql> use fhem;
Database changed
Anschließend legen wir die beiden Tabellen an.
mysql> CREATE TABLE history (TIMESTAMP TIMESTAMP, DEVICE varchar(32),
TYPE varchar(32), EVENT varchar(64), READING varchar(32), VALUE
varchar(32), UNIT varchar(32));
Query OK, 0 rows affected (0.08 sec)
und
mysql> CREATE TABLE current (TIMESTAMP TIMESTAMP, DEVICE varchar(32),
TYPE varchar(32), EVENT varchar(64), READING varchar(32), VALUE
varchar(32), UNIT varchar(32));
Query OK, 0 rows affected (0.13 sec)
6. mySQL-Datenbankverbindung beenden
Unsere Konfiguration unseres neuen Datenbanknutzers ist hiermit beendet und wir können die
Verbindung zur Datenbank wieder schließen.
mysql> exit
Bye
Zugangstest
Als nächstes überprüfen wir, ob der zuvor angelegt User/Zugang auch funktioniert.
# mysql -D fhem -u fhemuser -h mysql-host -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2034
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql> show tables;
+----------------+
| Tables_in_fhem |
+----------------+
| current
|
| history
|
+----------------+
2 rows in set (0.00 sec)
mysql> quit
Bye
erweiterte Konfiguration
In der README unter /usr/local/src/fhem-4.5/contrib/dblog finden wir weitere Angaben zur
Konfiguration:
# less /usr/local/src/fhem/contrib/dblog/README
/usr/local/src/fhem-4.5/contrib/dblog/README
For usage instruction see commandref.html, section define
2007-12-30bn
- 93_DbLog.pm
copy this file into <modpath>/FHEM
- db.conf
sample database configuration file
- fhemdb_create.sql
sample sql command to create a mysql database for logging purposes
- fhemdb_get.pl
sample perl script for retrieving the current (latest) data from
the logging database
1. Wir kopieren also die Datei 93_DbLog.pm in unseren modpath.
# cp /usr/local/src/fhem/contrib/dblog/93_DbLog.pm
/usr/share/fhem/FHEM/<code>
- Anschließend kopieren wir die Datenbank-Konfigurationsdatei nach
//**/etc/**//. <code> # cp /usr/local/src/fhem/contrib/dblog/db.conf
/etc/fhem_db.conf
2. Dann bearbeiten wir die gerade kopierte Konfigurationsdatei und tragen dort unsere
benutzerspezifischen Änderungen ein.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
27/37
Energie-Funk-Mess-System EM 1000
# vim /etc/fhem_db.conf
/etc/fhem_db.conf
#
# database configuration file
#
#
#
%dbconfig= (
connection =>
"mysql:database=fhem;host=databasehost;port=3306",
user => "fhemdatabaseuser",
password => "databasepassword",
);
3. Abschließend erweitern wir nun noch unsere Hauptkonfigurationsdatei von FHEM /etc/fhem.cfg
um nachfolgende Definitionen.
# vim /etc/fhem.cfg
Unser Hauptkonfigurationsdatei /usr/local/etc&fhem/fhem.cfg erweitern wir um folgende
Definitionen:
Definition der beiden Strommessstellen
define Hauptzaehler EMWZ 1
define EDV_Schrank EMEM 5
# Erst einmal alle Meldungen in die Datenbank schreiben
define logdb DbLog /usr/local/etc/fhem/db.conf .*:.*
Nach dem Start unseres Serverdienstes fhem.pl erhalten wir eine entsprechende positive Meldung
im Logfile.
# fhem.pl /etc/fhem.conf
2012.07.27 20:35:39 2: Telnet port 7072 opened
2012.07.27 20:35:39 2: FHEMWEB port 8083 opened
2012.07.27 20:35:39 2: FHEMWEB port 8084 opened
2012.07.27 20:35:39 2: FHEMWEB port 8085 opened
2012.07.27 20:35:39 3: EM opening device /dev/ttyUSB0
2012.07.27 20:35:39 3: EM opened device /dev/ttyUSB0
2012.07.27 20:36:46 3: Connecting to database
mysql:database=fhem;host=10.0.0.30;port=3306 with user fhemdatenbankuser
2012.07.27 20:36:46 3: Connection to db
mysql:database=fhem;host=datenbankhost.dmz.nausch.org;port=3306 established
2012.07.27 20:36:46 0: Server started (version 5.2 from 2011-12-31 ($Id:
fhem.pl 1159 2011-12-31 13:31:58Z rudolfkoenig $), pid 1955)
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
In unserer MySQL-Datenbanktabelle tauchen die entsprechenden Werte auf:
Ebenso werden in der Statusübersicht im Browserfenster die beiden definierten Meßpunkte angezeigt:
Zum Abfragen der MySQL-Datenbank kann das mitgelieferte Programm fhemdb_get.pl benutzt
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
29/37
Energie-Funk-Mess-System EM 1000
werden. Dieses kopieren wir als erstes nach /usr/local/bin
# cp /usr/local/src/fhem/contrib/dblog/fhemdb_get.pl /usr/local/bin/
Anschließend passen wir noch die Datenbankdefinitionen in dem Script unseren lokalen Bedürfnissen
nach an.
# vim /usr/local/bin/fhemdb_get.pl
/usr/local/bin/fhemdb_get.pl
#!/usr/bin/perl
#
################################################################
#
# Copyright notice
#
# (c) 2007 Copyright: Dr. Boris Neubert (omega at online dot de)
# All rights reserved
#
# This script free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# The GNU General Public License can be found at
# http://www.gnu.org/copyleft/gpl.html.
# A copy is found in the textfile GPL.txt and important notices to the
license
# from the author is found in LICENSE.txt distributed with these
scripts.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# This copyright notice MUST APPEAR in all copies of the script!
#
################################################################
#
# this script returns the current reading for a device stored in
# the fhem logging database
#
# Usage:
#
fhemdb_get.pl <device> <reading> [<reading> ...]
# Example:
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
#
#
#
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
fhemdb_get.pl ext.ks300 temperature humidity
#
# global configuration
#
my $dbconn
=
"mysql:database=fhem;host=datenbankhost.dmz.nausch.org;port=3306";
my $dbuser
= "fhemdatenbankuser";
my $dbpassword = "fhemdatenbankpassword";
#
# nothing to change below this line
#
use strict;
use warnings;
use DBI;
(@ARGV>=2) || die "Usage: fhemdb_get.pl <device> <reading> [<reading>
... ]";
my $device= $ARGV[];
my @readings=@ARGV; shift @readings;
my $set= join(",", map({"\'" . $_ . "\'"} @readings));
my $dbh= DBI->connect_cached("dbi:$dbconn", $dbuser, $dbpassword) ||
die "Cannot connect to $dbconn: $DBI::errstr";
my $stm= "SELECT READING, VALUE FROM current WHERE
(DEVICE='$device') AND
(READING IN ($set))";
my $sth= $dbh->prepare($stm) ||
die "Cannot prepare statement $stm: $DBI::errstr";
my $rc= $sth->execute() ||
die "Cannot execute statement $stm: $DBI::errstr";
my %rs;
my $reading;
my $value;
while( ($reading,$value)= $sth->fetchrow_array) {
$rs{$reading}= $value;
}
foreach $reading (@readings) {
$value= $rs{$reading};
$value= "NULL" if(!defined($value));
print "$reading:$value ";
}
print "\n";
die $sth->errstr if $sth->err;
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
31/37
Energie-Funk-Mess-System EM 1000
$dbh->disconnect();
Zum Abfragen des aktuellen Zählerverbrauchswert unseres Hauptzählers verwenden wir folgende
Syntax: fhemdb_get.pl <device> <reading> [<reading> …], also zum Beispiel:
# fhemdb_get.pl Hauptzaehler cum_kWh power
cum_kWh:5.656 power:0.720
Datenbank-Loglevel anpassen
Für die ersten Test ist die Angaben von .*:.* in der Konfigurationsdatei sicher hilfreich, jedoch für den
laufenden Betrieb kontraproduktiv. Wir geben also über eine passende REXEXP an, welche Werte wir
zukünftig nur noch in der MySQL-Tabelle archivieren wollen.
Unser Konfigurationsdatei /etc/fhem.conf erweitern wir daher um folgende Definitionen:
# vim /etc/fhem.conf
/etc/fhem.conf
#
# pgm2 / autocreate configfile. Take a look at the other examples for
more.
#
attr global logfile /var/log/fhem/fhem-%Y-%m.log
attr global modpath /usr/share/fhem
# where our
FHEM directory is
attr global port 7072 global
# our TCP/IP port
attr global statefile /var/log/fhem/fhem.save
# where to save the
state of the devices
attr global verbose 3
# "normal" verbosity
(min 1, max 5)
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
attr WEBphone smallscreen
define WEBtablet FHEMWEB 8085 global
attr WEBtablet touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog /var/log/fhem/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate autosave
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
attr autocreate device_room %TYPE
attr autocreate filelog /var/log/fhem/%NAME-%Y.log
attr autocreate weblink
attr autocreate weblink_room Plots
# Disable this to avoid looking for new USB devices on startup
# Django : 2012-07-27
# initialUsbCheck disabled
# define initialUsbCheck notify global:INITIALIZED usb create
# If the above notify did not helped, then you probably have to enable
some of
# the following lines. Verify first that /dev/xxx ist correct.
#define FHZ FHZ /dev/USB0
#define CUL CUL /dev/ttyACM0@9600 1234
#attr CUL rfmode HomeMatic
#define EUL TCM 310 /dev/ttyACM0@57600
#define BscBor TCM 120 /dev/ttyUSB0@9600
#define BscSmartConnect TCM 310 /dev/ttyUSB0@57600
# Django : 2012-07-27
define EM EM /dev/ttyUSB0 # the serial port of an FHZ 1000 PC
define Hauptzaehler EMWZ 1
define Gaszaehler EMGZ 9
define EDV_Schrank EMEM 5
# Django : 2012-07-27
# Erst einmal alle Meldungen in die Datenbank schreiben
#define logdb DbLog /etc/fhem_db.conf .*:.*
# Django : 2012-07-27
# Nur noch die aktuellen verbrauchswerte in die MySQL schreiben
define logdb DbLog /etc/fhem_db.conf
Hauptzaehler:power.*|EDV_Schrank:power_kW\b.*|Gaszaehler:act_flow_m3.*
Mit einem rereadcfg veranlassen wir nun, dass die neue Konfigurationseinstellung(en) aktiv werden.
Graphische Datenaufbereitung mit cacti
Die optische Aufbereitung der hinterlegten Verbrauchswerte in der MySQLDatenbank nehmen wir mit Hilfe von Cacti vor. Die hierzu notwendige Installation
von Cacti ist im Dokuwiki unter Serverüberwachung mittels SNMP, RRD-Tool und
Cacti ausführlich beschrieben.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
33/37
Energie-Funk-Mess-System EM 1000
Die Konfiguration(en) zum Darstellen unserer Energieverbrauchswerte (Gas und Strom) setzt auf
einen funktionstüchtigen Cacti-Server auf und ist im Kapitel Energieverbrauch bei den Cacti
Beispielskonfigurationen beschrieben .
Gaszähler
Die optische Erkennung der Walzendrehungen haben mit dem von ELV
mitgelieferten „optischen Auge“ nie so recht funktioniert - da die Erkennung
wohl nur in einer sehr eingegrenzten Drehgeschwindigkeit zuverlässig
funktioniert. Ich habe mir daher bei der Firma Ernst Heitland für meinen
Gaszähler einen passenden Reedkontakt (ACTARIS 951-858-06 08 30/1004)
besorgt.
Der Anschluß des Reedkontaktes erfolgt an den Funk-Sensor Gaszähler EM 1000-GZ und EM 1000GZS ohne Netzteil. Das Gerät ist auch als Bausatz: Funk-Sensor Gaszähler EM 1000-GZ und EM 1000GZS erhältlich. Den Schließkontakt des Heitland-Reed-Kontaktes habe ich dabei einfach zwischen ST6
und ST3, und den Öffner zwischen ST5 und ST4 geklemmt und die originale Sensoreinheit entsorgt.
Die Klemmen bezeichnen dabei die Anschlussklemmen der Sensoreinheit EM 1000-GZS. Bild 5 auf
Seite 5 des vorgenannten PDFs illustriert die Klemmpunkte.
Die Definition des Ausgabegraphen ist hier dokumentiert:
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
(Haupt)-Stromzähler
Zum Erfassen des Stromverbrauches nutze ich den EM 1000-WZ, der an Hand der
roten Markierung der Drehscheibe am Zähler den Verbrauch erfassen kann.
Die Definition des Ausgabegraphen ist hier dokumentiert:
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
35/37
Energie-Funk-Mess-System EM 1000
(EDV)-Stromzähler
Zum Erfassen des Stromverbrauches nutze ich den EM 1000-HSM, der direkt im
Stromkreis der Zuleitung zum EDV-Schrank hängt, den Verbrauch misst und weiter
gibt.
Die Definition des Ausgabegraphen ist hier dokumentiert:
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update:
26.06.2014 11:56.
fun:energie-funk-mess-system_em_1000 https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Stromzähler
Den Stromverbrauch, also EDV-Schrank und Gesamthaus ist in nachfolgendem Graphen überlagert
dargestellt.
https://dokuwiki.nausch.org/
Printed on 31.03.2017 05:58.
31.03.2017 05:58.
37/37
Energie-Funk-Mess-System EM 1000
From:
https://dokuwiki.nausch.org/ - Linux - Wissensdatenbank
Permanent link:
https://dokuwiki.nausch.org/doku.php/fun:energie-funk-mess-system_em_1000
Last update: 26.06.2014 11:56.
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Herunterladen