openhab 3 http binding

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

openhab 3 http binding

Beitrag von cwieser111 »

Hallo an Alle

bei mir läuft unter openhab 2.5 alles super, nur jetzt möchte ich umziehen auf openhab 3und ich steh schon an.

habe das so konfiguriert unter openhab 2.5

Schritt 1: Lege in der http.cfg einen http Cache an:


voltoPlus.url=http://192.168.178.45/api/v1/values
voltoPlus.updateInterval=60000
Nun steht das JSON Objekt als Cache zur Verfügung. Weiterhin brauchst Du drei Items für die drei Werte.

items:
Number VoltoPlus_U1 "U1 [%.1f V]" {http="<[voltoPlus:60000:JSONPATH($.[?(@.id=="U1")].value)]"}
Number VoltoPlus_U2 "U2 [%.1f V]" {http="<[voltoPlus:60000:JSONPATH($.[?(@.id=="U2")].value)]"}
Number VoltoPlus_U3 "U3 [%.1f V]" {http="<[voltoPlus:60000:JSONPATH($.[?(@.id=="U3")].value)]"}


jetzt habe ich die items auch unter openhab3 so definiert,(visual studio) und im http binding ein thing
http://192.168.178.45/api/v1/values hinterlegt.

die werte sind alle auf 0

ich werde mit openhab3 nicht so richtig warm
hat jemand einen TIP

Danke

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

Re: openhab 3 http binding

Beitrag von udo1toni »

Unter openHAB3 gibt es keine V1 Bindings mehr (http stand unter OH2.5 offiziell nur als V1 zur Verfügung).
Das heißt, Du musst die Konfiguration anders vornehmen.
Das http V3 Binding hat den gleichen Funktionsumfang (eigentlich sogar wesentlich erweitert).
Alle Bindings in openHAB3 werden ausschließlich über Things konfiguriert. Alles, was unter openHAB2 in der http.cfg stand, muss also über ein oder mehrere Things angelegt werden.

Für Dich sieht das dann so aus:
Thing:

Code: Alles auswählen

Thing http:url:voltoPlus "VoltoPlus" [
    baseURL="http://192.168.178.45/api/v1/values",
    refresh=60
  ] {
    Channels:
        Type number : u1 "U1" [ stateTransformation="JSONPATH:$.[?(@.id=='U1')].value" ]
        Type number : u2 "U2" [ stateTransformation="JSONPATH:$.[?(@.id=='U2')].value" ]
        Type number : u3 "U3" [ stateTransformation="JSONPATH:$.[?(@.id=='U3')].value" ]
}
Items:

Code: Alles auswählen

Number VoltoPlus_U1 "U1 [%.1f V]" { channel="http:url:voltoPlus:u1"}
Number VoltoPlus_U2 "U2 [%.1f V]" { channel="http:url:voltoPlus:u2"}
Number VoltoPlus_U3 "U3 [%.1f V]" { channel="http:url:voltoPlus:u3"}
Selbstverständlich kannst Du die Definition auch über die UI eingeben, die Schlüsselworte sind ja eindeutig.
Zu beachten ist auch die im Detail geänderte Schreibweise für die Transformation.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: openhab 3 http binding

Beitrag von cwieser111 »

Danke Udo wie immer sehr schön zusammengefasst, und Danke für deinen Einsatz!!

wie soll man als Normalsterblicher, der das nicht gelernt hat, sich da wieder komplett anders umstellen von der Schreibweise.
Da ist ja wieder alles anders wie bei Openhab 2.5

Aber leider ich bekomme da noch keine Werte, ich vermute die schreibweise ist hier noch nicht richtig (StateTranformation)

ich habe das auch direkt über das thing gemacht (einen channel gemacht) es kommt UNDEF

Code: Alles auswählen

UID: http:url:Voltoplus
label: HTTP URL Voltoplus
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://10.0.0.224/api/v1/values
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/json
  timeout: 1000
  bufferSize: 2048
channels:
  - id: Voltoplus
    channelTypeUID: http:number
    label: P
    description: ""
    configuration:
      stateTransformation: JSONPATH:$.[?(@.id=='U1')].value

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

Re: openhab 3 http binding

Beitrag von udo1toni »

Die IP ist eine völlig andere, ist das korrekt?

Hast Du JSONPATH installiert?

http war eines der letzten Bindings, die noch nach openHAB1 Art konfiguriert werden mussten. Eigentlich musst Du die ungewohnte Art der Konfiguration als Konsolidierung betrachten, die mittelfristig weniger Arbeit macht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Cwieser
Beiträge: 10
Registriert: 1. Aug 2019 06:33
Answers: 0

Re: openhab 3 http binding

