FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Spiff am 18 März 2022, 21:45:54

Titel: Aufrufen einer URL funktioniert nicht
Beitrag von: Spiff am 18 März 2022, 21:45:54
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.
Titel: Antw:Aufrufen einer URL funktioniert nicht
Beitrag von: betateilchen am 18 März 2022, 22:19:01
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.
Titel: Antw:Aufrufen einer URL funktioniert nicht
Beitrag von: Wernieman am 21 März 2022, 15:44:53
Nachprüfen, ob eventuell Zeichen "Gequoded" werden müssen?

Funktioniert es denn mit wget auf der Konsole?
Titel: Antw:Aufrufen einer URL funktioniert nicht
Beitrag von: Spiff am 22 März 2022, 19:35:19
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
Titel: Antw:Aufrufen einer URL funktioniert nicht
Beitrag von: betateilchen am 22 März 2022, 21:49:06
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') }