Infrastruktur

Door

Projekte Türstatus, Grafana und spaceapi.json

Netzwerk
IPv4172.23.195.36
IPv62a01:367:ff1f:100::36
Hostnamedoor
SwitchPowerConnect2716
Port4
DoseVT3 20
Stromverbrauch
max5W
normal~2W

Türstatus

Die Aktualisierung des Türstatus und der spaceapi.json nimmt ein Python-Skript (Ultra-Krebs) vor, das bei Betätigung des (ehemaligen FLTI*-) Switches den Status aktualisiert. Dieses Skript wird durch den systemd-unit spaceapi.service verwaltet. Dank der Kompatibilität zur Space API lassen sich der Status der Tür sowie allgemeine Informationen zum [hsmr] auch mit diversen Anwendungen für die Space API abfragen und auswerten.

Details

System

Der Raspberry Pi läuft mit der Minimalversion von Raspbian GNU/Linux 9. In /root/.ssh/ liegen die SSH-Schlüssel um dieses Wiki von wega.reis.asia lokal via sshfs zu mounten.

/etc/fstab

Bitte einloggen.

/etc/dhcpcd.conf

 # No SLAAC plz
 # slaac private

 interface wlan0
 static ip_address=172.23.195.36/24
 static ip6_address=2a01:367:ff1f:100::36/64
 static routers=172.23.195.1
 static domain_name_servers=172.23.195.1 2a01:367:ff1f:100::1

Pulseaudio

Via USB ist eine externe Soundkarte mit dem Pi verbunden, über welche dann via PulseAudio over network Musik abgespielt werden kann.

 $ sudo apt-get install pulseaudio pulseaudio-module-zeroconf

 $ cat /etc/pulse/default.pa
 # Änderungen sind:
 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;172.23.195.0/24 auth-anonymous=1
 load-module module-zeroconf-publish
 # …
 # Siehe pacmd list-sinks | grep -e 'name:' -e 'index:'
 set-default-sink alsa_output.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00.analog-stereo

spaceapi-Skript

Wegen /etc/systemd/system/spaceapi.service wird beim Systemstart /usr/bin/spaceapi.py --file /mnt/wega/spaceapi.json --wiki /mnt/wega/wiki.d/Site.SiteNav aufgerufen, wobei diese Pfade in /etc/conf.d/spaceapi stehen. Zum Neustarten nach Crash hilft systemctl restart spaceapi. Hardware debugging per gpio readall. Das Script erfüllt 2 Dinge:

  • Status des Schalters über Interrupt erfassen (und beim Start des Programms) und den Status als JSON in Topic "door" des MQTT Brokers auf b2s.hsmr.cc schreiben
  • Subscribed auf das Topic "door" in o.g. MQTT Broker und ändert bei Updates entsprechend spaceapi und Webseite

remote update script

Da der Türstatus über einen MQTT-Broker läuft, kann man auch von außerhalb der Räumlichkeiten den Status ändern (bspw. weil man vergessen hat den Schalter bei verlassen umzulegen). Dafür gibt es folgendes Script (einloggen um Link zu sehen):

Dieses Script basiert auf Python 3 und paho-mqtt, was mittels pip install paho-mqtt nachinstalliert werden kann.

drehtuer, MQTT-InfluxDB-Bridge

Der drehtuer.service sorgt dafür, dass bei jeder MQTT-Nachricht der door der enstprechende Zustand in eine InfluxDB geschrieben wird. Grafisch lässt sich dies z.B. im Grafana betrachten. Der Code befindet sich auf GitHub.

Montag, 2020-03-02

  • MQTT an InfluxDB angebunden

Sonntag, 2019-11-03

  • Türstatus läuft jetzt über MQTT über b2s.
  • Für den aktuellen Zustand und live-updates: Subscribe topic "door" auf b2s.hsmr.cc

Dienstag, 2019-01-01

  • Neuen Türstatus mit neuem Pi gebaut.
  • Der ehemalige FLTI*-Schalter wird nun für den Öffnungsstatus genutzt: 0 heißt geschlossen, I heißt auf.

Sonntag, 2018-11-25

  • /home/wiki/webs/hsmr_cc/docs/wiki.d/Site.SiteNav von Hand auf unbesetzt gesetzt. Hardware abgebaut?
  • Sehr händisch auf Umzug gesetzt, da abgebaut.

Freitag, 2016-02-26

  • Von angebrochenem Schalter noch mehr abgebrochen damit er nicht mehr klemmt.

Donnerstag, 2016-02-18

  • Kabelbruch, also alles umgebaut. Schalter kontaktiert jetzt wenn Tür abgeschlossen ist.

Donnerstag, 2016-01-21

  • Nächsten FLTI*-Termin berechnen und mit ausgeben.