Owntracks über MQTT

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Owntracks über MQTT

Beitrag von Mclupo »

Hallo
Nach vielem Testen und lesen komme ich mit der Integrierung von Owntracks Daten in Openhab nicht weiter.
Der Broker auf dem Raspi 4 Oh3.2 läuft
.
Broker.jpg
.
und bekomme folgendes (Json) Datenfile (aus MQTT.FX)
.
Json.jpg
.
Dann habe ich ein generic Thing erzeugt
.
Thing.jpg
.
mit folgenden Channel Parametern
.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

mit den folgenden Parametern.
Ich wollte mal als einfachste Daten die Batterie Ladung aus batt: darstellen.
item.jpg
.
leider ist der Wert immer Null.

Was tun ?? Ist die Topic Beschreibung falsch? Oder müssen die Daten anders aus dem File extrahiert werden?

besten Dank Wolf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

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

Re: Owntracks über MQTT

Beitrag von udo1toni »

Unter welchem Topic zeigt mqtt.fx denn das json Objekt an? Im Channel muss exakt dieses Topic angegeben werden.
Weiterhin brauchst Du den JSONPATH Transformation Service (muss installiert werden).
Mit Show Advanced bekommst Du zusätzliche Parameter zum konfigurieren, dort trägst Du bei incomming value transformation für den Batteriestatus z.B. JSONPATH:$.batt ein.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

Danke Udo, hat funktioniert.
Was muss ich eintragen um die „Location“ zu bekommen?
Gruss Wolf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Mclupo am 3. Jan 2022 07:56, insgesamt 3-mal geändert.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

5ECF70CC-1BEE-4805-AA2A-9D2128CC1572.png
Warum funktioniert die Json path Formation nur mit dem unteren Bild und nicht im oberen?
Gruss Wolf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

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

Re: Owntracks über MQTT

Beitrag von udo1toni »

Wenn Du weitere Daten aus dem selben JSON Objekt auswerten willst, ist tatsächlich ein anderer Weg sinnvoller.

Dazu nutzt Du dann das Profile. Aber: Erst mal einen Schritt zurück.

Du hast einen Channel vom Typ Number. Ein Number Channel kann eine Zahl speichern. Sonst nichts.

Das Profile beeinflusst, wie der Inhalt des Channels an das Item weitergeleitet wird.
Die incoming Value Transformation hingegen steuert, welcher Teil des eingehenden Datenstroms im Channel landet.

Da wir von einem JSON Objekt sprechen, welches wir nun komplett im Channel vorhalten wollen, muss der Channel Typ string sein.

Anschließend kannst Du ein Number Item (!) mit diesem string Channel verknüpfen und im Profile JSONPATH auswählen und dort den entsprechenden Path eintragen (also $.batt für die Batterie).
Dann kannst Du weitere Items hinzufügen, die natürlich jeweils zum erwarteten Datentypen passen müssen, also z.B. Location für die Position, falls im passenden Format geliefert (das wäre Länge,Breite[,Höhe])


Gesendet von iPad mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

Dank dir Udo, auch das habe ich kapiert.

Fehlt jetzt nur noch der Wert für die JSONPath Expression beim Location Item.
Was schreibe ich dort rein, um die drei Werte lat, lon und alt in das Location item zu bekommen?
Gruss Wolf
Zuletzt geändert von Mclupo am 3. Jan 2022 21:49, insgesamt 1-mal geändert.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

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

Re: Owntracks über MQTT

Beitrag von udo1toni »

Ja, wie gesagt (vorhin war ich mit dem iPad unterwegs, da war es etwas blöd, das nachzuschauen). direkt geht das nur, wenn der Wert in der entsprechenden Notation vorliegt, das ist hier leider nicht der Fall. Du brauchst also mindestens zwei weitere Number Items (wenn Du die Höhe auch möchtest drei), die Du alle mit dem selben Channel verknüpfst, nennen wir sie hier mal PosLat, PosLon und PosAlt. die bekommen entsprechend die Paths $.lat, $.lon und $.alt.

Dann brauchst Du noch eine Rule, welche aus den drei Einzelwerten eine Location macht:

Code: Alles auswählen

rule "set location" 
when
    Item PosLat changed or                    // Breite hat sich geändert
    Item PosLon changed or                    // Länge hat sich geändert
    Item PosAlt changed                       // Höhe hat sich geändert
then
    var Number nLon = null                    // Default Wert: null
    var Number nLat = null                    // Default Wert: null
    var Number nAlt = 0                       // Default wert 0 (über Meeresspiegel)
    if(PosLat.state instanceof Number)        // falls gültige Breite
        nLat = (PosLat.state as Number)       // Breite übernehmen
    if(PosLon.state instanceof Number)        // falls gültige Länge
        nLon = (PosLon.state as Number)       // Länge übernehmen
    if(PosLAlt.state instanceof Number)       // Falls gültige Höhe
        nAlt = (PosAlt.state as Number)       // Höhe übernehmen
    if(nLat === null || nLon === null)        // falls Breite oder Länge ungültig
        return;                               // Abbruch

    MyPosition.postUpdate(nLon.toString+","+nLat.toString+","+nAlt.toString)
end
Ungetestet :) Das Item MyPosition kannst Du dann z.B. auf einer Karte anzeigen lassen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

Danke, hat prima funktioniert.
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: Owntracks über MQTT

Beitrag von Mclupo »

Moin
Jetzt hab ich noch den Zustand, dass in das Item „region“ der gesamte owntracks string kopiert wird, weil das Feld „inregions“ bei manchen gesendeten Nachrichten nicht enthalten ist (bin eben nicht in einer deklarierten Owntracks Region). Jetzt könnte ich das Item „region“ auf Stringlänge testen und bei z.B. mehr als 15 Zeichen mit einen Dummy überschreiben.
Gibt es eine Möglichkeit diese Zuweisung zum Item bei ungültigem Wert vorher abzufangen?
Gruss Wolf
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

Antworten