Branche: Werbeagentur.
Realisiert mit Linux, Python, PHP, MySQL, Ionic 2, Angular 2, JavaScript.
Eine Alarmanlage ohne LAN oder Internetanbindung von überall per Handy App steuern? Mit der richtigen Technik lässt sich alles, was einen Schalter hat auch über das Internet per Handy App bedienen. Sei es eine CNC-Maschine, Produktionshallen-Beleuchtung, Garagentor, Stehlampe, Kaffeemaschine oder auch wie in diesem Projekt: eine Alarmanlage.
Das folgende Prinzip funktioniert mit allen Alarmanlagen, die eine Fernbedienung haben.
Alarmanlage ELRO HA68S internetfähig machen
Das Modell ELRO HA68S ist als Alarmanlage im Preissegment unter 500 EUR angesiedelt. Die Alarmanlage lässt sich lediglich an der Basisstation selbst oder per Funk-Fernbedienung im Umkreis von einigen 100 Metern bedienen. Ansonsten handelt es sich bei der ELRO HA68S ein geschlossenes System, d.h. es gibt weder programmtechnischen Zugriff auf die interne Steuerung der Anlage noch eine Anbindung an das lokale Netzwerk (LAN) oder das Internet.
Um kompliziertere Eingriffe an der Basis-Station zu vermeiden wurde als Schnittstelle die Funk-Fernbedienung gewählt.
Wie Eingangs erwähnt, lässt sich im Prinzip alles was einen Button hat, auch ans Internet anbinden. Hierzu wurde kurzerhand die Fernbedienung in ihre Einzelteile zerlegt. Von Interesse waren nur 2 Buttons: Arm (Anlage scharf schalten) und Disarm (Scharfschaltung aufheben). Beide Buttons wurden über eine Relais-Karte an einen Raspberry Pi angebunden.
Relais sind “elektrische Schalter”, die nun unsere mechanischen Schalter ersetzen und programmtechnisch gesteuert werden können. Bei der Gelegenheit wurden 2 weitere Kabel an die Batterie-Halterung der Fernbedienung angelötet. So wird diese direkt über den Raspberry Pi versorgt und Ausfälle wegen leerer Batterie gehören der Vergangenheit an.
Alarmanlage ELRO HA68S im Internet: Die Software
Die Software besteht aus 3 Teilen:
1. Der App Server
Der Application Server läuft auf dem Raspberry Pi und wartet auf Datenpakete der mobilen App. Sobald ein entsprechender Befehl von der Handy App eintrifft, wird das entsprechende Relais ausgelöst und die Anlage wird über die mit dem Relais verdrahteten Fernbedienung scharf- oder unscharf geschaltet. Die Mobile App erhält vom App-Server anschliessend Rückmeldung ob die Aktion erfolgreich war.
Die Datenpakete sind entsprechend verschlüsselt. Der App Server funktioniert nur mit der eigens auf diesen Server konfigurierten Mobilgeräte.
2. Das Backend
Das Backend läuft ebenfalls auf dem Raspberry Pi und lässt sich per Browser ausschliesslich aus dem internen Netzwerk aufrufen. Es stellt folgende Funktionen bereit:
- Komplettes Management des Backend-Users (Bearbeiten User-Profil, Passwort-Vergabe und -Änderung, Passwort-Vergessen-Funktion)
- Ein Dashboard mit allen wichtigen Angaben zu Hard- und Software, aktuelle CPU- und Speicherparameter, Netzwerk-Statistiken etc.
- Konfiguration des integrierten Mail-Servers zum Versenden von System-Nachrichten.
- Konfiguration des integrierten API-Servers.
Das API (Application Programming Interface) ist die Schnittstelle zwischen der mobilen App und dem App Server. Hier werden Zugangsparameter wie die externe URL samt Firewall-Port, ein API-Token und -Kennwort konfiguriert. Alle Konfigurationsparameter werden über einen dynamisch erzeugten QRCode an das Mobilgerät übermittelt. - Shutdown und Reboot der Hardware.
- Bereitstellen der Serveradresse via Bonjour im LAN. Ein Bonjour-fähiger Browser (z.B. Apple Safari) kann so ohne Kenntnis der IP-Adresse auf das Backend zugreifen.
3. Die mobile App
Die mobile App läuft plattformübergreifend unter Android oder iOS und stellt folgende Funktionen zur Verfügung:
- Arm oder Disarm der Alarmanlage mit einem einzigen Klick.
- Log der einzelnen Aktionen mit Datum und Uhrzeit.
- API-Konfiguration durch manuelle Eingabe oder komfortables Einscannen des API Server QRCodes über die eingebaute Kamera des Handys oder Tablets.
Selbst auf langsamen mobilen Geräten läuft die App nahezu ohne Latenz. D.h. zwischen Antippen des Buttons in der App und Schalten des Relais liegt weniger als 1 Sekunde.