[erledigt] fhemweb, kodi und Sec-WebSocket-Key

Begonnen von the ratman, 18 Februar 2020, 13:25:38

Vorheriges Thema - Nächstes Thema

the ratman

hiho,

vielleicht kann mir jemand halfen.
ich versuch grade in kodi ein bisschen automatisierungsleben zu bekommen. kodi-modul rennt, der unterbau mit automagic für die shield tv auch.
was mir fehlt ist ein button in kodi, der mir meinen tv über fhem umschalten kann.

die kodinerds helfen mir da, scheinen aber auch ein bissi anzustehen.
lt. deren infos hab ich mir einen favoriten in kodi gebastelt:<favourite name="TV">PlayMedia("http://192.168.178.8:8083/fhem?cmd.fembotter=set%20fembotter%20startApp%20TV")</favourite>

in fhem kommt aber nur folgendes an:2020.02.17 19:02:23 1:  PERL WARNING: Use of uninitialized value $FW_httpheader{"Sec-WebSocket-Key"} in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 527.
2020.02.17 19:02:23 1:  stacktrace:
2020.02.17 19:02:23 1:      main::__ANON__                      called by ./FHEM/01_FHEMWEB.pm (527)
2020.02.17 19:02:23 1:      main::FW_Read                       called by fhem.pl (3763)
2020.02.17 19:02:23 1:      main::CallFn                        called by fhem.pl (755)


wo happerts da generell? ich schick z.b. auch von windows aus solcherlei befehle mit der webpost.exe problemlos an fhem.
btw - falls jemand eine idee hat, so nen button in kodi anders umzusetzen - ich bin für alles offen *g*
→do↑p!dnʇs↓shit←

rudolfkoenig

Die Fehlermeldung besagt, dass jemand ein HTTP-GET Request mit "Connection: Upgrade" im Header schickt, was FHEMWEB als Aufforderung zum Upgrade auf Websocket interpretiert, aber es fehlt die "Sec-WebSocket-Key" Headerzeile.

Ich kann aber nicht sagen, ob der Aufruf zur Fehlermeldung passt.

the ratman

#2
vielen thx für die schnellen infos!

ich werd das mal bei kodinerds reinstellen, mal sehen, was die dazu sagen.
nach dem lesen, was man hier so in letzten jahren über websock geschrieben hat, hab ichs ja schon fast vermutet, scheint ja nicht nur einmal vorzukommen, dass da zeilen fehlen.

von fhem-seite aus kann man da warscheinlich nicht viel machen?

ich zitiere dich dort mal ohne nick - sollt dir das nicht passen, bitte einfach sagen, dann hau ich das dort wieder raus.
→do↑p!dnʇs↓shit←

the ratman

du, sag mal ...

nachdem die antwortfreudigkeit auf kodi-seite auf einmal gegen 0 tendiert *g*, gibts irgend ne möglichkeit von seiten fhem z.b. der url noch was anfügen, mit der ich meinen aufruf trotzdem durch kriege?
→do↑p!dnʇs↓shit←

rudolfkoenig

Kannst Du bitte in 01_FHEMWEB.pm, vor Zeile 432 (die mit der ersten POSTdata) Folgende einfuegen:Log 1, $hash->{HDR};
danach FHEM neu starten, Kodi bemuehen, und mir den "richtigen" HTTP Header aus dem FHEM-Log zeigen?

the ratman

#5
sehr gern!

