Ich bin zu dumm für JSON

Geflasht oder ungeflasht ...

Moderatoren: Cyrelian, udo1toni

macronom
Beiträge: 1
Registriert: 26. Mär 2019 20:30

Re: Ich bin zu dumm für JSON

Beitrag von macronom »

udo1toni hat geschrieben: 21. Jan 2019 22:54 Hast Du den Transformation Service installiert?
Ich habe mich eben hier regisiriert, um danke zu sagen für diesen Hinweis. Als Neuling, der sich in openHAB einarbeitet, bin ich auch fast daran verzweifelt, wie man Werte aus MQTT ausliest. Im Prinzip war alles klar, nur das mit dem Service, das hat mich nochmal viel Zeit gekostet, bis ich die Lösung hier gefunden habe. Also vielen Dank.

Dann wurde ja noch die Konfiguration angesprochen und die musste ich auch kurz suchen. Das Chaos mit den zwei Methoden zur Konfiguration habe ich im ersten Anlauf auch entdeckt und dann alles eingerissen und nochmal neu angefangen. Dieses Mal ausschließlich mit Konfiguration über die Textdateien. Im vorliegenden Fall besteht die Lösung darin, in /etc/openhab2/services/addons.cfg eine Zeile einzufügen bzw. eine auskommentierte Zeile zu ändern:

Code: Alles auswählen

# A comma-separated list of transformation services to install (e.g. "transformation = map,jsonpath")
transformation = jsonpath
Bzw. da alles rein zu schreiben, was man sonst noch so braucht an Transformationen.

Und meine Konfiguration für den MQTT-Broker sieht so aus:

/etc/openhab2/things/mqtt.things

Code: Alles auswählen

Bridge mqtt:broker:Mosquitto "Mosquitto" [ host="localhost", port="1883", secure=false, username="xxx", password="xxx" ]

Thing mqtt:topic:Mosquitto:SonoffTest "SonoffTest Control" (mqtt:broker:Mosquitto) {
        Channels:
            Type switch : Power "SonoffTest Power" [ stateTopic="stat/SonoffTest/POWER", commandTopic="cmnd/SonoffTest/POWER" ]
            Type string : Temp "SonoffTest Temp" [ stateTopic="tele/SonoffTest/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature" ]
}
Dabei ist „SonoffTest“ der Topic, denn der Sonoff benutzt und als Temperatursensor wird ein DS18B20 benutzt.
Und weil ich es oft in solchen Anleitungen schwer finde zu unterscheiden, was Schlüsselwörter und was eigene Bezeichner sind: „Mosquitto“ und „SonoffTest“ sind eigene Bezeichner. Und der Dateiname „mqtt.things“ ist auch von mir. Der ist egal, nur muss „.things“ am Ende stehen.

Ach ja, um das transformationPattern zu verstehen: Was man vom Sonoff über den Broker bekommt, sieht so aus:

Code: Alles auswählen

tele/SonoffTest/SENSOR {"Time":"2019-03-26T20:53:43","DS18B20":{"Temperature":22.3},"TempUnit":"C"}
Was ich noch nicht rausgefunden habe: Wenn ich für „Temp“ den Typ „number“ benutze statt „string“, funktioniert es nicht. Vermutlich muss man da noch einen Parser zwischenschalten. Für einen Tipp bin ich dankbar.

Benutzeravatar
Matheoo
Beiträge: 11
Registriert: 14. Mai 2019 14:09

Re: Ich bin zu dumm für JSON

Beitrag von Matheoo »

Sehr hilfreich für mich! Das Forum ist informativ)
Gruß

stonev
Beiträge: 16
Registriert: 10. Sep 2019 10:00

Re: Ich bin zu dumm für JSON

Beitrag von stonev »

Auch von mir nochmal ein Dankeschön. Hat mir sehr geholfen der Thread.

Es stimmt, dass dieses Konfigurationswirrwar anfangs verwirrend ist. Schade auch, dass mann dadurch PaperUI nicht nutzen kann, um eine erste Grundkonfig in Dateien schreiben zu lassen, um sie dort weiter zu bearbeiten.

Umso beruhigender aber, dass es erkannt und auf die ToDo Liste gesetzt wurde.

baipai
Beiträge: 55
Registriert: 17. Dez 2019 09:03
Wohnort: Sisaket Thailand

Re: Ich bin zu dumm für JSON

Beitrag von baipai »

Vielen Dank an das Forum.
Nach Tagelangen misserfolgen habe ich es durch euch hinbekommen meinen POW auszulesen.

Pck
Beiträge: 1
Registriert: 6. Mai 2020 12:57

Re: Ich bin zu dumm für JSON

Beitrag von Pck »

