Seite 1 von 1

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

Verfasst: 1. Mai 2022 14:05
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

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

Verfasst: 1. Mai 2022 16:03
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

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

Verfasst: 1. Mai 2022 17:02
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

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

Verfasst: 1. Mai 2022 17:55
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)

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

Verfasst: 1. Mai 2022 18:33
von Mr. BJ
Schade, genau das wollte ich eigentlich vermeiden.
Ich danke dir Udo.