Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
fun:energie-funk-mess-system_em_1000 [07.10.2020 20:00. ] – django | fun:energie-funk-mess-system_em_1000 [07.10.2020 20:41. ] – [Programmstart] django | ||
---|---|---|---|
Zeile 48: | Zeile 48: | ||
crw-rw----. 1 root dialout 188, 0 Oct 7 21:15 / | crw-rw----. 1 root dialout 188, 0 Oct 7 21:15 / | ||
- | |||
- | |||
- | ==== 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: | ||
- | < | ||
- | Jul 26 16:49:45 vml000020 kernel: usb 1-2: New USB device found, idVendor=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: | ||
- | Jul 26 16:49:45 vml000020 kernel: usb 1-2: SerialNumber: | ||
- | 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, | ||
- | 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: | ||
- | 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 | ||
- | </ | ||
- | 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 // | ||
- | |||
- | ==== CentOS 5.x ==== | ||
- | Stecken wir die Station an einen CentOS 5.x Rechner an, so wird uns dies im Syslog entsprechend dokumentiert: | ||
- | | ||
- | | ||
- | Wie auch schon meine alte Wetterstation [[wetter: | ||
- | 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, | ||
- | Alternativ können wir diese auch wie folgt ermitteln: | ||
- | < | ||
- | |||
- | ... | ||
- | T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 8 Spd=12 | ||
- | D: Ver= 1.10 Cls=00(> | ||
- | 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</ | ||
- | 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: ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected | ||
- | Jan 7 20:43:17 nss kernel: drivers/ | ||
- | 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/ | ||
- | Damit nun beim Systemstart dieses Kernel-Modul automatisch geladen wird, legen wir uns eine individuelle **udev-Regel** an: | ||
- | # vim / | ||
- | | ||
- | |||
===== Software ===== | ===== Software ===== | ||
Zeile 150: | Zeile 75: | ||
# ln -s / | # ln -s / | ||
- | === Konfiguration === | + | === System-Konfiguration === |
- | Zunächst legen wir uns einen Systemuser an, unter dem später der Daemon mit den passenden Rechten laufen wird. Die ++'' | + | Zunächst legen wir uns einen Systemuser an, unter dem später der Daemon mit den passenden Rechten laufen wird. Die **'' |
# adduser --no-create-home --gid dialout --uid 977 --shell / | # adduser --no-create-home --gid dialout --uid 977 --shell / | ||
Zeile 163: | Zeile 88: | ||
# chown fhem: | # chown 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/ | cp examples_changed/ | ||
</ | </ | ||
+ | */ | ||
=== 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**; | + | Einen ersten Testabruf der Stationsdaten erfolgt mittels **'' |
# / | # / | ||
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: | ||
- | # / | + | # / |
- | < | + | < |
Nr devs (off 6): 1 | Nr devs (off 6): 1 | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | |
| | ||
- | | + | |
- | | + | |
- | | + | |
- | total energy | + | total energy |
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 | ||
| | ||
- | 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 | + | RAW |
- | RAW 05dc 05</ | + | RAW 05dc 05 |
+ | </ | ||
- | ====== FHEM - GPL' | + | ====== FHEM - GPL' |
- | 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 / | ||
# vim / | # vim / | ||
- | <file bash / | + | <file bash / |
- | # pgm2 / autocreate configfile. Take a look at the other examples for more. | + | attr global modpath |
- | # | + | # " |
+ | attr global verbose 3 | ||
+ | # Logdatei mit vollständigem Pfad | ||
attr global logfile / | attr global logfile / | ||
- | attr global modpath / | + | # statefile in dem die Stati der Geräte gesichert werden |
- | attr global port 7072 global | + | attr global statefile / |
- | attr global statefile / | + | |
- | attr global verbose 3 # " | + | |
+ | # FHEM-MOTD deaktiviert | ||
+ | attr global motd none | ||
+ | |||
+ | # Globaler Port der WEB-GUI | ||
define WEB FHEMWEB 8083 global | define WEB FHEMWEB 8083 global | ||
- | define | + | # WEB-GUI absichern |
- | attr WEBphone | + | define |
+ | attr allowedWEB validFor WEB,WEBphone, | ||
+ | attr allowedWEB basicAuth { " | ||
+ | attr allowedWEB allowedCommands set,get | ||
- | define WEBtablet FHEMWEB 8085 global | + | # Fake FileLog |
- | attr WEBtablet touchpad | + | define Logfile FileLog |
- | + | ||
- | # Fake FileLog | + | |
- | define Logfile FileLog | + | |
define autocreate autocreate | define autocreate autocreate | ||
- | attr autocreate autosave | + | attr autocreate filelog |
- | attr autocreate device_room %TYPE | + | |
- | attr autocreate filelog | + | |
- | 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: | + | |
+ | define eventTypes eventTypes ./ | ||
- | # 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. | + | define |
- | + | ||
- | #define | + | |
- | #define CUL CUL / | + | |
- | #attr CUL rfmode HomeMatic | + | |
- | + | ||
- | #define EUL TCM 310 / | + | |
- | #define BscBor TCM 120 / | + | |
- | #define BscSmartConnect TCM 310 / | + | |
- | # Django : 2012-07-27 | + | # Definitionen der Messpunkte |
- | define EM EM / | + | define EM EM / |
define Hauptzaehler EMWZ 1 | define Hauptzaehler EMWZ 1 | ||
define Gaszaehler EMGZ 9 | define Gaszaehler EMGZ 9 | ||
Zeile 283: | Zeile 206: | ||
</ | </ | ||
- | ==== Paketfilter | + | ==== Paketfilter/ |
- | Damit Wir mit unserem | + | Damit wir später von den berechtigten Hosts Verbindungen zu unserem |
- | # vim / | + | |
- | < | + | |
- | # 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 | + | |
- | -A INPUT -m state --state NEW -m tcp -p tcp --dport 8085 -j ACCEPT | + | |
- | # | + | |
- | ... | + | In unserem Konfigurationsbeispiel hat unser Server, an dem der Energie-Monitor via USB-Kabel angeschlossen ist die IP-Adresse **'' |
+ | 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-/ | ||
+ | # firewall-cmd --permanent --zone=external --add-rich-rule=" | ||
+ | |||
+ | 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 | ||
+ | |||
+ | < | ||
+ | pkts bytes target | ||
+ | 0 0 ACCEPT | ||
+ | | ||
</ | </ | ||
- | 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 / | + | # |
- | Im Logfile **/ | + | Im Logfile **/ |
- | <file bash / | + | <file bash / |
- | 2012.07.27 14:20:26 2: Telnet port 7072 opened | + | 2020.10.07 22:37:18 3: WEB: port 8083 opened |
- | 2012.07.27 14:20:26 2: FHEMWEB | + | 2020.10.07 22:37:18 1: define Logfile FileLog ./ |
- | 2012.07.27 14:20:26 2: FHEMWEB port 8084 opened | + | 2020.10.07 22:37:18 2: eventTypes: loaded 0 events from ./ |
- | 2012.07.27 14:20:26 2: FHEMWEB port 8085 opened | + | 2020.10.07 22:37:18 3: EM opening device / |
- | 2012.07.27 14:20:26 3: EM opening device / | + | 2020.10.07 22:37:18 3: EM opened device / |
- | 2012.07.27 14:20:26 3: EM opened device / | + | |
</ | </ | ||
Zeile 316: | Zeile 244: | ||
# ps aux | grep fhem | # ps aux | grep fhem | ||
- | | + | fhem |
Mit dem Befehl **netstat -tulpen** können wir auch noch überprüfen, | Mit dem Befehl **netstat -tulpen** können wir auch noch überprüfen, | ||
# netstat -tulpen | grep 808 | # netstat -tulpen | grep 808 | ||
- | | + | |
- | | + | |
- | | + | |
Nun rufen wir die Statusseite von **// | Nun rufen wir die Statusseite von **// | ||
- | $ firefox http:// | + | $ firefox http:// |
{{ : | {{ : | ||
Zeile 379: | Zeile 305: | ||
===== erweiterte Konfiguration ===== | ===== erweiterte Konfiguration ===== | ||
==== Startscript ==== | ==== Startscript ==== | ||
+ | === systemd-Startscript === | ||
+ | Zum (automatischen) Starten des Daemon benötigen wir noch ein passendes **[[https:// | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | Description=FHEM service | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=forking | ||
+ | User=fhem | ||
+ | Group=dialout | ||
+ | WorkingDirectory=/ | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target</ | ||
+ | |||
+ | Nun machen wir das Script noch dem System bekannt. | ||
+ | # systemctl daemon-reload | ||
+ | |||
Damit unser FHEM-Daemon automatisch beim Hochfahren des Rechners gestartet werden kann, legen wir uns noch ein entsprechendes Startscript an. | Damit unser FHEM-Daemon automatisch beim Hochfahren des Rechners gestartet werden kann, legen wir uns noch ein entsprechendes Startscript an. | ||
# vim / | # vim / |