NFC Tags über iOS mit Loxone verbinden

Ab iOS 13 unterstützt Apple mit den neueren iPhones das Auslesen von NFC Tags im Hintergrund. In Verbindung mit der bereits vorinstallierten App "Kurzbefehle" können damit verschiedenste Aktionen ausgeführt werden, u.a. auch - zugegebenermaßen mit etwas Umweg - Loxone ferngesteuert werden.

Ein paar Beispiele: 

  • Man klebt einen NFC Tag an die Haustür. Hält man sein iPhone an den Tag löst es automatisch den Türöffner aus und man kann das Haus betreten, ohne die App bemühen zu müssen.

  • Das selbe kann man mit anderen Zugängen tun, beispielsweise Garagentor oder Gartentor.

  • Aktivieren von Lichtszenen per Tag: Ein NFC Tag am Lieblingsplatz auf der Couch wo man keinen Schalter hat, einfach Handy dran halten und man bekommt sein Lieblingslicht.

  • Aktivieren von "Schlaf Modus" wenn man das Handy Abends auf dem Nachttisch ablegt.

  • etc.

Alles was man dafür braucht ist ein iPhone (iPhone XS oder neuer), NFC Tags (gibts für wenig Geld z.B. bei Amazon), einen Raspberry Pi oder ähnliches im selben Netzwerk wie der Miniserver ist, der von außen per SSH erreichbar ist.

Schritt-für-Schritt-Anleitung

1. Serverseitige Skripte erstellen

Zuerst auf dem Raspi einloggen und dort ein Verzeichnis mit den Skripten anlegen. Im Verzeichnis das erste Skript erstellen und ausführbar machen.

? ~ ssh rasp Linux rasp 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l You have new mail. pi@rasp:~ $ mkdir loxone pi@rasp:~ $ cd loxone/ pi@rasp:~/loxone $ vi open_frontdoor.sh pi@rasp:~/loxone $ chmod +x open_frontdoor.sh



Inhalt des Skripts ist erstmal nur ein einfacher curl Aufruf auf den Miniserver auf die gewünschte Ressource. Dabei müssen Zugangsdaten mitgegeben werden.

curl http://username:passwort@miniserver/dev/sps/io/10b6ebaa-0385-002f-ffffc2088843cdac/1/pulse

Die URL habe ich aus der Webapplikation des Miniservers ausgelesen (Browser Konsole loggt die URL beim Klick auf den Button den man möchte). Wenn jemand eine elegantere Lösung kennt, bitte gerne hier ergänzen/ersetzen. Alternativ kann man natürlich auch die hier beschriebene Methode verwenden: REST Webservice.

2. Konfiguration auf dem iPhone

Auf dem iPhone erstellt man in der App "Kurzbefehle" eine neue Automation. Als Auslöser wählt man NFC aus und scannt den Tag den man später verwenden möchte. Als Aktion verwendet man "Skript über SSH ausführen". 

Ich empfehle auf dem iPhone einen neuen SSH Key zu erstellen. Ich habe einen 4096 bit RSA key dort erstellt. Den public Key habe ich mir per iCloud drive gespeichert und am Rechner ausgelesen. Den Key muss man auf dem Raspberry im File ~/.ssh/authorized_keys hinzufügen (neue Zeile), damit man später kein Passwort benötigt. Alternativ kann man natürlich auch sein Passwort auf dem iPhone eingeben.

Im Host Feld gibt man den Hostname seines Raspberrys ein, in den meisten Fällen wird man hier einen dynamischen DNS Eintrag verwenden. Port und Benutzer sind klar. Im Feld des Scripts gibt man den Namen des Scripts ein, das man zuvor erstellt hat. Im obigen Beispiel wäre das "loxone/open_frontdoor.sh".

Alternativen

Natürlich kann man auch direkt einen Aufruf auf den Miniserver machen und dabei vpn on demand verwenden. Meiner Erfahrung nach ist das aber leider sehr langsam, da i.d.R. das VPN aufgebaut werden muss. Der Zugriff über den SSH Tunnel ist super fix und i.d.R. öffnet sich die Haustüre innerhalb einer Sekunde.

Tipps

Vorsicht bei der Auswahl der Tags. Ich musste auch schmerzlich lernen, dass die Standard-NFC Tags nicht auf Metall-Oberflächen funktionieren. Es gibt sog. on-metal Tags, mit denen das auch z.B. auf einer Metall-Haustüre oder einem Metall-Garagentor funktioniert.

Verwandte Artikel