Volkszähler Daten aus dem Stromzähler auslesen

Ziel auslesen eines Smartmeters (EMH-ED300L) -> Vorbereitung für PV -> Wieviel „Watt“ brauchen wir denn und wie verteilt sich das?
Ich habe genutzt:
– USB-IR Lesekopf (von hichi aus dem PV Forum)
– RasPi mit Volkszähler Image

Als erstes den PIN vom Versorger besorgt, damit die Infrarotschnittstelle Daten ausgibt.
Mit einer Taschenlampe musste man den PIN eingeben – komisches Konstrukt, aber berührungslos. nichts für Leute mit zittrigen Händen.

Pi mit SD Karte und Volkszähler Image (Download von der Webseite volkszaehler.org) schreiben mit dem Raspberry Imager.

Feste DHCP IP vergeben und Erreichbarkeit getestet, Passwort geändert, so muss ich nicht im Keller stehen um zu konfigurieren.

USB Lesekopf an der Frontplatte anbringen und am Pi anschliessen.
Udev Rule erstellen, damit der Lesekopf immer unter einem bestimmten Namen

udevadm info --query=all --name=/dev/ttyUSB0

Uns interessiert die „Serial Short“

root@raspberrypi:/home/pi# udevadm info --query=all --name=/dev/ttyUSB0
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
[..]
E: ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller
E: ID_MODEL_ID=ea60
E: ID_REVISION=0100
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001
E: ID_SERIAL_SHORT=0001
[..]

Udev Rule erstellen, dann wird der Lesekopf immer unter dem gleichen namen ansprechbar, auch wenn an einem anderen USB Port angesteckt:

vi /etc/udev/rules.d/99-usb-ir-lesekopf.rules
SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="0001", SYMLINK+="usb-ir-lesekopf0"

Danach Volkszähler konfigurieren – zum start erstmal eine minimal Config erstellen (meters -> enabled, protocol sml und verbosity auf 15) und schauen, ob was ankommt:
/etc/vzlogger.conf