damit ich nix falsch mach:
01_fhemweb logzeile einfügen - schaut dann so aus (430-435):  }
Log 1, $hash->{HDR};
  my $POSTdata = "";
  if($hash->{CONTENT_LENGTH}) {
    return if(length($hash->{BUF})<$hash->{CONTENT_LENGTH});


ich setze folgenen befehl im kodi per favoriten ab:<favourites>
    <favourite name="SAT">PlayMedia("http://192.168.178.8:8083/fhem?cmd.fembotter=set%20fembotter%20startApp%20TV")</favourite>
</favourites>


kodi und fhem restartet

bei fhemweb kommt jetzt an (hoffe ich hab alles, oder fehlt dir was?):2020.02.19 17:34:43 1: HEAD /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV HTTP/1.1
Host: 192.168.178.8:8083
User-Agent: Kodi/18.5 (Linux; Android 9.0; SHIELD Android TV Build/PPR1.180610.011) Android/9.0.0 Sys_CPU/aarch64 App_Bitness/64 Version/18.5-Git:20191116-37f51f6e63
Accept: */*
Accept-Encoding: deflate, gzip
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Accept-Charset: UTF-8,*;q=0.8
2020.02.19 17:34:43 1: GET /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV HTTP/1.1
Host: 192.168.178.8:8083
User-Agent: Kodi/18.5 (Linux; Android 9.0; SHIELD Android TV Build/PPR1.180610.011) Android/9.0.0 Sys_CPU/aarch64 App_Bitness/64 Version/18.5-Git:20191116-37f51f6e63
Accept: */*
Accept-Encoding: deflate, gzip
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Accept-Charset: UTF-8,*;q=0.8
2020.02.19 17:34:43 1: PERL WARNING: Use of uninitialized value $FW_httpheader{"Sec-WebSocket-Key"} in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 527.
2020.02.19 17:34:43 1: stacktrace:
2020.02.19 17:34:43 1:     main::__ANON__                      called by ./FHEM/01_FHEMWEB.pm (527)
2020.02.19 17:34:43 1:     main::FW_Read                       called by fhem.pl (3764)
2020.02.19 17:34:43 1:     main::CallFn                        called by fhem.pl (756)


kodi steht in der zeit übrigens und waret auf irgendwas, was nicht kommt.

notiz an mich selber: fhemweb wieder auf original
→do↑p!dnʇs↓shit←

rudolfkoenig

Kodi will nicht auf websocket, sondern auf HTTP2 upgraden.
Kannst du ihm das ausreden?

Ich habe FHEMWEB jetzt angepasst, damit Upgrade genauer nach websocket prueft, vlt. reicht das auch schon.

the ratman

erst mal: vielen dank für deine affenartig schnellen hilfeversuche!

naja, ausreden eher weniger - ich bin damit bei den kodinerds gelandet - ist quasi nur der deutsche, inoffizielle ableger von kodi.
ich blick da derzeit noch nicht wirklich durch, wer da wann wo für was und warum ...

ist deine version dann morgen online?
dann probier ichs einfach aus und geb dann morgen bescheid.

was mir halt noch aufstößt ist: soweit ich das kapiere, will der kodi mit meinem link eigentlich ein movie abspielen - bin schon neugierig, was passiert, wenns fhem-seitig klappt. der müsste in meinen augen also wegen fehler schreien, wenn fhem kein movie zurück liefert.
aber die leute meinen, das gehört so ...



o.t.
im zuge meiner sucherei bin ich über ein beta-addon für kodi gestolpert: https://www.kodinerds.net/index.php/Thread/60458-Pre-Release-plugin-program-fhemcontrol/
das hätte potential zu nem neuen interface für fhem - nur, falls das wen interessiert.
→do↑p!dnʇs↓shit←

the ratman

#8
scheint besser zu werden.

ich krieg weder fehler noch freeze auf kodi und fhem meldet auch keinen fehler.
lediglich der befehl wird ned ausgeführt

log mit verbose 5 2020.02.20 10:14:07 4:  Connection accepted from WEB_192.168.178.17_34720
2020.02.20 10:14:07 4:  Connection closed for WEB_192.168.178.17_34720: EOF
2020.02.20 10:14:07 4:  Connection accepted from WEB_192.168.178.17_34722
2020.02.20 10:14:07 4:  WEB_192.168.178.17_34722 GET /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV; BUFLEN:0
2020.02.20 10:14:07 4:  authorize WEB/cmd/set: Passwort returned dont care
2020.02.20 10:14:07 4:  authorize WEB/devicename/fembotter: Passwort returned dont care
2020.02.20 10:14:07 4:  WEB: /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV / RL:2829 / text/html; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate

2020.02.20 10:14:07 4:  Connection closed for WEB_192.168.178.17_34722: EOF
2020.02.20 10:14:07 4:  Connection accepted from WEB_192.168.178.17_34724
2020.02.20 10:14:07 4:  Connection closed for WEB_192.168.178.17_34724: EOF
2020.02.20 10:14:07 4:  Connection accepted from WEB_192.168.178.17_34726
2020.02.20 10:14:07 4:  WEB_192.168.178.17_34726 GET /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV; BUFLEN:0
2020.02.20 10:14:07 4:  authorize WEB/cmd/set: Passwort returned dont care
2020.02.20 10:14:07 4:  authorize WEB/devicename/fembotter: Passwort returned dont care
2020.02.20 10:14:07 4:  WEB: /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV / RL:2829 / text/html; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate

2020.02.20 10:14:07 4:  Connection closed for WEB_192.168.178.17_34726: EOF
2020.02.20 10:14:07 4:  Connection accepted from WEB_192.168.178.17_34730
2020.02.20 10:14:07 4:  WEB_192.168.178.17_34730 GET /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV; BUFLEN:0
2020.02.20 10:14:07 4:  authorize WEB/cmd/set: Passwort returned dont care
2020.02.20 10:14:07 4:  authorize WEB/devicename/fembotter: Passwort returned dont care
2020.02.20 10:14:07 4:  WEB: /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV / RL:2829 / text/html; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate

2020.02.20 10:14:07 4:  WEB_192.168.178.17_34730 GET /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV; BUFLEN:0
2020.02.20 10:14:07 4:  authorize WEB/cmd/set: Passwort returned dont care
2020.02.20 10:14:07 4:  authorize WEB/devicename/fembotter: Passwort returned dont care
2020.02.20 10:14:07 4:  WEB: /fhem?cmd.fembotter=set%20fembotter%20startApp%20TV / RL:2829 / text/html; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate
→do↑p!dnʇs↓shit←

the ratman

habs erledigt - allerdings auf umwegen.

wers wissen will:
o) die app "button mapper" installiert
o) den sowieso sinnlosen button "netflix" auf der fernbedienung dort angelernt (der button braucht keine speziellen funktionen lernen, nur halt weg von der standardfunktion "netflix")
o) in amad ein script gebastelt und dass durch den neuen button starten lassen
o) fertig
→do↑p!dnʇs↓shit←