Laseregg einbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
jheiler
Beiträge: 13
Registriert: 24. Jan 2019 13:51
Answers: 0

Laseregg einbinden

Beitrag von jheiler »

Hallo,

ich möchte mein Feinstaubmessgerät Laseregg 2+ von Kaiterra einbinden. Die API ist unter https://dev.kaiterra.com/ beschrieben und lautet

Code: Alles auswählen

https://api.origins-china.cn/v1/lasereggs/XXX?key=YYY. 
Die XXX ist die UID des Gerätes, die YYY ist der API-Key, den man dort anfordern kann.

Bei einer Abfrage dieser API erhalte ich

{"id":"XXX","info.aqi":{"ts":"2019-03-22T10:32:13Z","data":{"humidity":29.52,"pm10":3,"pm25":3,"rtvoc":125,"temp":25.23}}}

Diese Werte entsprechen:

pm25: PM2.5 (µg/m³), post-calibration

pm10: PM10 (µg/m³), post-calibration

humidity: relative humidity in % (0-100)

temp: temperature in Celsius

tvoc: (Laser Egg 2+) TVOC measurement, in parts per billion (ppb)

Kann ich das über HTTP einbinden?

Der Eintrag in die http..cfg wäre dann:
http:cacheLaseregg.url=https://api.origins-china.cn/v1/lasereggs/XXX?key=YYY
http:cacheLaseregg.updateInterval=600, richtig?

Wie sähe ein Item aus?

Vielen Dank für eine Anregung.

Viele Grüße
Jürgen

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

Re: Laseregg einbinden

Beitrag von udo1toni »

Deine http.cfg sollte so aussehen:

Code: Alles auswählen

# alle möglichen Kommentare... egal wichtig ist nur der unkommentierte Teil:
 
# Nur zur Orientierung: der http cache für Laseregg. Abfrageinterval 60 Sekunden
laseregg.url=https://api.origins-china.cn/v1/lasereggs/XXX?key=YYY
laseregg.updateInterval=60000
Der Abfrageinterval ist in Millisekunden angegeben, ich war jetzt zu faul, die Doku zur API zu lesen, Dein Abfrageinterval darf natürlich nicht dazu führen, dass die API Dich sperrt, im Zweifel könnte also der Interval auch 5 Minuten oder 10 Minuten betragen.

Die passenden Items sollten dann so aussehen:

Code: Alles auswählen

Group laseregg
String lasereggID "Laseregg ID [%s]"                         (laseregg) { http="<[laseregg:30000:JSONPATH($.id)]"" }
DateTime lasereggTS "Laseregg TS [%1$tA, %1$td.%1$tm.%1$tY]" (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].ts)]"" }
Number lasereggHum "Laseregg Feuchte [%s]"                   (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].data.humidity)]"" }
Number lasereggPm10 "Laseregg pm10 [%s]"                     (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].data.pm10)]"" }
Number lasereggPm25 "Laseregg pm25 [%s]"                     (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].data.pm25)]"" }
Number lasereggRtvoc "Laseregg rtvoc [%s]"                   (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].data.rtvoc)]"" }
Number lasereggTemp "Laseregg Temp [%s]"                     (laseregg) { http="<[laseregg:30000:JSONPATH($.["info.aqi"].data.temp)]"" }
Die Items werden nun alle 30 Sekunden (30 000 Millisekunden) aktualisiert. Diesen Wert kannst Du natürlich passend zum Cache Updateinterval setzen, aber an dieser Stelle schadet eine höhere Updatefrequenz nichts, der Cache ist ja bereits gefüllt.
Das erste Item lasereggID ist nur der Vollständigkeit halber in der Liste.

Da es sich dem dem String um ein JSON Objekt handelt, brauchst Du noch die JSONPATH Transformation, die musst Du z.B. über Paper UI installieren.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

jheiler
Beiträge: 13
Registriert: 24. Jan 2019 13:51
Answers: 0

Re: Laseregg einbinden

Beitrag von jheiler »

Vielen Dank für die Hilfe.
Meine vorläufig finale(?) Version sieht so aus, durch Probieren ermittelt:

Code: Alles auswählen

Group laseregg
String lasereggID "Laseregg ID [%s]"                         (laseregg) { http="<[laseregg:600000:JSONPATH($.id)]" }
DateTime lasereggTS "Laseregg TS [%1$tA, %1$td.%1$tm.%1$tY]" (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].ts)]" }
Number lasereggHum "Laseregg Feuchte [%s]"                   (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].data.humidity)]" }
Number lasereggPm10 "Laseregg pm10 [%s]"                     (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].data.pm10)]" }
Number lasereggPm25 "Laseregg pm25 [%s]"                     (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].data.pm25)]" }
Number lasereggRtvoc "Laseregg rtvoc [%s]"		     (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].data.rtvoc)]" }
Number lasereggTemp "Laseregg Temp [%s]"                     (laseregg) { http="<[laseregg:600000:JSONPATH($.[{info.aqi}].data.temp)]" }
In der openhab.log habe ich jetzt noch einen Fehler und sehe auch keine Daten in der Sitemap:

Code: Alles auswählen

2019-03-22 16:17:54.498 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'laseregg.items'
2019-03-22 16:17:57.503 [ERROR] [org.openhab.io.net.http.HttpUtil    ] - Fatal transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2019-03-22 16:17:57.506 [ERROR] [ab.binding.http.internal.HttpBinding] - No response received from 'laseregg'
Woran kann das liegen?

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

Re: Laseregg einbinden

Beitrag von udo1toni »

Code: Alles auswählen

unable to find valid certification path to requested target
Zertifikatsfehler... Dazu fällt mir ehrlich gesagt nichts ein. Grundsätzlih sollte das http Binding auch mit https arbeiten.

Schau mal hier: https://community.openhab.org/t/http-bi ... ttps/21430 vermutlich wirst Du das https Zertifikat händisch in den Java Zertifikatspeicher laden müssen.

Ach so, gerade noch bemerkt...

Im Label der Number Items müsste der Platzhalter natürlich nicht [%s] sondern [%.2f] heißen, wenn die Float Zahl als Zahl mit zwei Nachkommastellen dargestellt werden soll. Natürlich ist das erst dann interessant, wenn Du den Zertifikatfehler beseitigt hast. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten