Aufrufen einer URL funktioniert nicht

Begonnen von Spiff, 18 März 2022, 21:45:54

Vorheriges Thema - Nächstes Thema

Spiff

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.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Nachprüfen, ob eventuell Zeichen "Gequoded" werden müssen?

Funktioniert es denn mit wget auf der Konsole?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Spiff

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

betateilchen

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') }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!