NEWS
MQTT Datenpunkte automatisch erstellen
-
Da ich über 100 Sensoren im Haus verbaut habe, suche ich eine allgemeine Lösung
wie ich MQTT Datenpunkte automatisch anlegen kann.Abstrakt:
Alle Sensoren melden automatisch die Zustände (Temperatur, Feuchtigkeit,
Stromverbrauch, Energieproduktion, Wetterdaten, Türkontakte, Bewegungsmeldungen,
Statusmeldungen) über eigene Services als MQTT Topic an einen MQTT Brocker.Diese sehe ich auch beim IOBroker wenn ich den MQTT Adapter installiere.
Nun zu der Herausforderung:
Ich müsste über 500 Datenpunkte von Hand über Script anlegen um die Werte
der einzelen MQTT Payload Attribute der Sensoren zu erhalten. Daher suche
ich eine Möglichkeit, dies über ein Script oder über einen Modul zu lösen.Kennt jemand einen Lösungansatz dafür ?
-
@zibous
Nur Nachfrage; werden die Datenpunkte nicht Automatisch von mqtt.client angelegt ?
Gut, das dauert manchmal wenn der Sensor nur alle Ewigkeiten mal das Topic sendet. -
@zibous sagte in MQTT Datenpunkte automatisch erstellen:
an einen MQTT Brocker.
Was ist das für ein Broker?
published der die Werte auch wieder?Was nutzst du im ioBroker?
MQTT-client oder MQTT?Wie konfiguriert.
Die abonnierten topics müssten automatisch angelegt werden.
-
@Blechsoldat
Vielen Dank für die rasche Antwort.
So wie ich das sehe nicht oder ich mache etwas falsch:
Wert (Beispiel)
"name":"Pokey_S06", "state":"ON", "unit_of_measurement":"W", "attributes":{ "etage":"0.EG", "room":"Gang EG", "name":"S06", "id":"digcounter6", "equipment":"Licht,Telefonanlage,WLAN", "sensor":"IF64_DIGCOUNTER6", "state":"ON", "current":10, "total":148.21, "prevdat":148.2, "time":"2020-12-28 09:45:03", "currentkw":0.01 }, "current":10, "appversion":"1.1.1", "nodeversion":"v10.14.2", }
Würde Datenpunkte für "current", "total"... brauchen
-
Danke,
Ich möchte die Sensordaten anzeigen.
Ich möchte MQTT-client (Auswertung) und MQTT (cmd für Gerätesteuerung)
Die abonnierten topics müssten automatisch angelegt werden.
Ja, aber ich müsste viele Scripte erstellen um an die Payload Attribute zu kommen oder mache ich da einen Denkfehler ?
-
@zibous wo kommen die werte her ?? von welchem Client ??
wenn du tatwarhaftig nur die JSON zur verfügung hast dann musst du diese ausinander nehmen
aber da reicht nur ein script.. der über de MQTT adapter geht und alle Datenpunkte die du brauchst sammelt und
erstmal nur die Datenpunkte anlegt
und dann fülltoder du baust das so dass wenn der Datenpunkt nicht exisitert dieser angelegt wird und direkt danach gefüllt wird
-
@arteck
Danke, genau das suche ich, da ich neu bei ioBroker bin, suche ich dafür ein Beispiel wie ich das angehen könnte. -
@zibous sagte in MQTT Datenpunkte automatisch erstellen:
aber ich müsste viele Scripte erstellen um an die Payload Attribute zu kommen oder mache ich da einen Denkfehler
wie @arteck schon schreibt liegt es an deinen topics.
Deine Clients senden sie anscheinend nicht einzeln, sondern als bulk in einem Json.Enweder musst du deinen Clients beibringen, jeden Sensorwert als einzelnes topic zu senden, oder eben bei jedem publish eines Clients muss das JSON geparst und die Inhalte auf weitere States geschrieben werden.
Wie ist denn der Inhalt eines solchen Topics?
-
@Homoran said in MQTT Datenpunkte automatisch erstellen:
Deine Clients senden sie anscheinend nicht einzeln, sondern als bulk in einem Json.
Enweder musst du deinen Clients beibringen, jeden Sensorwert als einzelnes topic zu senden, oder eben bei jedem publish eines Clients muss das JSON geparst und die Inhalte auf weitere States geschrieben werden.
Wie ist denn der Inhalt eines solchen Topics?Ja so ist es, es werden im Payload immer mehrere Attribute geliefert, bei über 100 Sensoren
kann ich nicht jeden Wert als Sensorwert liefern, das wären dann über 1000 MQTT Messages..
oder eine Vielzahl von Parser Scripts.Ein weiteres Beispiel:
{ "name":"Wasserz\u00e4hler Haus", "device":"watermeter", "deviceid":"43430778", "date":"2020-12-28", "time":"13:29:57", "total_m3":213.249, "m3":{ "current":0.0, "hour":0.011, "day":0.145, "month":7.208, "year":95.519 }, "liter":{ "current":0.0, "hour":11.0, "day":145.0, "month":7208.0, "year":95519.0 }, "last_total":{ "hour":"13", "hour_m3":213.238, "day":"2020-12-28", "day_m3":213.104, "month":"2020-12", "month_m3":206.041, "year":"2020-01-01", "year_m3":117.73 }, "alarm":"no_alarm", "last_alarm":"no_alarm", "periode":"2020-12-28", "month":"2020-12", "year":"2020", "timestamp":"2020-12-28T13:29:57Z", "last_update":"2020-12-28 14:29:57.086536", "elapsed_time":"0:00:10", "unit_of_measurement":"\u33a5", "version":"1.0.0" }
Daher ist der Ansatz vom @arteck sicher der Beste um an alle Werte aller MQTT Meldungen zu kommen. Aber ich habe noch kein Beispiel oder Modul gefunden wie das geht.
-
@zibous sagte in MQTT Datenpunkte automatisch erstellen:
Aber ich habe noch kein Beispiel oder Modul gefunden wie das geht.
Frag dich mal, warum ich so ein topic sehen wollte!
@zibous sagte in MQTT Datenpunkte automatisch erstellen:
bei über 100 Sensoren
kann ich nicht jeden Wert als Sensorwert liefern, das wären dann über 1000 MQTT Messages.Ja und?
Aber du brauchst über 1000 states
Das Json enthält ja noch mehrere Ebenen!
und der Name ist auch noch mit "unleserlichen" Zeichen.
"name":"Wasserz\u00e4hler Haus"
Da muss jemand anderes ran
-
@Homoran Unicode e4 ist demnach ein ä. Seit ich Umlaute und Leerzeichen nicht mehr nutze, programmiert es sich leichter.
In deinem Beispiel würde das Teil bei mir WasserzaehlerHaus heißen. Manchmal trenne ich auch mit Unterstrich: Wasserzaehler_Haus. Der Unterstrich lässt sich dann z.b. per Script suchen.
Bei mir werden die Datenpunkte der MQTT Clienten (ESP...) automatisch angelegt.
-
@peterfido sagte in MQTT Datenpunkte automatisch erstellen:
Unicode e4 ist demnach ein ä.
Das weiß ich. Ich benutze auch keine Umlaute.
@peterfido sagte in MQTT Datenpunkte automatisch erstellen:
Bei mir werden die Datenpunkte der MQTT Clienten (ESP...) automatisch angelegt.
Bei mir auch!
auch beim TE! Aber der hat seine clients so programmiert , dass sie viele Werte In einem JSON liefern.
Dieses muss er jetzt zerpflücken .