Beitrag von Cwieser »

Ja das ist aktive
Weil beim fronius fuktioniert es

Code: Alles auswählen

UID: http:url:Fronius
label: HTTP URL Thing Fronius
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://10.0.0.43/solar_api/v1/GetPowerFlowRealtimeData.fcgi
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048
channels:
  - id: Fronius
    channelTypeUID: http:number
    label: P_Load
    description: ""
    configuration:
      stateTransformation: JSONPATH:$.Body.Data.Site.P_Load
Ich glaube das hier die ganzen Klammern nicht passen

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

Re: openhab 3 http binding

Beitrag von udo1toni »

Bitte beim Posten von Code immer Code Tags setzen. Und Zeilennummern gehören auch nicht in die Konfiguration ;)

Die Notation JSONPATH:$.[?(@.id=='U1')].value sollte eigentlich keine Probleme machen, ich verwende das selbst im http2 Binding - allerdings konfiguriere ich über *.things Dateien, was aber keine Rolle spielt.

Kannst Du mal das vollständige JSON Objekt zeigen? Am besten legst Du dazu einen weiteren Channel an (ohne alles, Typ String).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: openhab 3 http binding

Beitrag von cwieser111 »

Hallo

wenn ich einen String anlege ohne allem, dann greift er schon mal auf den Hauptlink http zu

das schau dann so aus, schon mal ein gutes Zeichen, ich glaube noch immer das der JOSNPATH:$ nicht ganz stimmt mit den vielen Klammern

{"json_values":[{"id":"U1","value":"22522"},{"id":"U2","value":"22563"},{"id":"U3","value":"22517"},{"id":"I1","value":"-3630"},{"id":"I2","value":"-2877"},{"id":"I3","value":"-3390"},{"id":"P1","value":"-749"},{"id":"P2","value":"-605"},{"id":"P3","value":"-750"},{"id":"P","value":"-2105"},{"id":"fwdEn","value":"179946"},{"id":"rvsEn","value":"61060"},{"id":"AO1","value":"27"},{"id":"AO2","value":"0"},{"id":"my-PV1","value":"0"},{"id":"abl1","value":"0"},{"id":"DO1","value":"0"},{"id":"DO2","value":"0"},{"id":"LEDS","value":"0"},{"id":"LEDP","value":"1"},{"id":"date_time","value":{"year":2022,"month":4,"day":5,"hour":7,"minute":27,"second":44}}]}

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

Re: openhab 3 http binding

Beitrag von udo1toni »

Das kann dann aber vorher auch nicht funktioniert haben. Der korrekte Pfad muss

Code: Alles auswählen

JSONPATH:$.json_values.[?(@.id=='U1')].value
lauten.
  • $ -> Root des JSON
  • .json_values -> der Zweig mit diesem Titel. Er enthält jede Menge Knoten ohne Namen.
  • .[?(@.id=='U1')] -> suche den Knoten, dessen Unterelement mit dem Namen "id" den Wert "U1" hat und verwende diesen Knoten.
  • .value -> Nimm den Wert des Unterelements value und liefere diesen Wert zurück.
Man könnte auf die Idee kommen, einfach die Knoten abzuzählen. U1 ist der 1. Knoten (also [0]), U2 ist der 2. Knoten (also [1]) und so weiter.
Das ist allerdings keine gute Idee, denn die Reihenfolge der Knoten ist nicht zwingend. Es mag in diesem speziellen Fall sogar so sein, dass die Knoten immer in derselben Reihenfolge gelistet werden, das kann sich aber z.B. nach einem Firmware Update ändern. Deshalb sollte man unbedingt den Filter verwenden.

EDIT: Nur zum besseren Verständnis hier mal eine Ansicht, die teilweise umgebrochen ist:

Code: Alles auswählen

{
    "json_values": [
        {"id": "U1",    "value": "22522"},
        {"id": "U2",    "value": "22563"},
        {"id": "U3",    "value": "22517"},
        {"id": "I1",    "value": "-3630"},
        {"id": "I2",    "value": "-2877"},
        {"id": "I3",    "value": "-3390"},
        {"id": "P1",    "value": "-749"},
        {"id": "P2",    "value": "-605"},
        {"id": "P3",    "value": "-750"},
        {"id": "P",     "value": "-2105"},
        {"id": "fwdEn", "value": "179946"},
        {"id": "rvsEn", "value": "61060"},
        {"id": "AO1",   "value": "27"},
        {"id": "AO2",   "value": "0"},
        {"id": "my-PV1","value": "0"},
        {"id": "abl1",  "value": "0"},
        {"id": "DO1",   "value": "0"},
        {"id": "DO2",   "value": "0"},
        {"id": "LEDS",  "value": "0"},
        {"id": "LEDP",  "value": "1"},
        {"id": "date_time",
            "value": {
                "year": 2022,
                "month": 4,
                "day": 5,
                "hour": 7,
                "minute": 27,
                "second": 44
            }
        }
    ]
}
eigentlich wäre jeder Wert in einer eigenen Zeile (so wie bei der id date_time), dann wäre das ganze aber sehr länglich geworden, das JSON ist dennoch gültig :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Cwieser
Beiträge: 10
Registriert: 1. Aug 2019 06:33
Answers: 0

