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:27. ] djangofun:energie-funk-mess-system_em_1000 [08.10.2020 07:14. ] (aktuell) – [Apache V-Host mit Authentifizierung] django
Zeile 167: Zeile 167:
    # vim /etc/fhem.cfg     # vim /etc/fhem.cfg 
  
-<file bash /etc/fhem.cfg># FHEM Arbeits-Verzeichnis+<file bash /etc/fhem.cfg># Logdatei mit vollständigem Pfad 
 +attr global logfile /var/log/fhem/fhem-%Y-%m.log 
 +# FHEM Arbeits-Verzeichnis
 attr global modpath /usr/local/src/fhem/ attr global modpath /usr/local/src/fhem/
 # "normal" verbosity (min 1, max 5) # "normal" verbosity (min 1, max 5)
 attr global verbose 3 attr global verbose 3
-# Logdatei mit vollständigem Pfad 
-attr global logfile /var/log/fhem/fhem-%Y-%m.log 
 # statefile in dem die Stati der Geräte gesichert werden # statefile in dem die Stati der Geräte gesichert werden
 attr global statefile /var/log/fhem/fhem.save attr global statefile /var/log/fhem/fhem.save
Zeile 206: 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 +
--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 **''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. 
 +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 239: 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 262: 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 =====
Zeile 322: Zeile 330:
    # systemctl daemon-reload    # systemctl daemon-reload
  
-Damit unser FHEM-Daemon automatisch beim Hochfahren des Rechners gestartet werden kann, legen wir uns noch ein entsprechendes Startscript an+Den **FHEM-Daemon** starten wir nun ganz einfach
-   # vim /etc/init.d/fhem+   # systemctl start fhem.service
  
-<file bash /etc/init.d/fhem>#!/bin/sh+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>
  
-$Id: fhem 19 2012-07-27 21:33:44Z dws $ +Möchten wir überprüfen, ob der FHEM-Daemon läuft, haben wir mehrere Möglichkeiten. 
-# example init script for fhem +  - **systemctl** \\ <code> systemctl status fhem.service -l</code> <html><pre class="code"> 
-+<font style="colorrgb(0, 255, 0)"><b>● </b></font><font style="colorrgb(0, 0, 0)">fhem.service - FHEM service 
-# chkconfig2345 82 28 +   Loaded: loaded (/etc/systemd/system/fhem.service; disabled; vendor preset: disabled) 
-# descriptionFHEM Home automation+   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 
-# +  Process29809 ExecStart=/usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg (code=exited, status=0/SUCCESS) 
-# processname: fhem.pl + Main PID: 29810 (perl) 
-+   CGroup/system.slice/fhem.service 
-# Written by Django+           └─29810 /usr/bin/perl /usr/local/src/fhem/fhem.pl /etc/fhem.cfg
  
-DAEMON=/usr/bin/fhem.pl +Oct 08 08:49:23 vml000027.dmz.nausch.org systemd[1]: Starting FHEM service... 
-PIDFILE=/var/run/fhem.pid +Oct 08 08:49:23 vml000027.dmz.nausch.org systemd[1]: Started FHEM service.</font> 
-OPTION="/etc/fhem.conf" +</pre></html> 
-PROG="FHEM" +  - **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 
-test -x $DAEMON || exit 0+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 412: 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 446: 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 454: 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.1602102424.txt.gz
  • Zuletzt geändert: 07.10.2020 20:27.
  • von django