fun:energie-funk-mess-system_em_1000

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
fun:energie-funk-mess-system_em_1000 [26.06.2014 09:56. ] djangofun:energie-funk-mess-system_em_1000 [08.10.2020 07:14. ] (aktuell) – [Apache V-Host mit Authentifizierung] django
Zeile 1: Zeile 1:
 ====== Energie-Funk-Mess-System EM 1000 ====== ====== Energie-Funk-Mess-System EM 1000 ======
-{{ :fun:serverschrank.png?101|Netzwerkschrank}}+{{ :fun:serverschrank.png?200|Netzwerkschrank}}
 Zum Überwachen des Gas- und Stromverbrauchs nutze ich seit Januar 2009 das [[http://www.elv.de/Empfangs-Anzeigegerät-EM-1010/x.aspx/cid_74/detail_10/detail2_15910|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. Zum Überwachen des Gas- und Stromverbrauchs nutze ich seit Januar 2009 das [[http://www.elv.de/Empfangs-Anzeigegerät-EM-1010/x.aspx/cid_74/detail_10/detail2_15910|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 ===== ===== Hardware =====
-{{:fun:em1010pc.png?100 |ELV EM1010}}+{{:fun:em1010pc.png?175|ELV EM1010}} \\
  
 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.  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 7.x ====
  
-==== CentOS 5.x ==== +Informationen über den Energie-Monitor können wir mit Hilfe des Befehls ''usb-devices'' aus dem RPM-Paket **usbutils** dem System abverlangen.
-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 [[wetter:ws500:start]] 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: +   # usb-devices 
-   # lsusb  +<code>... 
-   Bus 003 Device 008: ID 0403:e0ef Future Technology Devices International, Ltd +
-Alternativ können wir diese auch wie folgt ermitteln: +
-<code># cat /proc/bus/usb/devices+
  
-... +T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  Spd=12  MxCh= 0
-T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  Spd=12  MxCh= 0+
 D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
-P:  Vendor=0403 ProdID=e0ef Rev= 2.00+P:  Vendor=0403 ProdID=e0ef Rev=02.00
 S:  Manufacturer=ELV AG S:  Manufacturer=ELV AG
 S:  Product=ELV EM 1010 PC S:  Product=ELV EM 1010 PC
-C:#Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA+C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=44mA
 I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
-E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms 
-E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms</code> 
-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: +
-<code>Jan  7 20:43:17 nss kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device +
-Jan  7 20:43:17 nss kernel: ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected +
-Jan  7 20:43:17 nss kernel: drivers/usb/serial/ftdi_sio.c: Detected FT8U232AM +
-Jan  7 20:43:17 nss kernel: usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB2 +
-Jan  7 20:43:17 nss kernel: usbcore: registered new driver ftdi_sio +
-Jan  7 20:43:17 nss kernel: drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver</code> +
-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 wesentlich mehr als bei CentOS 5.x ausgegeben: +
-<code>Jul 26 16:49:45 vml000020 kernel: usb 1-2: new full speed USB device number 3 using uhci_hcd +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: New USB device found, idVendor=0000, idProduct=0000 +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: Product: QEMU USB Hub +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: Manufacturer: QEMU 0.12.1 +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: SerialNumber: 314159 +
-Jul 26 16:49:45 vml000020 kernel: usb 1-2: configuration #1 chosen from 1 choice +
-Jul 26 16:49:45 vml000020 kernel: hub 1-2:1.0: USB hub found +
-Jul 26 16:49:45 vml000020 kernel: hub 1-2:1.0: 8 ports detected +
-Jul 26 16:49:46 vml000020 kernel: usb 1-2.1: new full speed USB device number 4 using uhci_hcd +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: New USB device found, idVendor=0403, idProduct=e0ef +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Product: ELV EM 1010 PC +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Manufacturer: ELV AG +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: configuration #1 chosen from 1 choice +
-Jul 26 16:49:47 vml000020 kernel: usbcore: registered new interface driver usbserial +
-Jul 26 16:49:47 vml000020 kernel: USB Serial support registered for generic +
-Jul 26 16:49:47 vml000020 kernel: usbcore: registered new interface driver usbserial_generic +
-Jul 26 16:49:47 vml000020 kernel: usbserial: USB Serial Driver core +
-Jul 26 16:49:47 vml000020 kernel: USB Serial support registered for FTDI USB Serial Device +
-Jul 26 16:49:47 vml000020 kernel: ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Detected FT8U232AM +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Number of endpoints 2 +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Endpoint 1 MaxPacketSize 64 +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Endpoint 2 MaxPacketSize 64 +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: Setting MaxPacketSize 64 +
-Jul 26 16:49:47 vml000020 kernel: usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0 +
-Jul 26 16:49:47 vml000020 kernel: usbcore: registered new interface driver ftdi_sio +
-Jul 26 16:49:47 vml000020 kernel: ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver+
 </code> </code>
-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. 
-===== 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 +Mit dem Befehl **''lshw''** können wir uns ebenso anzeigen lassenob das Energie-Funk-Mess-System angesteckt und erkannt wirdDa der USB-Stick unter die Klasse ''generic'' fällt suchen wir gezielt nach diesen Geräte-Typus.
-<code>Name        : perl-Device-SerialPort       Relocations: (not relocatable) +
-Version     : 1.04                              Vendor: Dag Apt Repositoryhttp://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-Device-SerialPort-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 <dries@ulyssis.org> +
-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 +
-/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 +
-</code>+
  
-=== perl-Time-HiRes === +   # lshw -C generic 
-Weiter wird noch das Paket **perl-Time-HiRes** von dem Projekt **FHEM** benötigt, welches wir noch installieren. +<code>  *-usb                      
-   # yum install perl-Time-HiRes+       description: Generic USB device 
 +       product: ELV EM 1010 PC 
 +       vendor: ELV AG 
 +       physical id: 2 
 +       bus info: usb@2:2 
 +       version: 2.00 
 +       capabilities: usb-1.10 
 +       configuration: driver=ftdi_sio maxpower=44mA speed=12Mbit/s 
 + ...</code>
  
-Was uns dieses **perl-Time-HiRes** bietet, entnehmen wir am einfachsten dem rpm. +Mit Hilfe des Befehls ''lsusb'' aus dem RPM-Paket **usbutils** können wir auch die **Produkt-** und **Hersteller**-Identifikationsnummer des Energie-Monitors ermitteln
-   # rpm -qil perl-Time-HiRes +   # lsusb
-<code>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 +
-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 +
-</code>+
  
-=== perl-Compress-Zlib === +  Bus 002 Device 002: ID 0403:e0ef Future Technology Devices International, Ltd 
-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+Zur Kommunikation mit dem Messadapter erfolgt über die zugehörig angelegte Geräte-Datei **''/dev/ttyUSBx''** - in unserem Konfigurationsbeispeil ist dies **ttyUSB0**. 
-   # rpm -qil perl-Compress-Zlib +   # ls -alF /dev/ttyUSB* 
-<code>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.+
  
-The module can be split into two general areas of functionality, +  crw-rw----. 1 root dialout 188, 0 Oct  7 21:15 /dev/ttyUSB0
-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 +
-</code>+
  
-=== perl-DBI === +===== Software ===== 
-Abschließend wird noch das Paket **perl-DBI** und **perl-DBD-MySQL** von dem Projekt **FHEM** benötigtwelches wir noch installieren. +==== Perl Bibliotheken ==== 
-   # yum install perl-DBI perl-DBD-MySQL -y+Zum Kommunikation unseres Servers mit dem **Energie-Funk-Mess-System EM 1000** verwenden wir das Projekt **[[http://fhem.de/fhem.html|FHEM]]**. Eine sehr gute Einstiegslektüre ist hierbei das verlinkte Dokument **[[http://fhem.de/Heimautomatisierung-mit-fhem.pdf|Heimautomatisierungmit fhem - Für Einsteiger –]]**. Zum Auslesen des Datenloggers benötigen wir noch ein paart Perl-Bibliothekendie wir uns nun noch installieren wollen
 +   # yum install perl-Device-SerialPort perl-Time-HiRes perl-Compress-Zlib -y
  
-Was uns dieses **perl-DBI** bietet, entnehmen wir am einfachsten dem rpm. +Da wir später die Messergebnisse auch in unserer **[[centos:mariadb|MariaDB Datenbank]]** speichern wollen benötigen wir noch die passenden Perl-Bibliothekenwelche wir nun auch noch installieren werden
-   # rpm -qil perl-DBI +   # yum install perl-DBI perl-DBD-MySQL -y
-<code>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: perl-DBI-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 +
-/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 +
-/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 +
-/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 +
-</code> +
-Was uns das Paket **perl-DBD-MySQL** bietetentnehmen wir am einfachsten dem rpm+
-   # rpm -qil perl-DBD-MySQL +
- +
-<code>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-DBD-MySQL-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 +
-/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 +
-</code>+
  
 ==== FHEM ==== ==== FHEM ====
 === Download === === Download ===
-Als erstes laden wir uns das aktuelle [[http://fhem.de/fhem-5.2.tar.gz|Programmarchiv]] von der [[http://fhem.de/fhem.html|FHEM Projektseite]] auf unseren Rechner.+Als erstes laden wir uns das aktuelle **[[https://fhem.de/fhem-6.0.tar.gz|Programmarchiv]]** von der [[https://fhem.de/fhem.html#Download|FHEM Downloadseite]] auf unseren Rechner.
  
 Hierzu legen wir uns erst noch den entsprechenden Zielordner an, falls noch nicht erfolgt. Hierzu legen wir uns erst noch den entsprechenden Zielordner an, falls noch nicht erfolgt.
Zeile 394: Zeile 68:
  
 Im nächsten Schritt holen wir uns nun mit Hilfe von **wget** das entsprechende Programmarchiv. Im nächsten Schritt holen wir uns nun mit Hilfe von **wget** das entsprechende Programmarchiv.
-   # wget http://fhem.de/fhem-5.2.tar.gz+   # wget http://fhem.de/fhem-6.0.tar.gz
  
 Zu gute Letzt entpacken wir das Archiv, verschieben den Ordner an Ort und Stelle und verlinken diesen entsprechend noch. 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+   # tar zxvf fhem-6.0.tar.gz -C /usr/local/src 
 + 
 +   # ln -s /usr/local/src/fhem-6.0 /usr/local/src/fhem 
 + 
 +=== System-Konfiguration === 
 +Zunächst legen wir uns einen Systemuser an, unter dem später der Daemon mit den passenden Rechten laufen wird. Die **''uid''** wählen wir passend zu unsere Systemumgebung - in diesem Konfigurationsbeispiel ist das die Nummer **977**. Als Gruppe verwenden wir die Systemgruppe **''dialout''** da wir so ohne Probleme die richtigen Gruppenrechte zum Ansprechen der Gerätedatei des USB-Devices nutzen können. 
 + 
 +   # adduser --no-create-home --gid dialout --uid 977 --shell /sbin/nologin fhem 
 + 
 +   # ls -alF /dev/ttyUSB*  
 + 
 +  crw-rw----. 1 root dialout 188, 0 Oct  7 21:15 /dev/ttyUSB0 
 + 
 +Für die Logdateien legen wir ein zugehöriges Verzeichnis an und weisen die Rechte dem System-User **''fhem''** zu.  
 +   # mkdir /var/log/fhem/ 
 +   # chown fhem:dialout /var/log/fhem/ 
 + 
 + 
  
-   # mv /usr/local/src/packages/fhem-5.2/ /usr/local/src/ 
  
-   # ln -s /usr/local/src/fhem-5.2 /usr/local/src/fhem 
  
 +/*
 === Installation === === Installation ===
 Die Installation beschließen wir nun nur noch mit folgendem Aufruf: Die Installation beschließen wir nun nur noch mit folgendem Aufruf:
Zeile 432: Zeile 123:
 cp examples_changed/sample_pgm2 /etc/fhem.cfg cp examples_changed/sample_pgm2 /etc/fhem.cfg
 </code> </code>
 +*/
 === Stationswerte abfragen === === Stationswerte abfragen ===
-Für die ersten Schritte scheint das Paket [[http://www.koeniglich.de/fhem/fhem.html|FEHM]] recht geeignet. Zumindest können wir schon mal damit die ersten (Meß-)Werte auslesen.+Für die ersten Schritte scheint das Paket [[https://fhem.de/fhem_DE.html|FHEM]] 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**//.+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    # /usr/local/src/fhem/contrib/em1010.pl
  
Zeile 441: Zeile 133:
  
 Unseren ersten Stromzähler - der mit der ID 1 - fragen wir also wie folgt ab: 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 +   # /usr/local/src/fhem/contrib/em1010.pl /dev/ttyUSB0 getDevStatus 1 
-<code>Readings       (off  2): 62071+<code>     Readings       (off  2): 567
      Nr devs        (off  6): 1      Nr devs        (off  6): 1
-     puls/5min      (off 13): 6 +     puls/5min      (off 13): 7 
-     puls.max/5min  (off 15): 443 +     puls.max/5min  (off 15): 416 
-     cur.energy(off   ): 0.040 kWh +     cur.energy(off   ): 0.047 kWh 
-     cur.power      (      ): 0.480 kW+     cur.power      (      ): 0.560 kW
      cur.power max  (      ): 0.000 kW      cur.power max  (      ): 0.000 kW
-     energy h       (off 33): 0.380 kWh (h) +     energy h       (off 33): 0.593 kWh (h) 
-     energy d       (off 37): 13.900 kWh (d) +     energy d       (off 37): 11.393 kWh (d) 
-     energy w       (off 41): 91.907 kWh (w) +     energy w       (off 41): 22.633 kWh (w) 
-     total energy   (off  7): 10356.553 kWh (total)+     total energy   (off  7): 22.633 kWh (total)
      Alarm PA       (off 45): 0 W      Alarm PA       (off 45): 0 W
      Price CF       (off 47): 0.15 EUR/kWh      Price CF       (off 47): 0.15 EUR/kWh
      R/kW  EC       (off 49): 150      R/kW  EC       (off 49): 150
-RAW    0300 77f2 8900 014b b417 00f3 0406 00bb  +RAW    0300 3702 0000 0143 0d00 0035 2307 00a0  
-RAW    0180 f3b7 26ab 2697 1f17 eab6 2680 268d  +RAW    0180 aeb7 b9ab b997 b300 00ae b98b b98b  
-RAW    1c39 0000 0025 0800 00da 3500 0000 00dc  +RAW    b959 0000 00ad 0600 0043 0d00 0000 00dc  
-RAW    05dc 05</code>+RAW    05dc 05                                  
 +</code>
  
-====== FHEM - GPL'server for house automation ====== +====== FHEM - GPL'Server für die Haus Automation ====== 
-Im weiteren Verlauf betrachten wie nun das Softwareprojekt [[http://www.koeniglich.de/fhem/fhem.html|FHEM]] etwas genauer. Schließlich wollen wir ja unsere Meßpunkte+Im weiteren Verlauf betrachten wie nun das Softwareprojekt [[https://fhem.de/fhem_DE.html|FHEM]] etwas genauer. Schließlich wollen wir ja unsere Meßpunkte
   - Haus-Stromzähler   - Haus-Stromzähler
   - EDV-Schrank-Stromzähler   - EDV-Schrank-Stromzähler
Zeile 471: Zeile 164:
 ==== erste Konfiguration ==== ==== erste Konfiguration ====
 Als erstes passen wir die mitgelieferte Konfigurationsdatei unseren individuellen Gegebenheiten an: Als erstes passen wir die mitgelieferte Konfigurationsdatei unseren individuellen Gegebenheiten an:
 +   # cp /usr/local/src/fhem/fhem.cfg /etc/fhem.cfg
    # vim /etc/fhem.cfg     # vim /etc/fhem.cfg 
  
-<file bash /etc/fhem.cfg># +<file bash /etc/fhem.cfg># Logdatei mit vollständigem Pfad
-# pgm2 / autocreate configfile. Take a look at the other examples for more. +
-#+
 attr global logfile /var/log/fhem/fhem-%Y-%m.log attr global logfile /var/log/fhem/fhem-%Y-%m.log
-attr global modpath /usr/share/fhem                   where our FHEM directory is +# FHEM Arbeits-Verzeichnis 
-attr global port 7072 global            our TCP/IP port +attr global modpath /usr/local/src/fhem
-attr global statefile /var/log/fhem/fhem.save   # where to save the state of the devices +"normal" verbosity (min 1, max 5) 
-attr global verbose 3                  # "normal" verbosity (min 1, max 5)+attr global verbose 3 
 +statefile in dem die Stati der Geräte gesichert werden 
 +attr global statefile /var/log/fhem/fhem.save
  
 +# FHEM-MOTD deaktiviert
 +attr global motd none
 +
 +# Globaler Port der WEB-GUI
 define WEB FHEMWEB 8083 global define WEB FHEMWEB 8083 global
  
-define WEBphone FHEMWEB 8084 global +# WEB-GUI absichern 
-attr WEBphone smallscreen+define allowedWEB allowed 
 +attr allowedWEB validFor WEB,WEBphone,WEBtablet 
 +attr allowedWEB basicAuth { "$user:$password" eq "admin:streng-geheimes-Passwort"
 +attr allowedWEB allowedCommands set,get
  
-define WEBtablet FHEMWEB 8085 global +# Fake FileLog Eintragfür denm Zugriff über die WEB-GUI FHEMWEB  
-attr WEBtablet touchpad +define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
- +
-# Fake FileLog entryto access the fhem log from FHEMWEB  +
-define Logfile FileLog /var/log/fhem/fhem-%Y-%m.log fakelog+
  
 define autocreate autocreate define autocreate autocreate
-attr autocreate autosave +attr autocreate filelog ./log/%NAME-%Y.log
-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 +
  
 +define eventTypes eventTypes ./log/eventTypes.txt
  
-If the above notify did not helped, then you probably have to enable some of +Disable this to avoid looking for new USB devices on startup 
-# the following lines.  Verify first that /dev/xxx ist correct.+define initialUsbCheck notify global:INITIALIZED usb create
  
-#define FHZ FHZ /dev/USB0 +Definitionen der Messpunkte 
-#define CUL CUL /dev/ttyACM0@9600 1234 +define EM EM /dev/ttyUSB0 # Serieller (ttyUSB)-Port des FHZ 1000 PC
-#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 Hauptzaehler EMWZ 1
 define Gaszaehler EMGZ 9 define Gaszaehler EMGZ 9
Zeile 523: Zeile 206:
 </file> </file>
  
-==== Paketfilter iptables ==== +==== Paketfilter/Firewall ==== 
-Damit Wir mit unserem bevorzugten Webbrowser auf die Webseiten von FHEM zugreifen können, erweitern wir noch bei Bedarf unseren Paketfilter+Damit wir später von den berechtigten Hosts Verbindungen zu unserem **FHEM-Daemon** aufbauen können, müssen wir für diese noch Änderungen am Paketfilter **firewalld** vornehmen.
-   # vim /etc/sysconfig/iptables +
-<code>...+
  
-# Django : 2012-07-27 Port 8083 für FHEM freigeschaltet +Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbindungen kurz getrennt werden. Sondern unsere Änderungen können **//on-the-fly//** aktiviert oder auch wieder deaktiviert werden. 
--A INPUT -m state --state NEW -m tcp -p tcp --dport 8083 -j ACCEPT + 
--A INPUT -m state --state NEW -m tcp -p tcp --dport 8084 -j ACCEPT +In unserem Konfigurationsbeispiel hat unser Server, an dem der Energie-Monitor via USB-Kabel angeschlossen ist die IP-Adresse **''10.0.0.27''** und der WEB-Server die **''10.0.0.107''**. Wir brauchen also eine Firewall-Definition, die ausschließlich Verbindungen von der **Source-IP** 10.0.0.107 auf die **Destination-IP** 10.0.0.27 auf Port **8083** gestattet. 
--A INPUT -m state --state NEW -m tcp -tcp --dport 8085 -j ACCEPT +Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public**, dies entspricht in unserem Beispiel das Netzwerk-Interface **eth0** mit der IP **10.0.0.27** an. Als Source-IP geben wir die IP-Adresse unseres WEB-/Proxy-Servers also die **10.0.0.107** an. Genug der Vorrede, mit nachfolgendem Befehl wird diese restriktive Regel angelegt. 
-#+   # firewall-cmd --permanent --zone=external --add-rich-rule="rule family="ipv4" source address="10.0.0.107/32" port protocol="tcp" port="8083" destination address="10.0.0.27/32" accept"
  
-...+Zum Aktivieren brauchen wir nun nur einen reload des Firewall-Daemon vornehmen. 
 +   # firewall-cmd --reload 
 + 
 +Fragen wir nun den Regelsatz unserer **iptables**-basieten Firewall ab, finden wir in der Chain **IN_public_allow** unsere aktive Regel. 
 +   # iptables -nvL IN_external_allow 
 + 
 +<code>Chain IN_external_allow (1 references) 
 + pkts bytes target     prot opt in     out     source               destination          
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:22 ctstate NEW,UNTRACKED 
 +   12   720 ACCEPT     tcp  --  *      *       10.0.0.107           10.0.0.27            tcp dpt:8083 ctstate NEW,UNTRACKED
 </code> </code>
-Zum Aktivieren der neuenRegeln führn wir nun noch einen Restart des Daemons durch. +
-   # service iptables restart+
  
 ===== Programmstart ===== ===== Programmstart =====
 Wir starten nunmehr zum ersten mal **FHEM**. Wir starten nunmehr zum ersten mal **FHEM**.
-   # fhem.pl /etc/fhem.cfg+   # perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg
  
-Im Logfile **/var/log/fhem/fhem-2009-01.log** wird uns der Start entsprechend quittiert: +Im Logfile **/var/log/fhem/fhem-2020-10.log** wird uns der Start entsprechend quittiert: 
-<file bash /var/log/fhem/fhem-2009-01.log> +<file /var/log/fhem/fhem-2020-10.log>2020.10.07 22:37:17 1Including /etc/fhem.cfg 
-2012.07.27 14:20:26 2Telnet port 7072 opened +2020.10.07 22:37:18 3: WEB: port 8083 opened 
-2012.07.27 14:20:26 2FHEMWEB port 8083 opened +2020.10.07 22:37:18 1define Logfile FileLog ./log/fhem-%Y-%m.log fakelog: Can't open ./log/fhem-2020-10.log: Permission denied 
-2012.07.27 14:20:26 2FHEMWEB port 8084 opened +2020.10.07 22:37:18 2: eventTypes: loaded 0 events from ./log/eventTypes.txt 
-2012.07.27 14:20:26 2: FHEMWEB port 8085 opened +2020.10.07 22:37:18 3: EM opening device /dev/ttyUSB0 
-2012.07.27 14:20:26 3: EM opening device /dev/ttyUSB0 +2020.10.07 22:37:18 3: EM opened device /dev/ttyUSB0
-2012.07.27 14:20:26 3: EM opened device /dev/ttyUSB0+
 </file> </file>
  
Zeile 556: Zeile 244:
    # ps aux | grep fhem    # ps aux | grep fhem
  
-   root      4463  0. 1.1 150568 11716 pts/1    S    14:20   0:00 /usr/bin/perl /usr/bin/fhem.pl /etc/fhem.cfg+  fhem     12347  0. 1.1 180008 21296 pts/1    S    22:37   0:00 perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg
  
 Mit dem Befehl **netstat -tulpen** können wir auch noch überprüfen, ob die Ports 8083, 8084 und 8085 auch geöffnet wurden. 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    # netstat -tulpen | grep 808
  
-   tcp        0      0 0.0.0.0:8083                0.0.0.0:                  LISTEN      0          410542     4463/perl            +   tcp        0      0 0.0.0.0:8083            0.0.0.0:              LISTEN      977        161400     12347/perl63/perl
-   tcp        0      0 0.0.0.0:8084                0.0.0.0:                  LISTEN      0          410543     4463/perl            +
-   tcp        0      0 0.0.0.0:8085                0.0.0.0:                  LISTEN      0          410544     4463/perl+
  
 Nun rufen wir die Statusseite von **//FHEM//** in unserem bevorzugten Browser auf. Nun rufen wir die Statusseite von **//FHEM//** in unserem bevorzugten Browser auf.
-   $ firefox http://10.0.0.20:8083/fhem+   $ firefox http://10.0.0.27:8083/fhem
  
 {{ :fun:fhem-1.png?direct&500 |FHEM Statusanzeige}} {{ :fun:fhem-1.png?direct&500 |FHEM Statusanzeige}}
Zeile 579: Zeile 265:
  
 Im Logfile wird uns dies entsprechend quittiert: Im Logfile wird uns dies entsprechend quittiert:
-   2012.07.27 14:31:44 0: Server shutdown+   2020.10.07 22:47:46 0: Server shutdown
  
 Der status unseres FHEM-Gerätes wurde in der Logdatei //**/var/log/fhem/fhem.save**// gesichert. Der status unseres FHEM-Gerätes wurde in der Logdatei //**/var/log/fhem/fhem.save**// gesichert.
    # cat /var/log/fhem/fhem.save    # cat /var/log/fhem/fhem.save
  
-<file bash /var/log/fhem/fhem.save>#Fri Jul 27 14:31:44 2012 +<file /var/log/fhem/fhem.save>setstate EDV_Schrank 0.29 kW 
-setstate EDV_Schrank 0.37 kW +setstate EDV_Schrank 2020-10-07 22:44:10 5min_pulses 29 
-setstate EDV_Schrank 2012-07-27 14:26:44 5min_pulses 37 +setstate EDV_Schrank 2020-10-07 22:44:10 5min_pulses_max 32 
-setstate EDV_Schrank 2012-07-27 14:26:44 5min_pulses_max 43 +setstate EDV_Schrank 2020-10-07 22:44:10 alarm_PA_W 0 
-setstate EDV_Schrank 2012-07-27 14:26:44 alarm_PA_W 0 +setstate EDV_Schrank 2020-10-07 22:44:10 energy_kWh 429.247 
-setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh 154.483 +setstate EDV_Schrank 2020-10-07 22:44:10 energy_kWh_d 7.140 
-setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_d 9.055 +setstate EDV_Schrank 2020-10-07 22:44:10 energy_kWh_h 0.296 
-setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_h 0.376 +setstate EDV_Schrank 2020-10-07 22:44:10 energy_kWh_w 49.657 
-setstate EDV_Schrank 2012-07-27 14:26:44 energy_kWh_w 64.873 +setstate EDV_Schrank 2020-10-07 22:44:10 power_kW 0.290 
-setstate EDV_Schrank 2012-07-27 14:26:44 power_kW 0.370 +setstate EDV_Schrank 2020-10-07 22:44:10 power_kW_max 0.320 
-setstate EDV_Schrank 2012-07-27 14:26:44 power_kW_max 0.430 +setstate EDV_Schrank 2020-10-07 22:44:10 price_CF 0.150 
-setstate EDV_Schrank 2012-07-27 14:26:44 price_CF 0.150 +setstate Gaszaehler 0 m3ph 
-setstate Gaszaehler 0.12 m3ph +setstate Gaszaehler 2020-10-07 22:44:10 5min_pulses 0 
-setstate Gaszaehler 2012-07-27 14:26:44 5min_pulses 1 +setstate Gaszaehler 2020-10-07 22:44:10 Rperm3_EC 100 
-setstate Gaszaehler 2012-07-27 14:26:44 Rperm3_EC 100 +setstate Gaszaehler 2020-10-07 22:44:10 act_flow_m3 0.000 
-setstate Gaszaehler 2012-07-27 14:26:44 act_flow_m3 0.010 +setstate Gaszaehler 2020-10-07 22:44:10 alarm_PA 0 Watt 
-setstate Gaszaehler 2012-07-27 14:26:44 alarm_PA 0 Watt +setstate Gaszaehler 2020-10-07 22:44:10 cum_m3 0.000 
-setstate Gaszaehler 2012-07-27 14:26:44 cum_m3 0.010 +setstate Gaszaehler 2020-10-07 22:44:10 m3ph 0.000 
-setstate Gaszaehler 2012-07-27 14:26:44 m3ph 0.120 +setstate Gaszaehler 2020-10-07 22:44:10 price_CF 0.630 
-setstate Gaszaehler 2012-07-27 14:26:44 price_CF 0.630 +setstate Hauptzaehler 0.56 kW 
-setstate Hauptzaehler 0.48 kW +setstate Hauptzaehler 2020-10-07 22:44:10 5min_pulses 7 
-setstate Hauptzaehler 2012-07-27 14:31:44 5min_pulses 6 +setstate Hauptzaehler 2020-10-07 22:44:10 RperKW_EC 150 
-setstate Hauptzaehler 2012-07-27 14:31:44 RperKW_EC 150 +setstate Hauptzaehler 2020-10-07 22:44:10 alarm_PA 0 Watt 
-setstate Hauptzaehler 2012-07-27 14:31:44 alarm_PA 0 Watt +setstate Hauptzaehler 2020-10-07 22:44:10 cum_kWh 0.047 
-setstate Hauptzaehler 2012-07-27 14:31:44 cum_kWh 0.206 +setstate Hauptzaehler 2020-10-07 22:44:10 energy 0.047 
-setstate Hauptzaehler 2012-07-27 14:31:44 energy 0.040 +setstate Hauptzaehler 2020-10-07 22:44:10 power 0.560 
-setstate Hauptzaehler 2012-07-27 14:31:44 power 0.480 +setstate Hauptzaehler 2020-10-07 22:44:10 price_CF 0.150 
-setstate Hauptzaehler 2012-07-27 14:31:44 price_CF 0.150 +setstate Hauptzaehler 2020-10-07 22:44:10 summary Pulses: Energy: 0.047 Power: 0.560 Cum: 0.047
-setstate Hauptzaehler 2012-07-27 14:31:44 summary Pulses: Energy: 0.040 Power: 0.480 Cum: 0.206+
 setstate Logfile active setstate Logfile active
 +setstate WEB 2020-10-07 22:44:07 state Initialized
 +setstate allowedWEB validFor:WEB,WEBphone,WEBtablet
 +setstate allowedWEB 2020-10-07 22:44:07 state validFor:WEB,WEBphone,WEBtablet
 setstate autocreate active setstate autocreate active
-setstate global <no definition>+setstate eventTypes active 
 +setstate global no definition 
 +setstate initialUsbCheck 2020-10-07 22:44:10 
 +setstate initialUsbCheck 2020-10-07 22:44:07 state active
 </file> </file>
 ===== erweiterte Konfiguration ===== ===== erweiterte Konfiguration =====
 ==== Startscript ==== ==== Startscript ====
-Damit unser FHEM-Daemon automatisch beim Hochfahren des Rechners gestartet werden kann, legen wir uns noch ein entsprechendes Startscript an. +=== systemd-Startscript === 
-   # vim /etc/init.d/fhem+Zum (automatischen) Starten des Daemon benötigen wir noch ein passendes **[[https://systemd.io/|systemd]]**-Script. Dieses legen wir im Verzeichnis **''/etc/systemd/system/''** an. 
 +   # vim /etc/systemd/system/fhem.service 
 +<file bash /etc/systemd/system/fhem.service>[Unit] 
 +Description=FHEM service 
 +After=network.target
  
-<file bash /etc/init.d/fhem>#!/bin/sh+[Service] 
 +Type=forking 
 +User=fhem 
 +Group=dialout 
 +WorkingDirectory=/usr/local/src/fhem 
 +ExecStart=/usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg
  
-# $Id: fhem 19 2012-07-27 21:33:44Z dws $ +[Install] 
-# example init script for fhem +WantedBy=multi-user.target</file>
-+
-# chkconfig: 2345 82 28 +
-# description: FHEM Home automation. +
-+
-# processname: fhem.pl +
-+
-# Written by Django+
  
-DAEMON=/usr/bin/fhem.pl +Nun machen wir das Script noch dem System bekannt. 
-PIDFILE=/var/run/fhem.pid +   # systemctl daemon-reload 
-OPTION="/etc/fhem.conf" + 
-PROG="FHEM+Den **FHEM-Daemon** starten wir nun ganz einfach. 
-test -x $DAEMON || exit 0+   # systemctl start fhem.service 
 + 
 +Der Start wird im Logfile des Datenbankservers //**/var/log/fhem/fhem-2020-10.log**// entsprechend dokumentiert
 +   # less /var/log/fhem/fhem-2020-10.log 
 +<code>2020.10.08 08:49:23 1: Including /etc/fhem.cfg 
 +2020.10.08 08:49:23 3: WEB: port 8083 opened 
 +2020.10.08 08:49:23 2: eventTypes: loaded 25 events from ./log/eventTypes.txt 
 +2020.10.08 08:49:23 3: EM opening device /dev/ttyUSB0 
 +2020.10.08 08:49:23 3: EM opened device /dev/ttyUSB0 
 +2020.10.08 08:49:49 1: Including /var/log/fhem/fhem.save 
 +2020.10.08 08:49:49 1: usb create starting 
 +2020.10.08 08:49:49 3: Probing CUL device /dev/ttyS0 
 +2020.10.08 08:49:49 3: Probing CUL device /dev/ttyS1 
 +2020.10.08 08:49:49 1: PERL WARNING: can't getattr: Input/output error at /usr/local/src/fhem//FHEM/DevIo.pm line 426. 
 +2020.10.08 08:49:49 1: CUL: Can't open /dev/ttyS1: Input/output error 
 +2020.10.08 08:49:49 3: Probing CUL device /dev/ttyS2 
 +2020.10.08 08:49:49 1: CUL: Can't open /dev/ttyS2: Input/output error 
 +2020.10.08 08:49:49 3: Probing CUL device /dev/ttyS3 
 +2020.10.08 08:49:49 1: CUL: Can't open /dev/ttyS3: Input/output error 
 +2020.10.08 08:49:49 1: usb create end 
 +2020.10.08 08:49:49 0: Featurelevel:
 +2020.10.08 08:49:49 0: Server started with 11 defined entities (fhem.pl:21056/2020-01-26 perl:5.016003 os:linux user:fhem pid:29810) 
 +</code> 
 + 
 +Möchten wir überprüfen, ob der FHEM-Daemon läuft, haben wir mehrere Möglichkeiten. 
 +  - **systemctl** \\ <code> # systemctl status fhem.service -l</code> <html><pre class="code"> 
 +<font style="color: rgb(0, 255, 0)"><b>● </b></font><font style="color: rgb(0, 0, 0)">fhem.service - FHEM service 
 +   Loaded: loaded (/etc/systemd/system/fhem.service; disabled; vendor preset: disabled) 
 +   Active: <font style="color: rgb(0, 255, 0)"><b>active (running) </b></font><font style="color: rgb(0, 0, 0)">since Thu 2020-10-08 08:49:23 CEST; 2min 19s ago 
 +  Process: 29809 ExecStart=/usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg (code=exited, status=0/SUCCESS) 
 + Main PID: 29810 (perl) 
 +   CGroup: /system.slice/fhem.service 
 +           └─29810 /usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg 
 + 
 +Oct 08 08:49:23 vml000027.dmz.nausch.org systemd[1]: Starting FHEM service... 
 +Oct 08 08:49:23 vml000027.dmz.nausch.org systemd[1]: Started FHEM service.</font> 
 +</pre></html> 
 +  **ps** \\ <code> # ps aux grep fhem</code><code>fhem     29810  0.0  1.1 180392 22032 ?        S    08:49   0:00 /usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg 
 +root     30096  0.0  0.0 112812   936 pts/0    S+   08:53   0:00 grep --color=auto fhem 
 +</code> 
 +  - **netstat** \\ <code> # netstat -tulpn</code><code>Active Internet connections (only servers) 
 +Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
 +Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
 +tcp        0      0 0.0.0.0:8083            0.0.0.0:              LISTEN      29810/perl 
 +tcp        0      0 0.0.0.0:22              0.0.0.0:              LISTEN      1152/sshd 
 +... 
 +</code> 
 + 
 +==== automatisches Starten des Dienste beim Systemstart ====  
 +Damit nun unser MariaDBL-Server beim Booten automatisch gestartet wird, nehmen wir noch folgenden Konfigurationsschritt vor. 
 +   # systemctl enable fhem.service 
 + 
 +   Created symlink from /etc/systemd/system/multi-user.target.wants/fhem.service to /etc/systemd/system/fhem.service. 
 + 
 +Wollen wir überprüfen, ob der Datenbank-Daemon beim Serverstart automatisch gestartet wird, fragen wir dies mit folgendem Befehl ab. 
 +   # systemctl is-enabled fhem.service 
 + 
 +   enabled 
 + 
 +Startet der FHEM-Daemon nicht automatisch, wird ein **disabled** zurück gemeldet.
  
-. /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 
  
-exit 0 
-</file> 
  
 Nun können wir bequem den **FHEM-Daemon** starten und Stoppen. Nun können wir bequem den **FHEM-Daemon** starten und Stoppen.
Zeile 709: Zeile 434:
                 Deny from all                 Deny from all
                 Allow from 127.0.0.1                 Allow from 127.0.0.1
-                Allow from 10.0.0.20/32 +                Allow from 10.0.0.27/32 
-                Allow from 10.0.10.0/26+                Allow from 10.0.0.0/26
         </Location>         </Location>
  
Zeile 743: Zeile 468:
         ProxyRequests Off         ProxyRequests Off
         ProxyPreserveHost On         ProxyPreserveHost On
-        ProxyPass /fhem http://10.0.0.20:8083/fhem +        ProxyPass /fhem http://10.0.0.27:8083/fhem 
-        ProxyPassReverse /fhem http://10.0.0.20:8083/fhem+        ProxyPassReverse /fhem http://10.0.0.27:8083/fhem
  
         ErrorLog logs/fhem_error.log         ErrorLog logs/fhem_error.log
Zeile 751: Zeile 476:
 </file> </file>
 Bevor wir den Apache-Webserver durchstarten überprüfen wir noch die Konfigurationsdatei auf schreib und Tipp-Fehler. Bevor wir den Apache-Webserver durchstarten überprüfen wir noch die Konfigurationsdatei auf schreib und Tipp-Fehler.
-   # service httpd configtest+   # apachectl -t
  
-   Syntax OK+  Syntax OK
  
 Da kein Fehler enthalten ist, starten wir nun zur Aktivierung den Webserver einmal durch. Da kein Fehler enthalten ist, starten wir nun zur Aktivierung den Webserver einmal durch.
-   # service httpd condrestart+   # systemctl restart httpd.service
  
-   Stopping httpd:                                            [  OK  ] +Wir erreichen nun unseren vHost für FHEM ganz einfach via fhem.nausch.org. Geben wir beim Verbindungsprotokoll "nur" **http** statt **https** ein, werden wir direkt zur verschlüsselten Seite weitergeleitet.
-   Starting httpd:                                            [  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    $ firefox http://fhem.nausch.org
  
 {{ :fun:fhem-4.png?direct&500 |FHEM Bildschirmhardcopy des abgesicherten vHOSTs}} {{ :fun:fhem-4.png?direct&500 |FHEM Bildschirmhardcopy des abgesicherten vHOSTs}}
  
-==== 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 strenger auslegen. 
-   # vim /etc/sysconfig/iptables 
-<code>... 
- 
-# 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 
-# 
- 
-... 
-</code> 
-Zum Aktivieren der neuenRegeln führn wir nun noch einen Restart des Daemons durch. 
-   # service iptables restart 
  
 ==== Datenbank-Konfiguration ==== ==== Datenbank-Konfiguration ====
Zeile 1117: Zeile 826:
 {{ :fun:ges_strom.png?600 }} {{ :fun:ges_strom.png?600 }}
  
-~~DISCUSSION~~+
  • fun/energie-funk-mess-system_em_1000.1403776617.txt.gz
  • Zuletzt geändert: 26.06.2014 09:56.
  • von django