[Problem] Übergabe von JSON an Openhab

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
F_self
Beiträge: 1
Registriert: 17. Mär 2021 18:13

[Problem] Übergabe von JSON an Openhab

Beitrag von F_self »

Guten Morgen,
Ich habe die Tage angefangen mal meine Wohnung etwas smarter zu gestalten. Dafür habe ich mir im Angebot einige Eqiva Bluetooth Thermostate gekauft. Nun wollte ich Openhab 3 nutzen um diese zu visualisieren. Dafür habe ich die Anleitung von https://www.boringhome.de/eqiva-thermostat-openhab/ verwendet. Dies funktioniert bis zu dem Punkt wo ich die items, http.cfg und sitemap anlege. Die JSON wird kreiert und auf diese kann ich auch zugreifen.
json.png
Jedoch wird dies leider nicht korrekt in mein BasicUI überführt.
basicUI.png
Der Inhalt meiner thermostat.items sieht folgendermaßen aus:

Code: Alles auswählen

Number thermostat_wz "Thermostat Wohnzimmer [%.1f °C]" <temperature> { http=">[*:GET:http://openhabian/eq3.php?mac=XX-XX-XX-XX-XX-XX&temperature=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:600000:JSONPATH($.temperature)]" }
Switch thermostat_wz_mode "Thermostat Auto [%s]" { http=">[*:GET:http://openhabian/eq3.php?mac=XX-XX-XX-XX-XX-XX&mode=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:600000:JSONPATH($.mode.auto)]" }
Switch thermostat_wz_boost "Thermostat Boost [%s]" { http=">[*:GET:http://openhabian/eq3.php?mac=XX-XX-XX-XX-XX-XX&boost=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:120000:JSONPATH($.mode.boost)]" }
Number thermostat_wz_valve "Thermostat Ventil [%.1f]"  { http="<[thermostatWohnzimmer:600000:JSONPATH($.valve)]"}
Der Inhalt der http.cfg sieht folgendermaßen aus:

Code: Alles auswählen

thermostatWohnzimmer.url=http://openhabian/eq3.php?mac=XX-XX-XX-XX-XX-XX{Authorization=BasicSECRET}
thermostatWohnzimmer.updateInterval=120000
Die MAC Adressen habe ich unkenntlich gemacht. Weiß jemand wo mein Problem ist? Ich komme leider beim besten Willen nicht darauf was ich falsch gemacht habe.

Gruß Frederick
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von udo1toni »

Es geht mal damit los, dass die Anleitung für openHAB1 und openHAB2 gültig ist, aber keinesfalls für openHAB3.
In openHAB3 gibt es auschließlich Bindings, welche zwingend über Things konfiguriert werden. Konfigurationsdateien im Verzeichnis ./openhab/services/ gibt es nicht mehr (bezogen auf die Bindings natürlich, andere Konfigurationsdateien gibt es in diesem Verzeichnis durchaus).

Du musst also ein http Thing anlegen (als Anfänger am besten über die Main UI). Zum reinen Auslesen reicht es, die komplette URL als Base URL im Thing einzutragen. Anschließend (nachem das Thing angelegt wurde) kannst Du im Thing Channel definieren. Da du mit JSON arbeitest, gibt es zwei Möglichkeiten. Zum einen kannst Du für jeden auszulesenden Wert einen eigenen Channel anlegen und dort jeweils den JSONPATH Ausdruck als Transformation eintragen.
Du kannst aber auch nur einen (String) Channel ohne Transformation anlegen, in dem das gesamte JSON Objekt gespeichert wird. Dann verlinkst Du die verschiedenen Items (Typ Number, Switch usw.) und trägst jeweils den passenden JSONPATH Ausdruck als Profile ein. Beide Wege sind valide.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wats92
Beiträge: 4
Registriert: 21. Mär 2022 21:41

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von wats92 »

Hallo zusammen,
auch ich bin neu im Bereich Openhab und wurschtel mich so durch.
Auch ich hab ein eq3-Thermostat und versuche es in Openhab3 einzubinden.

Ich bin mittlerweile an dem Punkt, dass mir meine UI zumindest den aktuellen Wert, der eingestellt ist ausgibt, sprich "lesen" funktioniert.
Leider komme ich beim schreiben nicht weiter, damit ich über OH3 die Temperatur einstellen kann.

Hat hier vielleicht jemand ein Tipp für mich?

