Host:mqtt.intern.k4cg.org

Aus k4cg.org
Wechseln zu: Navigation, Suche
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/mqtt2spacestatus/mqtt2spacestatus.py

Daemon Neustart

systemctl restart mqtt2spacestatus

Sollte es mal Debuggin Probleme geben kann mit

source /usr/local/mqtt2spacestatus/.venv/bin/activate
/usr/local/mqtt2spacestatus/mqtt2spacestatus.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.