OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Beitrag von Mr. BJ »

Hallo zusammen,

Ich versuche bei einem HTTP Thing (amazon fire hd 10 mit fully kiosk browser) ein Switch-Channel zu erstellen was leider über die Rest-API unterschiedliche Values als Antwort zurückgeben und ich vermute das deswegen der Switch immer UNDEF bekommt wenn der Status aktualisiert wird.

Command:

Code: Alles auswählen

{"statustext":"Switching the screen on","status":"OK"}
State (Daten sind gekürzt da zu viele Daten):

Code: Alles auswählen

{
  "batteryLevel": 100,
  "isPlugged": true,
  "wifiSignalLevel": 7,
  "isMobileDataEnabled": false,
  "screenOrientation": 270,
  "screenBrightness": 91,
  "screenLocked": true,
  "screenOn": false
  }
Wie man sieht ist bei Command status = Ok und bei State screenOn = false bzw. true.
Kann man das irgndwie zurechtbiegen das für den Switch ON oder OFF zur Verfügung steht? Also direkt ohne jetzt mit Rules nachzuhelfen.

Hier mein Thing mit den Channels:

Code: Alles auswählen

UID: http:url:AmazonFireHD10Wohnzimmer
label: Amazon Fire HD 10 - Wohnzimmer
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.1.23:2323
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: text/plain
  timeout: 3000
  bufferSize: 2048
channels:
  - id: Bildschirm
    channelTypeUID: http:switch
    label: Bildschirm
    description: ""
    configuration:
      onValue: screenOn
      offValue: screenOff
      stateExtension: ?&password=PASSWORD&type=json&cmd=getDeviceInfo
      commandExtension: ?&password=PASSWORD&type=json&cmd=%2$s
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

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

Re: OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Beitrag von udo1toni »

Grundsätzlich wird die Antwort ein JSON Objekt sein.
Um zu wissen, wie Du das Objekt korrekt auswerten kannst, ist es unerlässlich, einmal ein vollständiges Objekt zu sehen. Notfalls (falls das Objekt zu groß ist) musst Du das z.B. über pastebin bereitstellen (oder die Daten selbst analysieren).
Die Information, die Du suchst, ist im Objekt hinterlegt, und zwar an einer bestimmten Stelle des Pfads. Gesetzt den Fall, das Objekt wäre vollständig, so müsstest Du lediglich die jsonpath transformation installieren (ganz normal über Main UI) und in der stateTransformation die passende Transformation eintragen: JSONPATH: $.screenOn
Du nutzt einen Switch Channel, aber die gelieferten Werte sind false und true (nicht screenOn und screenOff). Entsprechend musst Du unter onValue true eintragen und unter offValue eben false
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

Re: OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Beitrag von Mr. BJ »

Hallo Udo und danke für deine schnelle Antwort.

Ich Blödmann habe vergessen zu Erwähnen das die Antwort ein JSON Objekt ist und ich mit dem JSONPATH(:$.screenOn) bereits getestet habe.
Das State Objekt ist komplett und das Command habe ich nur Daten herausgeschmissen damit es nicht vollgebläht ist (Und ich habe es im JSONPath Evaluator getestet.

Das eigentliche Problem ist das alles seine eigenes Kommando (URL) hat:

Code: Alles auswählen

Bildschirm Ein # CMD = screenOn      # JSONPATH:$.status = OK
Bildschirm Aus # CMD = screenOff     # JSONPATH:$.status = OK
Status         # CMD = getDeviceInfo # JSONPATH:$.screenOn =true/false
Auf das JSON-Objekt von screenOn/Off kann man ja verzichten da der Status über getDeviceInfo (true/false) abgefragt wird aber wie bekomme ich es mit nur einem Command URL Extension hin?
Bis jetzt war mein Lösung OnValue und OffValue als Parameter (screenOn/screenOff) zu missbrauchen (%2$s):

Code: Alles auswählen

?&password=PASSWORD&type=json&cmd=%2$s
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

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

Re: OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Beitrag von udo1toni »

Das wird so nicht gehen, jedenfalls nicht auf direktem Weg.
Die einfachste Variante ist, zwei Channel zu vernden, den einen zum Senden, den anderen zum empfangen. Du nutzt dann am besten zwei String Channel und eine Rule (plus die weiteren Items, die dann per Rule angeflanscht werden)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

Re: OH3.2 HTTP bei unterschiedlichen Values (State/Command)

Beitrag von Mr. BJ »

Schade, genau das wollte ich eigentlich vermeiden.
Ich danke dir Udo.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Antworten