{
"retry" : 0,                /* how long to sleep between failed requests, in seconds */
"verbosity" : 15,           /* between 0 and 15 */
"log" : "/var/log/vzlogger/vzlogger.log",/* path to logfile, optional */
"local" : {
        "enabled" : false,  /* should we start the local HTTPd for serving live readings? */
        "port" : 8081,      /* the TCP port for the local HTTPd */
        "index" : true,     /* should we provide a index listing of available channels? */
        "timeout" : 30,     /* timeout for long polling comet requests, 0 disables comet, in seconds */
        "buffer" : 600      /* how long to buffer readings for the local interface, in seconds */
},
meters" : [{
        "enabled" : true,   /* disabled meters will be ignored */
        "protocol" : "sml", /* use 'vzlogger -h' for list of available protocols */
        "device" : "/dev/usb-ir-lesekopf0",
        },
]}
systemctl start vzlogger
tail -f /var/log/vzlogger/vzlogger.log
[..]
Dec 22 15:26:26][]     Startup done.
[Dec 22 15:26:26][mtr0] Config.local: 0
[Dec 22 15:26:27][mtr0] Got 4 new readings from meter:
[Dec 22 15:26:27][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=70862637.00 ts=1671719187367
[Dec 22 15:26:27][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=36159417.50 ts=1671719187367
[Dec 22 15:26:27][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=34703219.50 ts=1671719187367
[Dec 22 15:26:27][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=1553.80 ts=1671719187367
[Dec 22 15:26:28][mtr0] Got 4 new readings from meter:
[Dec 22 15:26:28][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=70862637.60 ts=1671719188732
[Dec 22 15:26:28][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=36159418.10 ts=1671719188732
[Dec 22 15:26:28][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=34703219.50 ts=1671719188732
[Dec 22 15:26:28][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=1560.00 ts=1671719188732
[Dec 22 15:26:30][mtr0] Got 4 new readings from meter:
[..]

-> Es kommen sekündlich neue Daten und mein Meter gibt folgende OBIS Codes aus.

1-0:1.8.0 (Gesamtzählerstand)
1-0:1.8.1 Zählerstand HT
1-0:1.8.2 Zählerstand NT
1-0:16.7.0 Aktuelle Leistung in Watt

Kommt hier nichts muss man erstmal suchen -> ggf die IR Diode nicht richtig platziert, debuggen nach volkszähler wiki

Jetzt muss man einen (oder mehrere) Kanäle anlegen, mich interessiert nur die Leistung, also lege ich im Frontend Webseite) einen Kanal an:
„Kanal hinzufügen“ -> Elektrische Energie (Leistungswerte) – öffentlich -> Stil Step, Name“Haus 1-0:16.7.0 Leistung“
Es wird eine UUID angezeigt (bekommt man auch nachträglich über das blaue „i“) die benötigt man für die vzlogger.conf

Man ergänzt die in der vzlogger.conf: indem man hinter die device Zeile den/die neuen Kanäle hängt:

{
"retry" : 0, /* how long to sleep between failed requests, in seconds */
"verbosity" : 15 , /* between 0 and 15 */
"log" : "/var/log/vzlogger/vzlogger.log", /* path to logfile, optional */

"local" : {
"enabled" : false, /* should we start the local HTTPd for serving live readings? */
"port" : 8081, /* the TCP port for the local HTTPd */
"index" : true, /* should we provide a index listing of available channels if no UUID was requested? */
"timeout" : 30, /* timeout for long polling comet requests, 0 disables comet, in seconds */
"buffer" : 600 /* how long to buffer readings for the local interface, in seconds */
},

"meters" : [{
         "enabled" : true, /* disabled meters will be ignored */
         "protocol" : "sml", /* see 'vzlogger -h' for list of available prot$ */
         "device" : "/dev/usb-ir-lesekopf0",
         "channels": [{
         "uuid" : "f0014260-8295-11ed-aaad-e54ab8ec0d75 <-UUID aus dem Frontend",
         "middleware" : "http://localhost/middleware.php",
         "identifier" : "1-0:16.7.0" /* Leistung */
         }]
         }
]}

nochmal starten und log anschauen:

systemctl start vzlogger
tail -f /var/log/vzlogger/vzlogger.log
[Dec 23 08:52:05][mtr0] Got 4 new readings from meter:
[Dec 23 08:52:05][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=70890821.30 ts=1671781925108
[Dec 23 08:52:05][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=36174328.40 ts=1671781925108
[Dec 23 08:52:05][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=34716492.90 ts=1671781925108
[Dec 23 08:52:05][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=1013.00 ts=1671781925108
[Dec 23 08:52:05][chn0] Adding reading to queue (value=1013.00 ts=1671781925108)
[Dec 23 08:52:05][chn0] ==> number of tuples: 1
[Dec 23 08:52:05][chn0] compare: 1671781923743 1671781925108
[Dec 23 08:52:05][chn0] copied 1/1 values for middleware transmission
[Dec 23 08:52:05][chn0] JSON request body: [ [ 1671781925108, 1013 ] ]
[Dec 23 08:52:05][chn0] CURL: Found bundle for host localhost: 0x74a07ed0 [serially]
[Dec 23 08:52:05][chn0] CURL: Can not multiplex, even if we wanted to!
[Dec 23 08:52:05][chn0] CURL: Re-using existing connection! (#0) with host localhost
[Dec 23 08:52:05][chn0] CURL: Connected to localhost (::1) port 80 (#0)
[Dec 23 08:52:05][chn0] CURL: Sent 27 bytes: '[ [ 1671781925108, 1013 ] ]'
[Dec 23 08:52:05][chn0] CURL: upload completely sent off: 27 out of 27 bytes
[Dec 23 08:52:05][chn0] CURL: Mark bundle as not supporting multiuse
[Dec 23 08:52:05][chn0] CURL: Received 26 bytes: '{"version":"0.3","rows":1}'
[Dec 23 08:52:05][chn0] CURL: Connection #0 to host localhost left intact
[Dec 23 08:52:05][chn0] CURL Request succeeded with code: 200
[Dec 23 08:52:05][chn0] emptied all (1) values

Man sieht jetzt auch die CURL requests mit dem der Datenwert in die Datenbank/an die Middleware) geschickt wird.

In der Weboberfläche kann man nach kuzer Zeit die ersten Daten bewundern.
Danach das logging im vzlogger.conf von „15“ auf „0“ stellen, da sonst sehr viel geloggt wird (schlecht für die Haltbarkeit der SSD). ggf testen ob der Pi auch einen Reboot übersteht und die vzlogger dann automatisch anspringt

Sehr geholfen hat mir:
https://wiki.volkszaehler.org/howto/emh_pv-anlage
https://wiki.volkszaehler.org/howto/debug

Fortinet – ein bisschen Shell für alle

Auch Fortinet kocht nur mit Wasser und man kann einen eingeschränkten Blick hinter die Kulissen werfen:


FG100A############ # fnsysctl ls -al
drwxr-xr-x 14 0 0 Sun Oct 4 21:42:01 2015 320 .
drwxr-xr-x 14 0 0 Sun Oct 4 21:42:01 2015 320 ..
drwxr-xr-x 2 0 0 Sun Oct 4 21:41:44 2015 2740 bin
drwxr-xr-x 8 0 0 Sun Oct 4 21:41:56 2015 1024 data
drwxr-xr-x 2 0 0 Wed Sep 4 10:38:16 2013 40 data2
drwxr-xr-x 5 0 0 Sun Oct 4 21:42:21 2015 16920 dev
lrwxrwxrwx 1 0 0 Sun Oct 4 21:41:31 2015 8 etc -> data/etc
lrwxrwxrwx 1 0 0 Sun Oct 4 21:41:31 2015 1 fortidev -> /
drwx------ 2 0 0 Sun Oct 4 21:42:01 2015 40 ipc_quar
drwx------ 2 0 0 Sun Oct 4 21:42:01 2015 40 ipc_quar_backup
drwxr-xr-x 2 0 0 Sun Oct 4 21:41:32 2015 380 lib
drwxr-xr-x 38 0 0 Sun Oct 4 21:41:44 2015 2280 migadmin
dr-xr-xr-x 74 0 0 Sun Oct 4 21:41:27 2015 0 proc
drwxr-xr-x 2 0 0 Sun Oct 4 21:41:44 2015 60 sbin
drwxrwxrwt 9 0 0 Wed Oct 28 06:32:41 2015 2260 tmp
drwxr-xr-x 9 0 0 Sun Oct 4 21:42:01 2015 180 var

IPv6 – Linuxserver hinter der Fritzbox betreiben

Als (verspäteter) Nachzügler für http://janscholten.de/blog/2012/08/ipv6-daheim-mit-einen-sixxs-tunnel-und-einer-fritzbox/

Wie betreibe ich den einen Server mit IPv6 hinter der Fritzbox und was muss ich einstellen, damit der Server erreichbar ist?

Wie haben im ursprünglichen Artikel an der Fritzbox einen SixXS Tunnel erstellt und dort ein entsprechendes IPv6 Prefix bekommen.

Für den Linuxserver habe ich eine (mehrere?) feste IPv6 Adressen eingetragen, so dass hier per DHCP entsprechende Adressen verteilt werden.
setdhcp
dhcp-fb

Am Linuxserver habe ich per

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

nichts besonderes eingetragen.

sehe aber mittels ifconfig die entsprechenden (benutzten) Adressen:


root@seth:~# ifconfig
eth0      Link encap:Ethernet  Hardware Adresse 00:08:54:55:e7:de  
          inet Adresse:192.168.2.2  Bcast:192.168.2.255  Maske:255.255.255.0
          inet6-Adresse: 2001:4dd0:ff00:8e78:6438:..:3eef/64 Gültigkeitsbereich:Global
[..]
          inet6-Adresse: fe80::208:54ff:fe55:e7de/64 Gültigkeitsbereich:Verbindung
          inet6-Adresse: 2001:4dd0:ff00:8e78:8413:..:67d0/64 Gültigkeitsbereich:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1

Damit sollte der PC per (fester) IPv6 ins Netz kommen.
Für die Weiterleitung bemüht man in der Fritzbox
Internet -> Freigaben -> IPv6 und legt einen neuen Host an.
Freigabe
Ich rate dringend davon ab den Rechner komplett ins Netz zu hängen, sondern würde nur ping6, 80 und 443 freigeben.

Testen kann man das z.B. via ping auf der Seite http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php

Den Zugriff mit einem Browser via https://[die eigene IPv6-Adresse] (Klammern mitangeben).

Hat man Zugriff auf einen DNS Server kann man danach natürlich einen AAAA Eintrag machen und dem eigenen Server einen Domainnamen geben.

Einfacher Zugriff auf andere CMM bei 6900/OS10k im Virtual Chassis

Will man „mal eben“ auf die andere CMM in einem OS10K-Chassis oder eionem 6900-VC zugreifen bieten sich neben den vorher dokumentierten Wegen auch der direkte Zugriff auf den NFS mount an.

ACHTUNG hier endet die Alcatel Gewährleistung, die superuser shell sollte nur benutzt werden, wenn man weiß was man tut.

-> su
Entering maintenance shell. Type 'exit' when you are done.

TOR #-> cd /mnt/
TOR #-> ls
CMMA           CMMB           chassis2_CMMA  chassis3_CMMA  otherCMM

TOR #-> ls -al /flash
drwxr-xr-x   13 admin    user          4096 Jan 20 15:41 .
drwxr-xr-x   23 root     root             0 Jan 20 15:37 ..
-rw-r--r--    1 admin    user          2195 Jan 20 15:51 .bash_history
drwxr-xr-x    2 admin    user          4096 Jan 20 15:41 app-signature
drwxr-xr-x    2 admin    user          4096 Jan 20 15:48 certified
drwxr-xr-x    2 admin    user          4096 Dec 17  2013 diags
drwxr-xr-x    2 admin    user          4096 Jan 20 15:37 foss
-rw-r--r--    1 admin    user           256 Jan 20 15:37 hwinfo
-rw-r--r--    1 admin    user            40 Jan 16 12:25 licence.txt
drwxr-xr-x    2 admin    user         16384 Dec 18  2013 lost+found
drwxr-xr-x    2 admin    user          4096 Sep  5 07:30 network
drwxr-xr-x    3 admin    user          4096 Sep  5 07:30 pmd
drwxr-xr-x    3 admin    user          4096 Sep  5 07:30 switch
-rw-r--r--    1 admin    user        998306 Jan 16 12:59 swlog
drwxr-xr-x    2 admin    user          4096 Jan 20 15:41 swlog_archive
-rw-r--r--    1 root     root       1187945 Jan 20 16:31 swlog_chassis1
-rw-r--r--    1 admin    user       1280107 Jan 20 15:41 swlog_chassis1.0
-rw-r--r--    1 admin    user       1280105 Jan 20 14:44 swlog_chassis1.1
-rw-r--r--    1 admin    user       1280059 Jan 20 13:24 swlog_chassis1.2
drwxr-xr-x    2 admin    user          4096 Jan 20 13:25 system
-rw-r--r--    1 admin    user       6499328 Jan 20 09:46 tech_support_eng.tar
drwxr-xr-x    2 admin    user          4096 Jan 20 15:47 working

TOR #-> ls -al /mnt/chassis2_CMMA      
drwxr-xr-x   13 admin    user          4096 Jan 20 15:39 .
drwxr-xr-x    7 root     root             0 Jan 20 15:41 ..
-rw-r--r--    1 admin    user          3417 Jan 20 14:59 .bash_history
drwxr-xr-x    2 admin    user          4096 Jan 20 15:41 app-signature
drwxr-xr-x    2 admin    user          4096 Jan 20 15:48 certified
drwxr-xr-x    2 admin    user          4096 Dec 17  2013 diags
drwxr-xr-x    2 admin    user          4096 Jan 20 15:37 foss
-rw-r--r--    1 admin    user           256 Jan 20 15:38 hwinfo
-rw-r--r--    1 admin    user            40 Jan 16 12:28 licence.txt
drwxr-xr-x    3 admin    user         16384 Dec 18  2013 lost+found
drwxr-xr-x    2 admin    user          4096 Sep  5 03:42 network
drwxr-xr-x    3 admin    user          4096 Sep  5 03:42 pmd
drwxr-xr-x    3 admin    user          4096 Jan 16 13:17 switch
-rw-r--r--    1 admin    user        210830 Jan 16 12:59 swlog
-rw-r--r--    1 admin    user       1280003 Jan 16 12:31 swlog.0
drwxr-xr-x    2 admin    user          4096 Jan 20 13:39 swlog_archive
-rw-r--r--    1 root     root        789870 Jan 20 16:31 swlog_chassis2
-rw-r--r--    1 admin    user       1280028 Jan 20 15:39 swlog_chassis2.0
-rw-r--r--    1 admin    user       1280018 Jan 20 14:36 swlog_chassis2.1
-rw-r--r--    1 admin    user       1280040 Jan 20 13:39 swlog_chassis2.2
-rw-r--r--    1 admin    user       1280054 Jan 20 11:45 swlog_chassis2.3
drwxr-xr-x    2 admin    user          4096 Jan 20 15:41 system
-rw-r--r--    1 admin    user       6887936 Jan 20 09:47 tech_support_eng.tar
-rw-r--r--    1 admin    user           437 Jan 16 13:01 vcsetup.cfg.1.err
drwxr-xr-x    2 admin    user          4096 Jan 20 15:47 working
TOR #-> exit

Eignet sich z.B. um mal schnell Logfiles tech-support.eng etc zu kopieren.

Mit ssh geht es auch, ist aber nicht so cool 😉

Konfiguration freeradius für dot1x Teil 2

Weiter gehts.
Ich möchte dot1x Authentifizierung am Switchport machen. Man braucht dazu ein Zertifikat, damit EAP-TLS funktioniert, das baut man dank entsprechender Tools von freeradius ganz einfach:
Man löscht die Links und den ganzen kram aus /etc/certs und kopiert die Tools:
rm /etc/freeradius/certs/*
cp /usr/share/docs/freeradius/examples/certs/* /etc/freeradius/certs

Dann passt man die Dateienn server.cnf und ca.cnf an.
in ca.cnf:
[ CA_default ]
default_days = 3660
[ req ]
input_password = meinpass
output_password = meinpass
[certificate_authority]
countryName = DE
stateOrProvinceName = radius@jan
localityName = daheim
organizationName = Radius-Teste
emailAddress = me@example.com
commonName = "Radiustest"

Damit gilt das Zertifikat 10 Jahre. Das Password muss man auch in der /etc/freeradius/eap.conf bei private_key_password angeben
(per default steht es dort auf „Whatever“), damit der Schlüssel nachher geladen werden kann.

In die server.cnf übernimmt man Laufzeit und die Daten aus der Ceritificate authority.

mit
make all
baut man seine Zeritifkate

Wichtig: ca.der auf memory stick o.ä. kopieren, das ist unser Stammzertifikat und das brauchen wir auf den Clients, damit diese nachher eine TLS Tunnel aufbauen können.

Um die Konfig erstmal nicht mehr anpassen zu müssen machen wir noch eine Änderung die es später erlauben wird VLANs für User zurückzugeben. Dafür setzten wir in
/etc/freeradius/eap.conf
Die in ttls und peap ändern wir den Parameter von „no“ auf „yes“
use_tunneled_reply = yes

Damit sollte die Konfiguration von Freeradius fertig sein.

Jetzt spielt man das Zertifikat im Computer ein, bei XP durch Doppelklick, bei Windows 7 muß man händisch den „Vertrauenswürdigen Zertifikatsspeicher“ wählen.

Wie man den Cisocswitch aktiviert und Windows einstellt kommt im nächsten Artikel.

FreeRadius Server unter Linux für User-Authentication & dot.1X

Wer viel mit Netzwerkgeräten arbeitet stößt früher oder später zwangsläufig auf das problem User authentifizieren zu wollen. In einem Netzwerk mit 50 Switchen ist es nicht zielführend lokale User auf jedem Switch einzutragen.
Passwortänderung? Na klar auf 50 Switchen ist man dann beschäftigt.
Oder man will Netzwerkauthentifizierung nach 802.1X – Der User darf erst nach Eingabe seines Usernamen/Passworts ans Netzwerk. Grade in größeren Firmen ist das Problem der unbewachten LAN Dose öfter Thema.
Ein anderer Anwendungsbereich sind WLANs. PreShared Keys kennt und nutzt mittlerweile fast jeder – nur was machen wenn man dieses ändern will? Jedem User das neue Passwort nennen? Ein Alptraum, geheim zu halten ist so ein PSK auch eher schwer. Hier gibt es die Lösung in Form von WPA2-Enterprise, wo ein Radius Server die User Authentifizierung übernimmt, es also keine gemeinsamen Shared Secrets mehr gibt.

Für all sowas benötigt man einen Radiusserver, den man unter Linux auch als freie Version bekommt.
Ich will hier die notwendigen Konfigurationen für Freeradius unter Ubuntu 10.04 beschreiben.
installieren:
aptitude install freeradius

Man sagt welcher Client sich anmelden darf (z.B. Switch, APs etc) und hat dafür ein Shared Secret definiert, mit dem die Radius Connection verschlüsselt ist. Es handelt sich hier um Netzwerkgeräte, nicht um ein Shared Secret, was der Endwanwender je zu Gesicht bekommt.

Den Client definiert man in
/etc/freeradius/clients.conf
client 172.16.10.100/32 {
secret = MeinPasswort
shortname = Cisco ASA
}

alternativ kann man auch ganze Netze (z.B. mit AP Adressen oder Switchen mit dem gleichen Passwort freigeben:
client 172.16.11.0/24 {
secret = MeineSwitche
shortname = Meine Switche sind in dem Netz
}

User und Passwörter brauchen wir auch, die legt man in der
/etc/freeradius/users an
"jan" Cleartext-Password := "jankanns"
"test" Cleartext-Password := "test123"

Dann der Radius Server neu starten und das reicht zumindest schonmal um User an eine ASA zu anzumelden.

Die Einstellungen an der ASA:

Configuration > Device Management > Users/AAA > AAA Server Groups

Dort eine Radius Servergruppe Anlegen und im unteren Fenster die IP hinzufügen.
Richtiges Interface wähen, die Ports sind 1812 und 1813 das Shared Secret für diesen Client (in diesem Fall „asapass“) gehört in „Server Secret Key“.
Das „Common Password“ Feld bleibt frei.
Mit dem „Test“ Button kann man die Authentication testen

Auf der CLI testet man mit
root@server:~# radtest test test123 127.0.0.1 1812 testing123
Sending Access-Request of id 158 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test123"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=158, length=20

Wenn man Debug Ausgaben haben will startet man Radius mit dem Parameter X:

/etc/init.d/freeradius stop
freeradius -X

Und schon ergiessen sich viele Meter Debugausgaben.

Ich teste jetzt mit verschiedenen Switchen und versuche es auch mal mit WLAN und EAP-TLS und schreibe dann ein Update-Artikel.