Seite 1 von 2

[SOLVED] JSON und kein Ende

Verfasst: 9. Jan 2021 16:33
von Evil74
Hallo zusammen

Ich glaube ich bekomme langsam einen lockdown Koller.... egal
Ich habe heute eine Sonoff ZBBridge mit Tasmota geflasht
learnings:
- in vielen Anleitungen fehlt dass man Z_RST auch auf Ground setzten muss
- wenn man es mit USB versorgt reicht das Einstecken am Rechner nicht. Das Ding braucht mehr Strom --> sonst kein WLAN

Dann habe ich mein Sensor gepaart. alles nett.
Jetzt bekomme ich natürlich mehere Einträge im MQTT und benötige den Contact

Code: Alles auswählen

tele/EG_Garage_Tor_Status/SENSOR = {"ZbReceived":{"0xB3D8":{"Device":"0xB3D8","Name":" GaragentorStatus","0500<00":"000000000000","ZoneStatusChange":0,"Contact":0,"Endpoint":1,"LinkQuality":123}}}
Jetzt habe ich mir hier die ganzen MQTT Themen angeschaut und auch viel versucht und bin zu diesem Definition gekommen.

Thing:

Code: Alles auswählen

Thing topic EG_Garage_Tor_Status "Garagentorstatus" 
  {
    Channels:
      Type contact : EG_Garage_Tor_Status "Garagentorstatus"[stateTobic="tele/EG_Garage_Tor_Status/STATE",transformationPattern="JSONPATH:$.ZbReceived.*.Contact", open="1",close="0"]
      
  }
und Item:

Code: Alles auswählen

Contact EG_Garage_Tor_Status "Garagentorstatus" {channel="mqtt:topic:mosquitto:EG_Garage_Tor_Status:EG_Garage_Tor_Status"}

Wo mache ich den Fehler? Er setzt den Contact immer auf NULL
Ich würde mich echt über eine Rückmeldung freuen.
Viele Grüße

Tobias

Re: JSON und kein Ende

Verfasst: 9. Jan 2021 16:37
von Pepe1907
Hast du schonmal versucht das Garagentor zu fahren dass man eine Rückmeldung vom Item bekommt?

Gesendet von meinem SM-G981B mit Tapatalk


Re: JSON und kein Ende

Verfasst: 9. Jan 2021 17:04
von Evil74
Ja das habe ich gemacht. Der Sensor ist ja noch nicht verbaut. Das gab aber keine Änderung. Ich sehe wie sich der Wert im MQTT ändert aber ich bekomme Ihn nicht ins item

Re: JSON und kein Ende

Verfasst: 9. Jan 2021 17:31
von scapin
Schreib doch bitte stateTopic richtig.

Re: JSON und kein Ende

Verfasst: 9. Jan 2021 20:00
von Evil74
mea culpa. Aber das war es leider nicht. Habt Ihr ein Tip wo ich nachschauen kann, was da intern übergeben wird?

Re: JSON und kein Ende

Verfasst: 9. Jan 2021 23:03
von udo1toni
Dein JSONPATH Ausdruck ist falsch. Es muss so aussehen:

Code: Alles auswählen

JSONPATH:$.ZbReceived["0xB3D8"].Contact
Ich hab keine Ahnung, wie Du auf den * kommst. Tipp: Wenn Du VSCode verwendest, installiere Dir das Plugin JSONPath StatusBar. Richte Dir eine Datei für JSON ein (ich hab meine einfach mit in das Conf-Verzeichnis gepackt und sie test.json genannt). Die Datei bleibt leer. Wenn Du nun ein JSON Objekt hast, von dem Du einen bestimmten Wert haben möchtest, lädst Du das Objekt in die Datei und setzt anschließend den Cursor auf den gesuchten Wert. Nun gibt es unten rechts in der Statuszeile des Editors eine Anzeige des passenden JSONPATH.
Mit einem zusätzlichen Plugin (z.B. Beautify JSON oder auch Prettier+) kannst Du über die Befehlspalette das JSON Objekt lesbarer formatieren lassen, dann sieht des z.B. so aus:

Code: Alles auswählen

{
    "ZbReceived": {
        "0xB3D8": {
            "Device": "0xB3D8",
            "Name": " GaragentorStatus",
            "0500<00": "000000000000",
            "ZoneStatusChange": 0,
            "Contact": 0,
            "Endpoint": 1,
            "LinkQuality": 123
        }
    }
}
Beim Schließen der Datei speicherst Du den Inhalt nicht ab, dann kann es nicht zu irgendwelchen Kompllikationen kommen.

Re: JSON und kein Ende

Verfasst: 10. Jan 2021 10:16
von Evil74
Einen schönen guten Morgen

Das hilft schon mal extrem. Ich habe zu Testzwecken jetzt erst mal auf String umgestellt

Code: Alles auswählen

      Type string : EG_Garage_Tor_Status "Garagentorstatus:[%s]"[stateTopic="tele/EG_Garage_Tor_Status/SENSOR", transformationPattern="JSONPATH:$.ZbReceived["0xB3D8"].Contact"]
Das mit dem Json Path hat super geklappt. Allerdings gibt es da noch ein Thema.

10:10:43.979 [WARN ] [del.core.internal.ModelRepositoryImpl] - Configuration model 'mqtt.things' has errors, therefore ignoring it: [35,159]: mismatched input '0xB3D8' expecting ']'
[39,1]: extraneous input '}' expecting EOF

Hier noch mal der Topic Inhalt

Code: Alles auswählen

{"ZbReceived":{"0xB3D8":{"Device":"0xB3D8","Name":" GaragentorStatus","0500<00":"010000000000","ZoneStatusChange":1,"Contact":1,"Endpoint":1,"LinkQuality":113}}}
Ich vermute mal das es es irgendwie an den zwei geschweifen Klammern liegt. Hat jemand eine Idee?

JSON und kein Ende

Verfasst: 10. Jan 2021 11:50
von udo1toni
Nein, das hat nichts mit dem Payload zu tun. Du hast einen Konfigurationsfehler in der Datei mqtt.things, in der Nähe der Zeile 35.

Das Problem sind in diesem Fall die Anführungszeichen rund um den Node, also der Ausdruck vom JSONPATH. Du musst die doppelten Anführungszeichen vermutlich durch einfache ersetzen.

Gesendet von iPad mit Tapatalk

Re: JSON und kein Ende

Verfasst: 10. Jan 2021 12:54
von Evil74
Erst mal super vielen Dank für die Hilfe.

Ich habe es rausbekommen. Es waren die Anführungszeichen.
Der Sensorname muss in einfache Anführungszeichen.

Code: Alles auswählen

transformationPattern="JSONPATH:$.ZbReceived['0xB3D8'].Contact"

Re: [SOLVED] JSON und kein Ende

Verfasst: 22. Okt 2022 11:24
von HABuserJM
Bewirken die eckigen Klammern in ZbReceived eine Vorfilterung, wenn es mehrere Sensoren gibt?
Bei mir sieht es so aus :

Code: Alles auswählen

transformationPattern: REGEX:(*.ZbReceived.0xB4D6.*)∩JSONPATH:$.ZbReceived.0xB4D6.Occupancy
Wobei ich RegEx davor gepackt um zu filtern und nicht weiss, ob das richtig ist oder es auch mit den eckigen Klammern geht.

Die Frage zum heutigen Zeitpunkt ist auch, ist das für openhab 3 gültig oder von einer vorherigen Version. Das kann ich leider in den Beiträgen meist nicht herauslesen.