- Python 57.3%
- C++ 39.6%
- C 3.1%
| src | ||
| README.de.md | ||
KrautStatus
Diese Repository enthält die Sourcen für die Software des KrautStatus. Der KrautStatus ist ein Projekt zur Kommunikation, ob der Krautspace geöffnet oder geschlossen ist.
Der KrautStatus besteht aus drei Teilen: einer Kombination aus einem Embedded Device und einem Sensor, einer Serverkomponente und einem Webserver, welcher das API File bereitstellt.
Das Embedded Device wertet über einen Reedsensor den aktuellen Stand des Türschlosses aus und sendet diese Information an den Server. Der Server aktualisiert das API File und sendet einen Toot an Mastodon. Auch unsere Webseite wertet den entsprechenden Eintrag des API Files aus und kommuniziert den Status.
Das API File folgt den Spzifikationen der Space API. Diese Spezifikation enthält auch ein Feld für den aktuellen Status.
Server
Der Server ist aktuell in Python3 geschrieben. Er nimmt die Daten des Clients entgegen und validiert sie. Ist die Validierung erfolgreich, aktualisiert er das API File und sendet (wenn so konfiguriert) einen Toot an einen Mastodon Account.
Server Setup
Vor dem Start des Servers muß die Datei apistatusd.conf.template in apistatusd.conf umbenannt werden. Hier sollten dann die URL und das Token der Mastodoninstanz, sowie der Pfad zum API File angepaßt werden. Für die Verwaltung des Servers existiert die Systemd-Unit apistatusd.service. Diese sollte unter /etc/systemd/system/ platziert werden.
Client
Aktuell kommt als Client ein ESP32-1732S019 zum Einsatz. Der Client überwacht einen an der Tür angebrachten Reedsensor. Dazu wird ein Pin mittels Pullup Widerstand auf Hight gesetzt. Schließt der Reedsensor, fällt der Pegel auf Null. Bei einer Änderung des Pegels sendet der Client neuen Zustand an den Server. Die Stromversorgung erfolgt über ein USB Ladekabel.
ESP32 Setup
Das Sketch für den ESP liegt im Verzeichnis src/client/esp32-1732s019/statusclient/. Vor dem Compilieren muß die Datei credentials.template in credentials.h umbenannt werde. Danach die SSID und das Passwort an das verwendete WLAN anpasse. In der Datei config.h müssen Name und Port des Servers angepaßt werden. Nun kann man den Quellcode compiliert und auf das Gerät geflasht werden.
Zum Compilieren und Flashen kann entweder die Arduino IDE oder die Arduino CLI verwendet werden.
$ arduino-cli compile -b esp32:esp32:esp32s3 statusclient.ino
$ arduino-cli upload -p /dev/ttyUSB0 -b esp32:esp32:esp32s3 statusclient.ino
Das Sketch hängt von verschiedenen Bibliotheken ab:
- Arduino Core esp32
- WiFI
- Arduino
- Arduino_GFX_Library
Lizenz
Der Quellcode unterliegt der AGPL 3.0