====== Portal 300 / shack open close monitor | P300 ======
{{tag>project infrastructure shackoperations process hardware software}}
{{infrastruktur:portal300:p1090326-annotated.jpg?600}}
**Legende** (Auszug aus [[infrastruktur:portal300#aufbau|Portal300 / Aufbau]] )
* APU
* WLAN-Accesspoint für SSID "Portal-Dev"
* Zentrale Steuerung für
* ESP32 "Status"
* ESP32 "Status"
* empfängt den Zustand des Portals via USB serial
* übermittelt den Zustand des Portals über das shack-WLAN zum Internetservice
Das Open/Close-Monitoring basiert auf der Annahme, dass die shack-Türe nur unverschlossen ist, wenn der shack geöffnet ist.
===== Abstract =====
An dem unteren USB-Port der APU ist ein ESP32-µC angeschlossen.
Er verbindet sich mit dem WLAN "shack". Erhält er das Byte 0x12
von der APU, beginnt er alle 60 Sekunden einen HTTPS-Request, "Ping" genannt,
an den API-Endpoint unter https://api.shackspace.de/v1/space/notify-open?auth_token=**** zu senden. (**** repäsentiert hier ein Shared Secret,
es ist im Passwort-Tresor unter dem Stichwort "API" zu finden).
Serverseitig liegt api2.shackspace.de unter /srv/api.shackspace.de die Softwareinstallation. Der Prozess ./api lauscht auf Port 8081 nach den "Pings" und schreibt den Epoch-Zeitstempel in die Datei /srv/api.shackspace.de/www/last-seen.txt . Der HTTPS-Request wird dabei nicht direkt von api2 behandelt, sondern
wird von dem HTTP-Proxy auf proxy2.shackspace.de vermittelt.
Anhand des Alters dieses Zeitstempels entscheiden weitere API-Funktionen,
wie https://api.shackspace.de/v1/space und https://api.shackspace.de/v1/spaceapi
ob der shack als "open" oder "closed" reportet wird.
Die Anzeige im Kopf der Landingpage greift auf https://api.shackspace.de/v1/space zurück.