Besten Dank!

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

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von udo1toni »

Willkommen im Forum!

Wie sieht denn Deine Konfiguration bis jetzt aus? Es gibt da einen Code-Reiter in der Konfiguration, rechts neben den Channels, diesen Code kannst Du hier als Code markiert einfügen. Falls Passworte oder Tokens zur Konfiguration gehören, kannst Du die auch gerne unkenntlich machen :)

Wie sieht das Datenformat aus, welches Du zur Steuerung benötigst?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wats92
Beiträge: 4
Registriert: 21. Mär 2022 21:41

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von wats92 »

Hallo Udo,

mein Code in OH sind wie folgt aus:

Code: Alles auswählen

UID: http:url:wthermosthat
label: Thermostat_W_HTTP
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.64/eq3.php?mac=00-1A-22-0C-F9-7C
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: PUT
  contentType: application/json
  timeout: 300000
  bufferSize: 2048
location: Wohnzimmer
channels:
  - id: thermostat_wz
    channelTypeUID: http:number
    label: Wohnzimmerthermostat
    description: ""
    configuration:
      mode: READWRITE
      stateTransformation: JSONPATH:$.temperature
      command: temperature=%2$
und die URL sieht so aus:
http://192.168.178.64/eq3.php?mac=00-1A-22-0C-F9-7C

Code: Alles auswählen

{
  "mac" : "00:1A:22:0C:F9:7C",
  "temperature" : 21.0,
  "valve" : 0,
  "mode" : {
    "auto" : "ON",
    "manual" : "OFF",
    "low battery" : "OFF",
    "open window" : "OFF",
    "vacation" : "OFF",
    "locked" : "OFF",
    "boost" : "OFF",
    "unknown" : "OFF",
    "dst" : "ON",
    "on" : "OFF",
    "off" : "OFF"
  },
  "vacation" : null
}
Steuern über verlängern der URL zu bspw. umstellen auf 21°C über den Weg:
http://192.168.178.64/eq3.php?mac=00-1A ... erature=21

funktioniert

weiter bin ich bisher leider nicht gekommen

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

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von udo1toni »

Das sieht ja schon ganz gut aus.

Du musst in der Channel Konfiguration auf Show Advanced klicken (Innerhalb der Konfiguration rechts oben), dann bekommst Du zusätzliche Parameter angeboten. Du brauchst die Command URL Extension, die Du auf &temperature=%2$s setzen musst. Die BASE-URL setzt openHAB automatisch davor. Das %2$s ist der Wert, der vom Item an den Channel gesendet wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wats92
Beiträge: 4
Registriert: 21. Mär 2022 21:41

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von wats92 »

hab ich gemacht wie beschrieben, leider klappt es immernoch nicht. kann der Fehler auch beim Item sein? ich hab als Steuerelement Setpoint genommen:

Sitemap:

Code: Alles auswählen

sitemap HoheLinde3 label="Wohnung" {
    Setpoint item=HTTPwthermostat_Wohnzimmerthermostat label="Thermostat [%.1f °C]" maxValue=30 minValue=14.5 step=0.5
}
thing:

Code: Alles auswählen

UID: http:url:wthermosthat
label: Thermostat_Wohnzimmer
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.64/eq3.php?mac=00-1A-22-0C-F9-7C
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: PUT
  contentType: application/json
  timeout: 300000
  bufferSize: 2048
location: Wohnzimmer
channels:
  - id: thermostat_wz
    channelTypeUID: http:number
    label: Wohnzimmerthermostat
    description: ""
    configuration:
      mode: READWRITE
      stateTransformation: JSONPATH:$.temperature
      commandExtension: "&temperature=%2$"
      command: temperature=%2$
sorry für evtl "dumme" "einfache" Fehler

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

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von udo1toni »

Ups, da hab ich ein s unterschlagen... Es muss %2$s heißen... Ich habe das oben mal ergänzt...

Das Command musst Du dann nicht setzen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wats92
Beiträge: 4
Registriert: 21. Mär 2022 21:41

Re: [Problem] Übergabe von JSON an Openhab

Beitrag von wats92 »

Nach deinem Hinweis ging es leider immernoch nicht, habe dann ein bisschen rumprobiert und konnte das letzte Hindernis finden:
Openhab hat sich irgendwie verschluckt, weil refresh und timeout gleich groß waren. endlich empfängt das Thermostat auch Befehle :D

Vielen Dank!!!

Antworten