Host:mqtt.intern.k4cg.org: Unterschied zwischen den Versionen

Aus k4cg.org
(Die Seite wurde neu angelegt: „{{Hostbox | 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 | lo…“)
 
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 37: Zeile 37:


usw..
usw..
=== Ich möchte auch Daten in die MQTT schicken! ===
Klar!
* Such dir jemanden der Access auf mqtt.intern.k4cg.org hat.
* Editiere <code>/etc/nixos/configuration.nix</code>
<pre>
# MQTT
  services.mosquitto = {
    host = "0.0.0.0";
    enable = true;
    users = {
      admin = {
        password = "xxx";
        acl = [ "topic #" ];
      };
      door = {
        password = "xxx";
        acl = [ "topic write sensors/door/#" ];
      };
    };
  };
</pre>
* Anschliessend kannst du dir ein neuen  **User**, **Topic**, und **Passwort** ausdenken.
<pre>
      USER = {
        password = "PASSWORT";
        acl = [ "topic write TOPIC" ];
      };
</pre>
* Wenn das geschafft ist, die Konfiguration noch bei NixOS anwenden
<pre>
nixos-rebuild switch
</pre>


== MQTT2Spacestatus ==
== MQTT2Spacestatus ==
Zeile 43: Zeile 83:


<pre>
<pre>
/usr/local/wifi2mqtt/wifi2mqtt.py
/usr/local/mqtt2spacestatus/mqtt2spacestatus.py
</pre>
</pre>


Zeile 49: Zeile 89:


<pre>
<pre>
systemctl restart wifi2mqtt
systemctl restart mqtt2spacestatus
</pre>
</pre>


Zeile 55: Zeile 95:


<pre>
<pre>
source /usr/local/wifi2mqtt/.venv/bin/activate
source /usr/local/mqtt2spacestatus/.venv/bin/activate
/usr/local/wifi2mqtt/wifi2mqtt.py --debug
/usr/local/mqtt2spacestatus/mqtt2spacestatus.py --debug
</pre>
</pre>


Zeile 66: Zeile 106:


Dieses Script ist näher hier beschrieben [[Projekt:wifi2mqtt]]
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:
<pre>
/var/www/spacestatus/status.json
</pre>
Von extern ist dieses File dann über http://k4cgrouter.duckdns.org:59468/status.json erreichbar.

Aktuelle Version vom 26. März 2018, 09:52 Uhr

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.