Mobile Alerts Daten einlesen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Dieter Zimmermann
Beiträge: 13
Registriert: 4. Mär 2021 11:36
Answers: 0

Mobile Alerts Daten einlesen

Beitrag von Dieter Zimmermann »

Hallo openHABforum,

nachdem ich schon einige Probleme in meinem openHAB System durch die Hilfe des Forums lösen konnte, möchte ich heute mal was zurückgeben.
Ich habe mir nach vielem Lesen und "zähem Ringen" :shock: eine einfache Lösung zum Einlesen von Mobile Alerts Werten erarbeitet.
Vielleicht hilft das dem einen oder anderen der vor dem gleichen Problem steht.

Meine Systemumgebung
Synology DS220+, Installierte DSM-Version 6.2.4-25556, Docker, Openhab:3.3.0.M2

1. Einlesen JSON String der Mobile Alerts Geräte

Thing mit exec-binding und curl-Befehl (http-binding funktioniert nicht) erstellen.
Damit das exec command ausgeführt wird, muss der genau gleiche Befehl in der "exec.whitelist" eingetragen werden. (liegt auf der Synology in folgendem Verzeichnis -->\Docker\openhab\conf\misc\exec.whitelist)

Befehl im Thing und exec.whithlist zum Einlesen des JSON-String:

curl -d deviceids=YYYYYYYYYYYY,ZZZZZZZZZZZZ -d phoneid=XXXXXXXXXXXX https://www.data199.com/api/pv1/device/lastmeasurement

YYYYYYYYYYYY,ZZZZZZZZZZZZ = ID der einzelnen Sensoren (mehrere möglich)
XXXXXXXXXXXX = phoneid
11.jpg
2. Anlegen von Number-Items zur Speicherung der vorhandenen Mobile Alerts Sensorwerte (Temperatur, Luftfeuchte, ...)

3. Erstellen einer Rule und Auslesen der einzelnen Gerätewerte aus dem JSON-String mit Blockly

Festlegen des Triggers
Dies sollte das Item des Rückgabewertes aus dem Thing mit der curl Abfrage sein.
In meinem Beispiel: Thing: Mobile Alerts, Channel: Rückgabewert, Item: Mobile_Alerts_json_string

Erstellen des scripts mit Blockly

1. Schritt
Einlesen und umwandeln des Items das den JSON-String enthält in einen Textstring und speichern in einer Variablen
In meinem Beispiel: "var_json_string"

Anm:
Variable unter dem Menüpunkt "Variables" erstellen,
"create text with" unter dem Menüpunkt "Text",
"get state of item" unter dem Menüpunkt "openHAB, Items&Things",

2. Schritt
Transformieren des eingelesenen Strings mit JSONPATH und speichern des Wertes in der Variablen für den Sensorwert.
In meinem Beispiel: "var_sensorwert"

Die einzelnen Mobile Alerts Werte folgendermaßen ausgelesen:

Beispiel für den ersten Temperaturwert im JSON-String

{
"devices": [
{
"deviceid": "XXXXXXXXXXXX",
"lastseen": 1647014099,
"lowbattery": false,
"measurement": {
"idx": 3141895,
"ts": 1647014094,
"c": 1647014099,
"lb": false,
"t1": 24.0, <---- $.devices.[0].measurement.t1 ([0] = erstes Arrayelement, t1 = erster Temperaturwert)
"t2": 14.2,
"h": 29.0,
"h2": 41.0
}
},
.
.

3. Schritt
Schreiben des ausgelesenen Wertes das gewünschte Item.

4. Schritt
Wiederholen von Schritt 2. und 3. für alle vorhandenen Sensoren mit Anpassung des JSONPATH Arguments.
12.jpg
Mit dieser Vorgehensweise konnte ich alle meine Mobile Alerts Werte in openHAB einlesen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

alADDIn811
Beiträge: 2
Registriert: 13. Dez 2022 13:08
Answers: 0

Re: Mobile Alerts Daten einlesen

Beitrag von alADDIn811 »

Moin,
mein Anwendungsfall hat perfekt zu deiner Anleitung gepasst. Bei mir tritt nur folgendes Problem ein. Die Daten werden korrekt zurückgegeben und in den Rückgabewert gespeichert. Beim Parsen durch die JSONPATH Transformation passiert aber irgendwie nichts. Die Daten werden also unverändert in das Item weitergegeben, in dem nur der einzelne Wert stehen soll. Kannst du mir da weiterhefen? Grüße
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mobile Alerts Daten einlesen

Beitrag von udo1toni »

Hast Du denn JSONPATH auch installiert?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mobile Alerts Daten einlesen

Beitrag von udo1toni »

Hast Du denn JSONPATH auch installiert? Wahlweise könnte es auch sein, dass Dein Path nicht zu 100% korrekt ist. Laut VSCode (mit JSON Path Status Bar Plugin) lautet der Pfad $.devices[0].measurement.c (also kein Punkt zwischen devices und [, würde ich auch so erwarten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Mobile Alerts Daten einlesen

Beitrag von Harka »

und JSONPATH muss zwingend groß geschrieben werden

alADDIn811
Beiträge: 2
Registriert: 13. Dez 2022 13:08
Answers: 0

Re: Mobile Alerts Daten einlesen

Beitrag von alADDIn811 »

Danke für die Tipps, es war eine Kombination aus dem Pfad und der Großschreibung von JSONPATH. Jetzt funktioniert alles

Antworten