Client- und Serveranwendung, um den Raumstatus in die Status-API zu veröffentlichen.
  • Python 57.3%
  • C++ 39.6%
  • C 3.1%
Find a file
2026-04-29 21:33:39 +02:00
src client holt zeit per ntp 2026-04-29 21:33:39 +02:00
README.de.md readme hinzu 2026-04-12 20:22:13 +02:00

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