NEWS
Neuer Datenpunkt in Baum automatisch in Datenbank schreiben
-
Hallo.
ich habe einen LoRaWAN-Sensor, der über Chirpstack -> MQTT -> IOBROKER schreibt.
Dieser Sensor hat einige Datenpunkte, die ich in die Datenbank speichere (Timeseries)Der Sensor ist im Objektbaum unter dem Topic zu finden:
/server/application/123/device/[dev-EUI]/event/up/[json]Das funktioniert ohne Probleme. Ich möchte, wenn ich einen neuen Sensor dieses Typs hinzufüge und der über MQTT erscheint, dass auch für diesen neuen Sensor automatisch genau die gleichen Werte in der DB erscheinen, die ich oben für den ersten Sensor dieses Typs speichere. Ich habe vor einige hundert Sensoren dieses Typs hinzuzufügen und da wäre es sehr lästig die Konfiguration von Hand zu machen. Natürlich hat jeder Sensor die genau gleichen Datenfelder im JSON und unterscheidet sich nur durch die [dev-EUI]
Geht das?Außerdem möchte Daten über Script verarbeiten, aber nicht Zeit- sondern Ereignisbasiert: Immer wenn ein Sensor eines Typs per MQTT aktualiesiert wird, soll das Script mit den Daten dieses Sensors aufgerufen werden.
Geht das? -
@sven-schumacher das ganze ist noch etwas konfus
@sven-schumacher sagte in Neuer Datenpunkt in Baum automatisch in Datenbank schreiben:
automatisch genau die gleichen Werte in der DB erscheinen,
meinst du wirklich Werte oder Datenpunkte?
wäre das nicht eher ein Thema für den Logik Adapter deiner Wahl?
wenn ich dich richtig verstehe willst du das unbekannte JSON zerlegen.
bei einem neuen identischen Sensor genauso.Wie machst du es jetzt?
Wäre es sooo umständlich, in dem unbekannten Skript nur die ID oder wasauchimmer auszutauschen?
und mit der Kopie writerzuarbeiten? -
@sven-schumacher sagte: Geht das?
Prinzip mit RegExp-Trigger und Array of IDs.
EDIT: Wie sieht das JSON aus? Welche Werte sollen wo gespeichert werden?
-
@homoran Sorry etwas ungenau, meine Anfrage.
Es geht darum, dass ich möglichst keine Handarbeit verrichten will, wenn neue Sensoren dazu kommen.
Der neue Sensor soll automatisch verarbeitet werden: Das JSON soll in aufgelöst werden und stattdessen sollen z.B. Temperatur und Luftfeuchte als Wert im Objektbaum erscheinen. Diese Werte sollen dann auch bei jeder Änderung in die DB geschrieben werden.
Außerdem soll - wenn bei einem beliebigen Sensor - mit dem gleichen Schema - ein script die Werte noch verarbeiten und ggf. Aktionen auslösen. Warnmeldungen absenden oder aktoren.
Ich habe jetzt 50 Gateways & ca. 3000 Sensoren im Netz und es sollen in den nächsten Jahren noch einige 1000 dazu kommen. Also das Abrechnungssystem bleibt bestehen. IOBROKER soll nur dazu kommen.
Wir nutzen bisher nur wenige Daten für eine Abrechnung und der IO-Broker soll die bisher ungenutzten Daten für Dashboards und Auswertungen aufbereiten.
-
@sven-schumacher sagte in Neuer Datenpunkt in Baum automatisch in Datenbank schreiben:
Es geht darum, dass ich möglichst keine Handarbeit verrichten will, wenn neue Sensoren dazu kommen.
Du kannst alles mögliche machen. Also automatisch Datenpunkte, Aliase usw. anlegen. Außerdem könntest Du auch mit sendTo das Logging automatisch aktivieren. Ohne ein konkretes Beispiel kann aber kaum jemand mehr als "ja, geht" antworten.
-
ich werde versuchen, das umfassender zu beschreiben, damit es konkreter wird. Schaffe ich aber erst nächste Woche.
Danke schon mal.
-
@sven-schumacher
Der LoraWan Adapter wäre doch schon mal der erste mögliche Schritt bei deinem Vorhaben?
Damit würden zumindest schon mal alle Daten in Datenpunkte geschrieben werden.
Nachdem ich deine Eingangsfrage 10x gelesen habe, ahne ich was Dein Ziel ist.
Mit dem "IDs from Selector" "lauscht" der Trigger auf jedes "up" in der MQTT Instanz, zieht sich aus dem JSON die ApplicationID, ApplicationName und DevEUI und erstellt daraus eine Ordnerstruktur in 0_Userdata
Bei der Erstellung vom Datenpunkt wird der Eintrag fürs Logging
("custom":{ "influxdb.1":{ "enabled":true,..........)
gleich mit übergeben.createState("0_userdata.0."+ Ordner +".Temperature", 0,{ name: "Temperature", unit: "°C", read: true, write: true, desc: "Beschreibung", type: "number", "custom": { "influxdb.1": { "enabled": true, "storageType": "", "aliasId": "", "debounceTime": 0, "blockTime": 0, "changesOnly": false, "changesRelogInterval": 0, "changesMinDelta": 0, "ignoreBelowNumber": "", "disableSkippedValueLogging": false, "enableDebugLogs": false, "debounce": 0 } } });
Auf die Art ist es egal, ob du ein Device hast, oder 1000. Sobald du Geräte in Chirpstack hinzufügst werden, sofern noch nicht vorhanden die Datenpunkte erstellt, befüllt und in der Datenbank (hier InfluxDB). NoTouch sozusagen, in Iobroker musst du dann nix machen. Den ID Selctor kannst musst du evtl noch mit der ApplicationID ergänzen, falls da in CS auch noch andere Devicetypen mit drin hast.
Eigentlich ist genau mit diesem Hintergrund der LoraWan Adapter entstanden, der das gleiche macht. Die Möglichkeit, dass beim Anlegen der DP automatisch ein logging Eintrag erstellt wird, kommt wohl in den nächsten Tagen mit rein.
Nachtrag 30.07.2024:
Im LoraWan Adapter 1.3.0 (auf GIT) ist die "Auto Logging" Funktion integriert, siehe (weiter unten):
Anleitung Automatik Logging einrichten