Hi,
ich möchte gerne meine Soundbar mit einem Dummy ein/ausschalten.
Es gibt folgende URL dafür:
http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E
Nun habe ich diese Möglichkeiten ausprobiert und keine funktioniert.
{ GetHttpFile("192.168.178.62:56001","/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }
{ GetFileFromURL("http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }
Hinweis: obwohl die Funktion das anscheinend benötigt, darf ein "/" am Ende der URL hier nicht sein, weil die Soundbar dann ein "401 Unauthorized" zurückgibt. Also zumindest im Browser. In FHEM sehe ich das mit z.B. {return GetFileFromURL(".../")} nicht.
define SoundbarOff HTTPMOD http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E 0
set SoundbarOff reread
Hat jemand eine Idee?
Danke + Grüße
Spiff.
Zitat von: Spiff am 18 März 2022, 21:45:54
Hat jemand eine Idee?
Mal ins FHEM Logfile schauen, ob sich dort Auffälligkeiten zeigen? Ggf. den verbose level vorher hochdrehen.
Nachprüfen, ob eventuell Zeichen "Gequoded" werden müssen?
Funktioniert es denn mit wget auf der Konsole?
Hi,
wget geht, ja! Die Soundbar reagiert darauf.
pi@FHEMpi:~ $ wget http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E
--2022-03-22 19:28:01-- http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E
Verbindungsaufbau zu 192.168.178.62:56001 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 200 OK
Länge: 238 [text/html]
Wird in »UIC?cmd=<name>SetPowerStatus<%2Fname><p type="dec" name="powerStatus" val="0"%2F>.1« gespeichert.
UIC?cmd=<name>SetPo 100%[===================>] 238 --.-KB/s in 0s
2022-03-22 19:28:01 (4,71 MB/s) - »UIC?cmd=<name>SetPowerStatus<%2Fname><p type="dec" name="powerStatus" val="0"%2F>.1« gespeichert [238/238]
Alle 3 oben beschriebenen Versuche geben den gleichen Fehler "empty answer received" zurück. Logeinträge siehe unten.
Sind die Sonderzeichen in der URL ein Problem - meinst du das mit quoten?
Danke & Gruß
Spiff.
Zitat
{ GetHttpFile("192.168.178.62:56001","/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }
2022.03.22 19:02:23 5: Cmd: >{ GetHttpFile("192.168.178.62:56001","/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }<
2022.03.22 19:02:23 5: HttpUtils url=http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E Blocking via http
2022.03.22 19:02:23 5: HttpUtils request header:
GET /UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E HTTP/1.0
Host: 192.168.178.62:56001
User-Agent: fhem
Accept-Encoding: gzip,deflate
2022.03.22 19:02:23 4: CustomGetFileFromURL http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E: empty answer received
Zitat
{ GetFileFromURL("http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }
2022.03.22 19:20:18 5: Cmd: >{ GetFileFromURL("http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E") }<
2022.03.22 19:20:18 5: HttpUtils url=http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E Blocking via http
2022.03.22 19:20:18 5: HttpUtils request header:
GET /UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E HTTP/1.0
Host: 192.168.178.62:56001
User-Agent: fhem
Accept-Encoding: gzip,deflate
2022.03.22 19:20:18 4: CustomGetFileFromURL http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E: empty answer received
Zitatdefine SoundbarOff HTTPMOD http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E 0
set SoundbarOff reread
2022.03.22 19:21:23 5: Cmd: >set SoundbarOff reread<
2022.03.22 19:21:23 5: SoundbarOff: set called with reread
2022.03.22 19:21:23 4: SoundbarOff: GetUpdate called (reread)
2022.03.22 19:21:23 5: SoundbarOff: AddToQueue adds type update to URL http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E, no data, no headers, retry 0, initial queue len: 0
2022.03.22 19:21:23 5: SoundbarOff: HandleSendQueue called from AddToSendQueue, qlen = 1
2022.03.22 19:21:23 4: SoundbarOff: HandleSendQueue sends update with timeout 2 to http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E, No Data, No Header
2022.03.22 19:21:23 5: HttpUtils url=http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E NonBlocking via http
2022.03.22 19:21:23 4: IP: 192.168.178.62 -> 192.168.178.62
2022.03.22 19:21:23 5: Starting notify loop for SoundbarOff, 1 event(s), first is reread
2022.03.22 19:21:23 5: createNotifyHash
2022.03.22 19:21:23 5: End notify loop for SoundbarOff
2022.03.22 19:21:23 5: HttpUtils request header:
GET /UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E HTTP/1.0
Host: 192.168.178.62:56001
User-Agent: fhem
Accept-Encoding: gzip,deflate
2022.03.22 19:21:23 5: SoundbarOff: ReadCallback called from __ANON__
2022.03.22 19:21:23 5: SoundbarOff: Read callback Error LogLvl set to 3, regex
2022.03.22 19:21:23 3: SoundbarOff: Read callback: Error: http://192.168.178.62:56001/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E%3Cp%20type=%22dec%22%20name=%22powerStatus%22%20val=%220%22/%3E: empty answer received
2022.03.22 19:21:23 4: SoundbarOff: Read callback: request type was update retry 0, no headers, no body
2022.03.22 19:21:23 5: SoundbarOff: Read callback: body empty
2022.03.22 19:21:23 4: SoundbarOff: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2022.03.22 19:21:23 5: SoundbarOff: GetCookies is looking for Cookies
2022.03.22 19:21:23 5: SoundbarOff: ExtractSid called, context reading, num unknown
2022.03.22 19:21:23 4: SoundbarOff: no header to look for redirects
2022.03.22 19:21:23 5: SoundbarOff: Read callback sets LAST_REQUEST to update
2022.03.22 19:21:23 5: SoundbarOff: CheckAuth decided no authentication required
Probier doch mal ganz einfach den tatsächlichen Aufruf:
{ GetFileFromURL('http://192.168.178.62:56001/UIC?cmd=<name>SetPowerStatus</name><p type="dec" name="powerStatus" val="0"/>') }
Ansonsten danach die Variante
{ GetFileFromURL('http://192.168.178.62:56001%2FUIC%3Fcmd%3D%3Cname%3ESetPowerStatus%3C%2Fname%3E%3Cp%20type%3D%22dec%22%20name%3D%22powerStatus%22%20val%3D%220%22%2F%3E') }