|
|
|
# Tür auf
|
|
|
|
|
|
|
|
Die Tür (z.B. die Haustür) mit dem Handy auf Knopfdruck öffnen!
|
|
|
|
|
|
|
|
Im Kern steht ein Arduino, der an einem Output-Pin an ein Relais angeschlossen ist und damit die Tür öffnet.
|
|
|
|
Ziel ist es, dass ich Personen meines Vertrauens ermöglichen möchte, über die App die Tür zu öffnen. Dies soll natürlich so sicher sein, dass niemand sonst Zugriff hat.
|
|
|
|
|
|
|
|
## Aufbau
|
|
|
|
|
|
|
|
* **Arduino** (mit Relais und Ethernet-Shield) zum Tür öffnen. Per Internet/HTTP nicht direkt von "außen" erreichbar. (Steht bei mir im gut geschützten internen Netz.) Enthält eine einfache PIN-Logik. Die PINs (4 Ziffern) werden nur hier (im Arduino intenen Speicher) gespeichert. Der Benutzer muss sie sich merken. Dadurch entsteht auch dann ein zusätzlicher Schutz für den Fall des Handy-Verlusts.
|
|
|
|
+ Der Arduino-Sketch findet sich hier im Repo unter "Tuerauf_arduino".
|
|
|
|
- Es ist ein File config.h (Vorlage config-template-h) anzulegen.
|
|
|
|
- Darin sind die verschiedenen Arduino-Anschluss-Pins, IP-Nummer etc. festgelegt.
|
|
|
|
+ Es sind zwei Relais anzuschließen:
|
|
|
|
- Eins, welches die Tür öffnen (das Wesentliche!)
|
|
|
|
- Eins, welches zum Test regelmäßig geschaltet und geprüft wird, um zu bemerken, wenn die Relais nicht mehr schalten. Dazu ist dieses 2. Relais so zu verschalten, dass ein Arduino-Input-Pin durch den Schaltvorgang (LOW) von 0 auf 5V gezogen wird. Dies prüft die Sketch-Logik uns stellt so Fehlverhalten fest.
|
|
|
|
|
|
|
|
* **Web-Server** Von "außen" (Internet) erreichbar.
|
|
|
|
enthält Logik zum Registrieren der Benutzer-Apps. Reicht erfolgreich authentifizierte Aufrufe an den Arduino weiter.
|
|
|
|
+ nur Zugriffe, die das APPSECRET (s.u.) enthalten, werden bearbeitet.
|
|
|
|
+ die "alte" PHP-Version liegt hier im Repo im Verz. "php" (ist aber nicht mehr zu verwenden)
|
|
|
|
+ die neue Java-Version liegt im Repo https://github.com/dsteinkopf/tuerauf-backend-java
|
|
|
|
+ Sie ist außerdem als Docker-Image zu haben: https://registry.hub.docker.com/u/dsteinkopf/tuerauf/ (Tag "prod" ist ein automatisch erstelltes Image des master-Branches.)
|
|
|
|
|
|
|
|
* **App**
|
|
|
|
wird mit Hilfe eines App-Links der Form tuerauf:///?https%3A%2F%2Fmeinedomain.top%2Ftuerauf%2Ffrontend%2F/APPSECRET konfiguriert. Damit wird eingestellt, dass der Webserver unter https://meinedomain.top/tuerauf/frontend/ zugreift, welcher durch das APPSECRET geschützt ist. Die App speichert folgendes persistent:
|
|
|
|
+ APPSECRET, um überhaupt auf den Server zugreifen zu können
|
|
|
|
+ Einen geheimen Key ("installationID") des Users, der beim Registrieren des Users von der App aus erzeugt wird und später den User beim Server identifiziert und authentifiziert.
|
|
|
|
+ NICHT gespeichert: Die Geo-Koordinaten, wo sich die Tür befindet.
|
|
|
|
+ NICHT gespeichert: Die PIN des Users.
|
|
|
|
|
|
|
|
## Verwendung der App
|
|
|
|
|
|
|
|
Folgende Schritte sind nötig, um die App zu verwenden:
|
|
|
|
* App installieren
|
|
|
|
* Konfig-Link im Handy anklicken (s.o.)
|
|
|
|
* App beim Server registrieren:
|
|
|
|
+ Klick auf Zahnrad; Name
|
|
|
|
+ gewünschte PIN eingeben
|
|
|
|
+ "Speichern" klicken: App ruft BASEURL/frontend/registerUser?appsecret=APPSECRET&installationId=ii1&name=nn1&pin=1111 auf.
|
|
|
|
* Server-Admin muss Benutzer freischalten (ggf. vorher mündliche Rücksprache):
|
|
|
|
+ Admin zeigt User an: BASEURL/dashboard/ (Java-Backend / eigenes Repo)
|
|
|
|
+ Admin aktiviert dort neue User
|
|
|
|
+ Admin schickt PINs an arduino, indem er die vorher passwordPin (im Arduino-Sketch im config.h festgelegt) eingibt.
|
|
|
|
* Benutzer begibt sich in die Nähe der im Server gespeicherten Koordinaten, ruft die App auf und gibt seine PIN ein.
|
|
|
|
|
|
|
|
## Haftungsausschluss
|
|
|
|
|
|
|
|
Diese App, jeglicher Code und Informationen dienen lediglich zu Informations- und Weiterbildungszwecken. Sie sind nicht für den Produktivbetrieb gedacht. Der Anbieter der App stellt sie, so wie sie sind, zur Verfügung - ohne jeglichen Support oder Haftung für etwaige direkte oder indirekte Schäden. |
|
|
|
\ No newline at end of file |