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é
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...