Shelly1 - MQTT Topic und Payload für Sensoren Fragen

  • Hallo Leute

    Hab zwei Fragen zu Shelly 1 und Tasmota.

    Situation, betreibe einige Raspi’s mit jeweils RaspberryMatic, ioBroker und (InfluxDB & Telegraf & Chronograf & Kapacitor & Mosquitto & Grafana).

    Des Weiteren betreibe ich einige Arduinos (MEGA & UNO) mit LAN-Modulen und ein abgesetzter UNO mit WLAN Modul (<- zu ersetzen).

    ALLE Arduinos kommunizieren per MQTT [Mosquitto -> Telegraf - > Influx].

    Das funktioniert jetzt soweit alles TOP.

    Hab einen UNO mit WLAN der mir 3 Temperaturen liefert.

    Den wollte ich mit einem Shelly 1 & TASMOTA ersetzen um auch die Schaltfunktion zu erhalten (Gartenpumpe in Brunnen).

    Das funktioniert auch soweit.

    Shelly liefert mir jetzt folgenden Payload:

    hh:mm:ss MQT: tele/%topic%/SENSOR ={

    "Time":"yyyy-mm-ddThh:mm:ss"

    ,"Switch1":"OFF"

    ,"DS18B20-1":{"Id":"01204202D220","Temperature":23.9}

    ,"DS18B20-2":{"Id":"012042FA089E","Temperature":30.3}

    ,"DS18B20-3":{"Id":"012042FEA370","Temperature":24.0}

    ,"TempUnit":"C"

    }

    Erste Frage:

    Temperatursensor-ID wurde scheinbar aufsteigend vergeben. Wenn nun ein Sensor getauscht wird, ändert sich auch die Bezeichnung der Sensoren

    hh:mm:ss MQT: tele/%topic%/SENSOR =

    {"Time":"yyyy-mm-ddThh:mm:ss","Switch1":"OFF"

    ,"DS18B20-1":{"Id":"01204202D220","Temperature":23.9}

    ,"DS18B20-2":{"Id":"012042FEA370","Temperature":30.3}

    ,"DS18B20-3":{"Id":"0120430CB525","Temperature":24.0}

    ,"TempUnit":"C"}

    Kann man die DS18B20-Adresse mit einem Name fixieren ???

    Hab jetzt zwar im ioBroker den SONOFF-Adapter mit den drei Sensor-Name. Denen ist aber die ID egal.

    Zweite Frage:

    Gibt es die Möglichkeit in Tasmota die Sensoren auf einzelne Topic’s aufzuteilen ???

    zB. tele/%topic%/SENSOR/DS18B20_2 = 30.3

    oder wie zum Beispiel beim "Power"

    MQT: stat/%topic%/POWER = {"POWER":"ON"}

    MQT: stat/%topic%/POWER = ON

    MQT: stat/%topic%/POWER = {"POWER":"OFF"}

    MQT: stat/%topic%/POWER = OFF

    CMD: setoption4 0

    MQT: stat/%topic%/RESULT = {"SetOption4":"OFF"}

    MQT: stat/%topic%/RESULT = {"POWER":"ON"}

    MQT: stat/%topic%/POWER = ON

    MQT: stat/%topic%/RESULT = {"POWER":"OFF"}

    MQT: stat/%topic%/POWER = OFF

    Setoption4 bringt bei Sensoren scheinbar nix.

    Danke.

    *Mondieu*

  • Setoption4 hat keinen Einfluss auf topics sondern nur auf die Struktur der Rückmeldung. Dass Sensoren so etwas haben wie eine Hardware-Adresse, siehst du doch an den ID-Nummern. Du kannst die Sensoren nicht über das topic identifizieren aber übr den Inhalt des zurück gemeldeten JSON-String. Ob man mit dem IOBroker die Payload gescheit auswerten kann, weiß ich nicht sicher. Aber ich gehe davon aus. Der IOB ist ja schließlich ein ziemliches Dickschiff und hat einen MQTT-Adapter und eine Scriptsprache bzw. IDE. Du musst also den Ausdruck auswerten und. Gib mal in der Konsole status 10 ein, dann sieht man besser, wie der Ausdruck dargestellt wird, wenn die Sensorwerte direkt abgefragt werden und nicht per teleperiod gemeldet werden. Wenn du den Ausdruck hier postest, kann ich dir den direkten Zugriff auf den Wert des jeweiligen Sensord besser darstellen. Oder schau dir im Wiki mein Beitrag zu MQTT und jq an. Vielleicht wird dir dann schon klar, wie du an den Wert deines (einzelnen) Sensors kommst.