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 [07.10.2020 20:00. ] djangofun:energie-funk-mess-system_em_1000 [08.10.2020 07:14. ] (aktuell) – [Apache V-Host mit Authentifizierung] django
Zeile 48: Zeile 48:
  
   crw-rw----. 1 root dialout 188, 0 Oct  7 21:15 /dev/ttyUSB0   crw-rw----. 1 root dialout 188, 0 Oct  7 21:15 /dev/ttyUSB0
- 
- 
-==== 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> 
-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. 
- 
-==== 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 [[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: 
-   # lsusb  
-   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=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  8 Spd=12  MxCh= 0 
-D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 
-P:  Vendor=0403 ProdID=e0ef Rev= 2.00 
-S:  Manufacturer=ELV AG 
-S:  Product=ELV EM 1010 PC 
-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 
-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" 
- 
  
 ===== Software ===== ===== Software =====
Zeile 150: Zeile 75:
    # ln -s /usr/local/src/fhem-6.0 /usr/local/src/fhem    # ln -s /usr/local/src/fhem-6.0 /usr/local/src/fhem
  
-=== Konfiguration === +=== 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.+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    # adduser --no-create-home --gid dialout --uid 977 --shell /sbin/nologin fhem
Zeile 163: Zeile 88:
    # chown fhem:dialout /var/log/fhem/    # chown fhem:dialout /var/log/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 192: 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 201: 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 231: 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 283: 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 316: 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 339: 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 469: 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 503: 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 511: 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 ====
  • fun/energie-funk-mess-system_em_1000.txt
  • Zuletzt geändert: 08.10.2020 07:14.
  • von django