Das könnte auch die Lösung für mein Problem sein!
Ich habe einen Sonoff 2 Kanal Touch Schalter und wollte die Button unabhängig von den Relais nutzen.
Im MQTT ist alles soweit nachvollziehbar, auch die funktionalität im OpenHab tuts...
nur kommt der MQTT-Button-Befehl irgendwie nicht im OpenHab an..
Vielen Dank im Voraus!

Gruß
-Patrick

Benutzeravatar
Detlef
Beiträge: 189
Registriert: 11. Dez 2019 21:50
Answers: 1
Wohnort: Recklinghausen
Kontaktdaten:

Re: Ich bin zu dumm für JSON

Beitrag von Detlef »

Hallo
ja und genau da stehe ich jetzt auch. Ein paar Relaise "mitSonoff Basic Module" habe ich einfach in Paper UI einrichten können,
bekomme die Werte in Paper UI und kann nichts damit anfangen.Temperatur und Uhrzeit u.s.w. alles in einer Zeile

Da fehlt noch was!


2020-05-22 20:32:28.350 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Incoming payload '{"Time":"2020-05-22T19:32:26","AM2301":{"Temperature":null,"Humidity":null,"DewPoint":null},"TempUnit":"C"}' not supported by type 'NumberValue'

Die null sind die werte der Temperaturen.
Habe die "JsonPath Transformation Service" in Paper UI installiert.
Hilft mir wirklich nicht weiter.
MQTT schickt diese daten:

tele/tasmota_EE589E/SENSOR
Mit freundlichen Grüße aus Recklinghausen

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

Re: Ich bin zu dumm für JSON

Beitrag von udo1toni »

Detlef hat geschrieben: 22. Mai 2020 20:48
2020-05-22 20:32:28.350 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Incoming payload '{"Time":"2020-05-22T19:32:26","AM2301":{"Temperature":null,"Humidity":null,"DewPoint":null},"TempUnit":"C"}' not supported by type 'NumberValue'

Die null sind die werte der Temperaturen.
Habe die "JsonPath Transformation Service" in Paper UI installiert.
Hilft mir wirklich nicht weiter.
MQTT schickt diese daten:

tele/tasmota_EE589E/SENSOR
Also, um es etwas genauer zu beschreiben:

tele/tasmota_EE589E/SENSOR ist das Topic. Die gelieferten Daten sind der Payload dieses Topics, also hier (ein bisschen aufgehübscht)

Code: Alles auswählen

{
	"Time": "2020-05-22T19:32:26",
	"AM2301": {
		"Temperature": null,
		"Humidity": null,
		"DewPoint": null
	},
	"TempUnit": "C"
}
Um nun z.B. an die Temperatur zu kommen, musst Du im Channel die JSONPATH Transformation verwenden, und zwar so:

Code: Alles auswählen

JSONPATH:$.AM2301.Temperature
Allerdings wird der Fehler davon nicht weg gehen, denn der Sensor liefert ja momentan null als Wert. Aber das ist ein Problem auf Tasmota-Seite und hat nichts mit openHAB zu tun.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Detlef
Beiträge: 189
Registriert: 11. Dez 2019 21:50
Answers: 1
Wohnort: Recklinghausen
Kontaktdaten:

Re: Ich bin zu dumm für JSON

Beitrag von Detlef »

Halles Danke für den Tip.
Die DHT 22 haben nur 3 Tage gehalten.
Und 3 Tage habe ich jetzt für das Bibdkng gebraucht.
Ich werde mir mal bessere Sensoren besorgen.
Mit freundlichen Grüße aus Recklinghausen

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

Re: Ich bin zu dumm für JSON

Beitrag von udo1toni »

Detlef hat geschrieben: 22. Mai 2020 22:09 Die DHT 22 haben nur 3 Tage gehalten.
Wiebitte? Die sollten eigentlich sehr zuverlässig und langlebig sein...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Ich bin zu dumm für JSON

Beitrag von peter-pan »

Detlef hat geschrieben: 22. Mai 2020 22:09 Ich werde mir mal bessere Sensoren besorgen.
Da hat Udo ganz recht, die Dinger sind fast nicht kaputt zu kriegen. Allerdings kann es passieren, wenn du testest, dass dein Basic/ESP8266 etwas "verrückt" spielt. Probier einfach mal, die Pins deines DHT22 vom Gerät abzuziehen und anschliessend (ein paar Sekunden später) wieder zu verbinden. Und dann musst du evtl. auch noch ein paar Minuten warten (vermutl./wahrscheinl. wegen der Tele-Period des Tasmotas) bis sich das ganze wieder eingependelt hat. Du solltest dann wieder die Anzeige der Werte in der WebUI sehen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Antworten