Host:mqtt.intern.k4cg.org
Host:mqtt.intern.k4cg.org | |
Hostname | mqtt.intern.k4cg.org |
IPv4 | 192.168.178.20 |
Network | 255.255.255.0 |
Gateway | 192.168.178.1 |
DNS | 192.168.178.1 |
OS | NixOS |
Location | Host:beehive.intern.k4cg.org |
Generelles
Dieser Host stellt einen zur Verfügung
- MQTT Daemon
- HTTPD, welcher die status.json hostet
- mqtt2spacestatus, Daemon der MQTT Sensoren in die status.json schreibt
- wifi2mqtt, Script welches alle Wifi Hosts zählt und in MQTT pushed
Alle Konfiguration wird unter /etc/nixos/configuration.nix
gepflegt und gewartet.
Mosquitto MQTT
Der Mosquitto Daemon läuft auf Port 1883 (default) und ist nur mit Authorisierung benutzbar.
Topic Organisation
Im Endeffekt nutzen wir momentan nur
- sensors/#
Als Topic im alle Daten zu gruppieren
- sensors/wifi
- sensors/tischtennis/temp
- sensors/spacestatus/door
usw..
Ich möchte auch Daten in die MQTT schicken!
Klar!
- Such dir jemanden der Access auf mqtt.intern.k4cg.org hat.
- Editiere
/etc/nixos/configuration.nix
# MQTT services.mosquitto = { host = "0.0.0.0"; enable = true; users = { admin = { password = "xxx"; acl = [ "topic #" ]; }; door = { password = "xxx"; acl = [ "topic write sensors/door/#" ]; }; }; };
- Anschliessend kannst du dir ein neuen **User**, **Topic**, und **Passwort** ausdenken.
USER = { password = "PASSWORT"; acl = [ "topic write TOPIC" ]; };
- Wenn das geschafft ist, die Konfiguration noch bei NixOS anwenden
nixos-rebuild switch
MQTT2Spacestatus
Ein Daemon der alle gewählten Sensoren von MQTT in den Spacestatus schreibt
/usr/local/wifi2mqtt/wifi2mqtt.py
Daemon Neustart
systemctl restart wifi2mqtt
Sollte es mal Debuggin Probleme geben kann mit
source /usr/local/wifi2mqtt/.venv/bin/activate /usr/local/wifi2mqtt/wifi2mqtt.py --debug
debuggt werden
wifi2mqtt
Holt momentan connectete Hosts vom AP ab und pushlished die Anzahl in MQTT
Dieses Script ist näher hier beschrieben Projekt:wifi2mqtt
Apache
Ist im Endeffekt ein ganz normaler Apache der nur auf Port 80 hört und da folgende Datei ausliefert:
/var/www/spacestatus/status.json
Von extern ist dieses File dann über http://k4cgrouter.duckdns.org:59468/status.json erreichbar.