Re: openhab 3 http binding

Beitrag von Cwieser »

Danke Udo

Wie immer super erklärt, es funktioniert.

Danke

SSP
Beiträge: 2
Registriert: 27. Feb 2024 12:55
Answers: 0

Re: openhab 3 http binding

Beitrag von SSP »

Code: Alles auswählen

{
    "aussentemperatur": [
        {
            "Value": 8.5,
            "Unit": "°C"
        }
    ],
    "bivalenztemperatur_hzg": [
        {
            "Value": -14,
            "Unit": "°C"
        }
    ],
    "bivalenztemperatur_ww": [
        {
            "Value": -14,
            "Unit": "°C"
        }
    ],
    "d_faktor": [
        {
            "Value": 1
        }
    ],
    "d_faktor_v_ze": [
        {
            "Value": 1
        }
    ],
    "druck_hochdruck": [
        {
            "Value": 21.56,
            "Unit": "bar"
        }
    ],
    "druck_mitteldruck": [
        {
            "Value": 11.97,
            "Unit": "bar"
        }
    ],
    "druck_niederdruck": [
        {
            "Value": 7.76,
            "Unit": "bar"
        }
    ],
    "festwertbetrieb": [
        {
            "Value": 0
        }
    ],
    "fortlufttemperatur": [
        {
            "Value": 1.5,
            "Unit": "°C"
        }
    ],
    "frostschutz": [
        {
            "Value": 4,
            "Unit": "°C"
        }
    ],
    "frostschutztemperatur": [
        {
            "Value": 33.9,
            "Unit": "°C"
        }
    ],
    "heissgastemperatur": [
        {
            "Value": 67.8,
            "Unit": "°C"
        }
    ],
    "i_faktor": [
        {
            "Value": 0.79
        }
    ],
    "i_faktor_v_ze": [
        {
            "Value": 1
        }
    ],
    "inverter_aufnahmeleistung": [
        {
            "Value": 1.6,
            "Unit": "kW"
        }
    ],
    "ist_ueberhitzung_sg_v_ze": [
        {
            "Value": 3.6,
            "Unit": "°C"
        }
    ],
    "ist_ueberhitzung_v": [
        {
            "Value": 7.6,
            "Unit": "°C"
        }
    ],
    "istdrehzahl_verdichter": [
        {
            "Value": 50,
            "Unit": "Hz"
        }
    ],
    "isttemperatur": [
        {
            "Value": 48.5,
            "Unit": "°C"
        }
    ],
    "isttemperatur_2": [
        {
            "Value": 23.4,
            "Unit": "°C"
        }
    ],
    "isttemperatur_hk_1": [
        {
            "Value": 30.3,
            "Unit": "°C"
        }
    ],
    "isttemperatur_hk_2": [
        {
            "Value": 29.3,
            "Unit": "°C"
        }
    ],
    "luefterleistung_rel": [
        {
            "Value": 41,
            "Unit": "%"
        }
    ],
    "nhz_1": [
        {
            "Value": 0,
            "Unit": "h"
        }
    ],
    "nhz_1_2": [
        {
            "Value": 0,
            "Unit": "h"
        }
    ],
    "nhz_2": [
        {
            "Value": 0,
            "Unit": "h"
        }
    ],
    "nhz_heizen_summe": [
        {
            "Value": 0,
            "Unit": "kWh"
        }
    ],
    "nhz_warmwasser_summe": [
        {
            "Value": 0,
            "Unit": "kWh"
        }
    ],
    "oeffungsgrad_exv": [
        {
            "Value": 36.8,
            "Unit": "%"
        }
    ],
    "oeffungsgrad_exv_ze": [
        {
            "Value": 0,
            "Unit": "%"
        }
    ],
    "oelsumpftemperatur": [
        {
            "Value": 34.4,
            "Unit": "°C"
        }
    ],
    "p_faktor": [
        {
            "Value": 1.01
        }
    ],
    "p_faktor_v_ze": [
        {
            "Value": 0.94
        }
    ],
    "pufferisttemperatur": [
        {
            "Value": 30.3,
            "Unit": "°C"
        }
    ],
    "puffersolltemperatur": [
        {
            "Value": 31.7,
            "Unit": "°C"
        }
    ],
    "raumfeuchte_2": [
        {
            "Value": 41.6,
            "Unit": "%"
        }
    ],
    "regelabweichung": [
        {
            "Value": 1.1,
            "Unit": "K"
        }
    ],
    "reststillstandszeit": [
        {
            "Value": 0,
            "Unit": "min"
        }
    ],
    "ruecklauftemperatur": [
        {
            "Value": 29.6,
            "Unit": "°C"
        }
    ],
    "sg_ready_1": [
        {
            "Value": 0
        }
    ],
    "sg_ready_2": [
        {
            "Value": 0
        }
    ],
    "soll_ueberhitzung": [
        {
            "Value": 6.4,
            "Unit": "°C"
        }
    ],
    "soll_ueberhitzung_sg_v_ze": [
        {
            "Value": 8,
            "Unit": "°C"
        }
    ],
    "solldrehzahl_verdichter": [
        {
            "Value": 50,
            "Unit": "Hz"
        }
    ],
    "solltemperatur": [
        {
            "Value": 48,
            "Unit": "°C"
        }
    ],
    "solltemperatur_2": [
        {
            "Value": 23,
            "Unit": "°C"
        }
    ],
    "solltemperatur_hk_1": [
        {
            "Value": 31.7,
            "Unit": "°C"
        }
    ],
    "solltemperatur_hk_2": [
        {
            "Value": 29.4,
            "Unit": "°C"
        }
    ],
    "spannung_inverter": [
        {
            "Value": 403,
            "Unit": "V"
        }
    ],
    "starts_abtauen": [
        {
            "Value": 414
        }
    ],
    "taupunkttemperatur_2": [
        {
            "Value": 9.6,
            "Unit": "°C"
        }
    ],
    "untere_einsatzgrenze_hzg": [
        {
            "Value": 0
        }
    ],
    "untere_einsatzgrenze_ww": [
        {
            "Value": -20,
            "Unit": "°C"
        }
    ],
    "unterk_cond": [
        {
            "Value": 3.3,
            "Unit": "°C"
        }
    ],
    "v_oeffungsgrad_exv_ze": [
        {
            "Value": 14.1,
            "Unit": "%"
        }
    ],
    "vd_abtauen": [
        {
            "Value": 22,
            "Unit": "h"
        }
    ],
    "vd_heizen": [
        {
            "Value": 1992,
            "Unit": "h"
        }
    ],
    "vd_heizen_summe": [
        {
            "Value": 3783,
            "Unit": "kWh"
        }
    ],
    "vd_heizen_tag": [
        {
            "Value": 7.168,
            "Unit": "KWh"
        }
    ],
    "vd_warmwasser": [
        {
            "Value": 246,
            "Unit": "h"
        }
    ],
    "vd_warmwasser_summe": [
        {
            "Value": 701,
            "Unit": "kWh"
        }
    ],
    "vd_warmwasser_tag": [
        {
            "Value": 0,
            "Unit": "KWh"
        }
    ],
    "verdampfertemperatur": [
        {
            "Value": 7,
            "Unit": "°C"
        }
    ],
    "verdichter": [
        {
            "Value": 2260
        }
    ],
    "verdichtereintrittstemperatur": [
        {
            "Value": 9.3,
            "Unit": "°C"
        }
    ],
    "verfluessigertemperatur": [
        {
            "Value": 32.1,
            "Unit": "°C"
        }
    ],
    "vorlauftemperatur": [
        {
            "Value": 34.4,
            "Unit": "°C"
        }
    ],
    "vorsteuer_oeffungsgrad_exv": [
        {
            "Value": 45.8,
            "Unit": "%"
        }
    ],
    "wp_wasservolumenstrom": [
        {
            "Value": 26.1,
            "Unit": "l/min"
        }
    ],
    "zeit_abtauen": [
        {
            "Value": 2,
            "Unit": "min"
        }
    ],
    "zwischeneinspritzungstemp": [
        {
            "Value": 18.2,
            "Unit": "°C"
        }
    ]
}

Code: Alles auswählen

UID: http:url:0b88660857
label: " ISG-WPL25AC HTTP "
thingTypeUID: http:url
configuration:
  ignoreSSLErrors: false
  baseURL: http://192.168.112.30:80/status
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/json
  timeout: 3000
  bufferSize: 2048
location: 
channels:
  - id: istdrehzahl_verdichter
    channelTypeUID: http:number
    label: Drehzahl Verdichter
    description: ""
    configuration:
      stateTransformation: JSONPATH:$.istdrehzahl_verdichter.[Value]
Was mache ich falsch?

Antworten