HTTPMOD Verständnisfrage zu "globalen" Settings

Begonnen von fireball, 12 Januar 2024, 17:09:06

Vorheriges Thema - Nächstes Thema

fireball

Hi Fhem-Gemeinde,

ich versuche mich gerade wieder an einem neuen HTTPMOD Gerät und habe bisher folgendes zum Laufen gebracht:

Internals:
   BUSY       0
   CFGFN     
   DEF        http://192.168.178.112/data/v2/network/Station/ConnectionStatus 60
   FUUID      65a02495-f33f-0804-d151-037add313894e52a
   Interval   60
   MainURL    http://192.168.178.112/data/v2/network/Station/ConnectionStatus
   ModuleVersion 4.1.16 - 4.4.2023
   NAME       WiserHub
   NOTIFYDEV  global
   NR         348870
   NTFY_ORDER 50-WiserHub
   STATE      httpbody
   TYPE       HTTPMOD
   eventCount 18
   httpbody   "Connected"
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.178.112:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://192.168.178.112/data/v2/network/Station/ConnectionStatus
     header     Content-Type: application/json
Accept: */*
Secret: HIERSTEHTEINSECRET
     host       192.168.178.112
     httpheader HTTP/1.1 200 OK
Content-Length: 11
Content-Type: application/json
Keep-Alive: timeout=5, max=5
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /data/v2/network/Station/ConnectionStatus
     protocol   http
     redirects  0
     timeout    2
     url        http://192.168.178.112/data/v2/network/Station/ConnectionStatus
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     Content-Type: application/json
Accept: */*
Secret: %%WiserHub_Secret%%
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        http://192.168.178.112/data/v2/network/Station/ConnectionStatus
Attributes:
   enableControlSet 1
   extractAllJSON 1
   get1ExtractAllJSON 0
   get1Name   Status
   icon       hm-tc-it-wm-w-eu
   replacement1Mode key
   replacement1Regex %%WiserHub_Secret%%
   replacement1Value WiserHub_Secret
   requestHeader1 Content-Type: application/json
   requestHeader2 Accept: */*
   requestHeader3 Secret: %%WiserHub_Secret%%
   room       SYSTEM
   showBody   1
   showError  1
   verbose    0

Also die URL im DEF des Gerätes wird abgefagt, und über requestHeader3 wird mit replacement1Value noch ein Token übergeben.
Im httpbody kommt connected zurück, ohne den Token/das Secret 401, ist klar...

Jetzt finde ich das Internal "httpbody" sehr interessant und wollte das als mein stateFormat nutzen.
Direkt gehts ja nicht, also habe ich ein get1Name Status definiert.
Ein get1URL habe ich weggelassen, laut Doku soll dann ja die URL aus DEF genommen werden.
Es kommt nur der String: "Connected" zurück, bzw. ist er evtl. in {} klammern, weil sonst alles in JSON zurückkommt.

ABER:
1. Bei get Status bzw. get1Name bekomme ich jetzt einen 401 ... werden die Header nicht immer mit übertragen als "globale" Einstellungen/Paramter? Ich denke es liegt am Fehlenden Secret, denn bevor ich das definiert hatte, hatte auch die DEF URL diesen Fehler...
2. gibts einen anderen Weg das Internal als stateFormat zu nutzen?

VG
René
 

betateilchen

#1
Zitat von: fireball am 12 Januar 2024, 17:09:06Jetzt finde ich das Internal "httpbody" sehr interessant und wollte das als mein stateFormat nutzen.
Direkt gehts ja nicht, also habe ich ein get1Name Status definiert.
...
2. gibts einen anderen Weg das Internal als stateFormat zu nutzen?

attr WiserHub stateFormat {InternalVal($name,'httpbody','n/a')}
bevor ich mich jetzt aufrege, ist es mir lieber egal...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!