Welches MQTT Topic Schema benutzt Ihr fuer Eure Sensoren?

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Mittlerweile habe ich fast alle meine Temperatursensoren die DHT22 und BME280 nutzen vom Breadboard in ein Gehaeuse umgezogen. Ihre Daten senden sie als JSON per MQTT und sie benutzen momentan alle einen Topic /dawn/sensor/n wobei n eine laufende Nummer aus einem Nummernbereich ist so dass ich erkennen kann ob es ein ESP32, ESP8266MCU oder ein D1Mini ist.

    Ist historisch gewachsen da mein erster Sensor ein Helligkeitssensor war (dawn) um die Beleuchtung im Haus zu steuern. Temperaturen haben damit eher wenig zu tun ...

    Es wird zeit das mal glatt zu ziehen.

    Jetzt bin ich hin und hergerissen ob ich ein locationbasiertes Topic benutze oder ein sensorbasiertes. Also entweder

    1sterStock/schlafzimmer/temperatur und 1sterStock/flur/helligkeit oder sensor3/temperatur und sensor5/helligkeit.

    Bislang habe ich immer wieder Sensoren in den jeweiligen Raeumen geandert (ESP8266 MCU durch Wemos D1 Mini ersetzt) so dass sich staendig die Sensorid die Mac basiert vergeben wird geaendert hat. Das wird sich jetzt stabilisieren.

    Aber wenn ich einen SW Update vornehme muss ich die IP des Sensors kennen. Ich habe testweise den Sensoren sprechende Namen in meiner Fritzbox gegeben was hilft. Ist aber unhandlich. Ich habe ein kleines Script geschrieben was mit meine ganzen Sensoren discovered. Die Sensoren haben einen HTTP Server der diverse Informationen wie auch die IP unter einer URL liefert. D.h. darueber koennte ich die IP mit dem Script ausgeben. Alternativ koennte der Sensor auch seine IP immer unter einem Topic wie 1sterStock/schlafzimmer/temperatur/ip oder sensor5/helligkeit/IP publishen. Ist aber auch irgendwie nicht sonderlich hilfreich. D.h. momentan fuehre ich ein Spreadsheet wo immer die Location/Mac/Sensorid und IP manuell updated wird. Ist auf die Dauer muehsam.

    Bislang tendiere ich zum sensorbasierten Ansatz und erweitere das SensordiscoveryScript dass noch die IP Adresse des Sensors zusaetzlich ausgegeben wird. Dann fehlt mir aber immer noch die Locationinformation :wallbash:

    Wie loest Ihr das SensorAdministrations- und Dokumentationsproblem bei Euch?

  • Welches MQTT Topic Schema benutzt Ihr fuer Eure Sensoren?? Schau mal ob du hier fündig wirst!

  • Hallo Framp.

    1. Du kannst den Hostnamen setzen, dann erscheint der Sensor richtig in der Fritzbox.

    Code
      WiFi.hostname(host);
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);

    2. Lass die Sensoren OTA nach Updates suchen statt die Manuell zu pushen. Ich hab das so gelöst das auf meinem lokalen Webserver ein Verzeichnis TOS existiert. Darin Unterordner der einzelnen Sensoren.
    Der DHT22 Sensor sucht nun bei jedem Wakeup nach z.B. /OTA/Temperaturen/DHT22/1.0.9.bin
    Musst nur den String für die "nächste" Firmwareversion in der Software ändern.
    Dann einfach die neue BIN hochladen ( hier z.B. 1.0.9.bin) und die DHT22 Sensoren ziehen das Update.

    Die MQTT Topics, genau das Problem hatte ich auch.
    Frage dich selber wie du was mit Wildcards abfragen möchtest.
    1sterStock/schlafzimmer/temperatur

    Mit 1sterStock/*/temperatur bekommst du alle Temperatursensoren aus dem 1stenStock.
    Mit 1sterStock/schlafzimmer/* alles aus dem Schlafzimmer.
    Kann man sich den Kopf drüber zerbrechen :)

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Es gibt normalerweise verschiedene Partitionen, wie man die Sensoren aufteilen kann. Mindestens:

    1. Nach Geografischem Ort hirarchisch

    2. Nach logischer Funktion (ggf. auch hierarchisch)

    3. nach physikalischen Zusammenhängen (Topologie)

    4. weitere...

    Alle haben so ihre Vorteile und Nachteile. Besonders bei Panels/Dashboards/UserInterface hat sich für mich bewährt, immer alle 3 Sichtweisen parallel anzubieten. Der User kann ggf. dann zwischen den Sichtweisen wechseln, aber die Daten, die zugrundeliegen, sind immer dieselben. Ob man das nur bei den MQTT-Topic auch schon berücksichtigen muss.... Macht jedenfalls ne Menge Arbeit.

  • Hallo,

    bei mir ist der Aufbau Adresse/Geschoss/Raum/Wert.

    Die Software ist für alle gleich, anhand der Seriennummer des ESP wird der Standort, MQTT-Topic, IP-Adresse ect. festgelegt. Wie beim Imperator lasse ich die ESP auf dem Server nach neuen Versionen schauen. Wenn ich den Standort eines Sensors ändere (kommt bei mir kaum vor, höchstens mal neue dazu), passe ich die Software an, setze die Versionsnummer hoch und die ESPs holen sich nach und nach die neue Version.

  • Lass die Sensoren OTA nach Updates suchen

    Hast Du da ein Codefragment oder eine Webseite wo ich nachlesen kann wie man das genau macht? Die Idee das per OTA zu holen ist neckisch :thumbup:

    Ich denke die Zuornung ID <-> Location muss ich explizit irgendwo z.B. in einem JSON ablegen und per http get beim Booten vom Sensor holen lassen. Dazu brauche ich auch einen lokalen HTTP Server wie auch fuer OTA.

    Ob man das nur bei den MQTT-Topic auch schon berücksichtigen muss.... Macht jedenfalls ne Menge Arbeit.

    Das finde ich auch. Eine Topicstruktur muss reichen. Saemliches anderes Mapping muss dann irgendwo definiert werden.

  • Bitte sehr :

    Nicht sehr schön aber funktioniert.
    Das mit der Update URL zusammenbauen geht sicher auch schöner.
    Im Grunde macht der aus der FW_VERSION 100 folgende URL :

    /update/arduino/wetter-dht22-101.bin


    Wenn die Datei da ist macht er ein Update, wenn nicht dann nicht.
    Nur nicht vergessen die FW_Version im Code zu setzen :)

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Vielen Dank :thumbup: . Das hilft mir schon mal weiter.

    Ich bin zwischenzeitig auch schon hier gelandet. Aber so richtig fuendig bin ich noch nicht geworden. Allerdings habe ich auch noch nicht intensiv nachgeforscht. werde ich die Tage mal machen. Mir schwebt sowas vor wie dass beim Start die aktuelle Version mit einer remoten Version verglichen wird und wenn die Version hoeher ist soll ein Update stattfinden.

  • Habe eben mal qad einen Prototypen zusammengeschrieben. Funktioniert soweit sehr gut. Vielen Dank fuer das Anschieben beim Code und die Ratschlaege zu den Topics.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!