NEWS
OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON
-
Hallo an alle,
habe mir einen ESP32 WROOM DevKit 1 und Sensor RXB6 für 433Mhz bestellt. Alles aufs Breadboard gepackt und die Software OpenMQTT ESP32-pilight installiert. Soweit so gut, nun liest er die Daten aus, allerdings nur im JSON Format.
Wie kann ich nun aus dem JSON folgendes auslesen Temperatur, Luftfeuchtigkeit und Batterie?
Wetterstation ist Digoo R8s mit Protokoll Nexus dank pilight
So siehts aktuell aus
Freue mich über jeden hilfreichen Vorschlag
-
Ich würde mich der Frage anschließen wollen, da ich gerade mit den ersten Tuya-Geräten zum MQTT-Adapter umgezogen bin. Der Sonoff-Adapter "exportiert" zwar alle Sensorwerte automatisch in Datenpunkte, ich würde aber gerne den MQTT-Adapter verwenden. Mit googlen bin ich leider nicht weitergekommen.
-
Im Prinzip kannst du im Bedarfsfall jederzeit auf einen Wert aus einem JSON zugreifen, dann musst du halt beschreiben wo du ihn brauchst. Alternativ erstellst halt Datenpunkte als Alias oder Du nimmst meinen Node-Red Flow, der erstellt Dir aus jedem JSON einzelne Datenpunkte unter 0_userdata.0
Im Prinzip ist JSON eine sehr effiziente Methode Daten zu übertragen und man pickt sich nur im jeweiligen Anwendungsfall den benötigten Wert raus.
-
Vielen Dank für deine Antwort, das hat mir auf die richtige Spur geholfen!
Ich kann mir mit folgendem Blockly Attribute auf der Konsole ausgeben:
Das Anlegen eines Datenpunktes unter alias.0 hat hingegen leider nicht funktioniert:
-
@ofbeqnpolkkl6mby5e13 Du erstellst einen Datenpunkt unter alias.0 und zeigst dann auf den originalen Wert im mqtt-Adapter und modifizierst die Lesefunktion.
Beispiel: Du hast unter mqtt folgenden Wert stehen.
Du kannst sehr wohl Aliase selbst erstellen - der Device Adapter ist derzeit in meinen Augen nicht geeignet.
-
@ofbeqnpolkkl6mby5e13 sagte: Das Anlegen eines Datenpunktes unter alias.0 hat hingegen leider nicht funktioniert:
Eigene Datenpunkte legt man unter "0_userdata.0" an, was auch per Blockly funktioniert.
Für Datenpunkte unter "alias.0" benötigt man kein Skript, da Konvertierungsmöglichkeiten enthalten sind.
-
Okay, eine Grundsatzdiskussion dazu hatte ich auch gerade gefunden:
https://github.com/ioBroker/ioBroker.js-controller/issues/906
-
@paul53 sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:
Eigene Datenpunkte legt man unter "0_userdata.0" an, was auch per Blockly funktioniert.
Das mache ich natürlich schon lange über das bekannte Skript hier aus dem Forum. Aber danke!
-
@ofbeqnpolkkl6mby5e13 Ich zeig Dir gerade einen Weg - aber halt nicht so ungeduldig. siehe mein letzten Post. Normalerweise machst Du unter alias.0 eine Gerät und darunter dann einen Status zum Beispiel temperatur.
-
@mickym sagte: der Device Adapter ist derzeit in meinen Augen nicht geeignet.
Der Alias-Manager ist besser geeignet.
Die grundlegende Ordner-Struktur unter "alias.0" erstellt man besser manuell im Tab "Objekte". -
@paul53 sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:
@mickym sagte: der Device Adapter ist derzeit in meinen Augen nicht geeignet.
Der Alias-Manager ist besser geeignet.
Ja aber das Admin Interface finde ich inzwischen bestens geeignet.
Jedenfalls sollte man halt erst ein Gerät anlegen und darunter dann die States - hier mal an meinem Beispiel:
Der mqtt-datenpunkt enthält nun folgenden JSON:
{"battery":30,"device":{"applicationVersion":5,"dateCode":"20191205","friendlyName":"temperatur/bad","hardwareVersion":30,"ieeeAddr":"0x001xxxxxxxxxxxxxx","manufacturerID":4151,"manufacturerName":"LUMI","model":"WSDCGQ11LM","networkAddress":xxxxx,"powerSource":"Battery","softwareBuildID":"3000-0001","stackVersion":2,"type":"EndDevice","zclVersion":1},"humidity":47.22,"last_seen":"2022-09-27T14:01:37+02:00","linkquality":255,"power_outage_count":6,"pressure":937.4,"temperature":23.48,"voltage":2955}
Wie schon von @paul53 erwähnt bekommst Du Warnmeldugen solange Du den originalen Datenpunkt nicht angibst.
Den gibst Du also direkt dort ein und für die Lesefunktion gibst Du das
JSON.parse(val).gewünschter_Wert
an
-
@mickym sagte: das Admin Interface finde ich inzwischen bestens geeignet.
Ich auch, da ich weiß, dass man erst einmal eine Warnung erhält, bevor man die ID des Original-DP zuweisen konnte.
-
Das ist natürlich eine geniale Lösung! Vielen, vielen Dank!
-
Ich hoffe, das hilft auch dir.
-
@ofbeqnpolkkl6mby5e13 Hallo vielen Dank für die hilfreichen Tipps, aber bei mir steht immer Aussentemperatur das ist mein Datenpunkt = 0.
Hier mein Blockly dazu
-
@jens-g
Den Datenpunkt erzeugt man nur einmal außerhalb eines Triggers mit richtigen Common-Attributen. Innerhalb des Triggers verwendet man "aktualisiere". -
-
@paul53 Danke werde ich sofort ändern. So nun warte ich auf die nächste Änderung. Hat funktioniert ganz großes Dankeschön an dich endlich kann ich es in meine Visualisierung einbinden. Wie bekomme ich den nun die Einheit angezeigt beispielsweise °C
-
@jens-g Klick auf das Bleistiftsymbol und füge Unit hinzu
-
@mickym Vielen Dank habe ich doch glatt übersehen, jetzt läufts.