Neues Modul 71_PHILIPS_AUDIO.pm für MCi, Streamium und Fidelio Geräte

Begonnen von ra666ack, 21 Februar 2015, 19:58:04

Vorheriges Thema - Nächstes Thema

hoover123

Meine Philips Fidelio HTS9241 scheint auf Port 2870 zu kommunizieren - siehe auch

http://www.upnp-database.info/device.jsp?deviceId=897

Gibt es eine Möglichkeit, den Port manuell beim define einzutippen, weil unter 8889 rührt sich nichts...

ra666ack

Hi hoover123,

das manuelle Ändern des Ports würde leider nichts bringen, da das Modul nicht das UPNP Protokoll verwendet.
Es ist der eingebaute Webserver an 8889, der verwendet wird. Falls dein Gerät diesen nicht unterstützt, sieht es hierbei schlecht aus.

Gruß

hoover123

Schade, ich habe zwar eine Smartphone-App für die Philips Fidelio HTS-9241, aber mit FHEM wäre es für mich besser gewesen, weil ich da so einiges damit vor hatte. Wusste gar nicht, dass statt TCP nur das UPNP-Protokoll unterstützt wird.

Immerhin offenbart sich die Philips Fidelio HTS-9241 protokollarisch gegenüber Internet-typischen Anfragen - siehe auch:

http://www.upnp-database.info/device.jsp?deviceId=897

So weiß man immerhin, welche Anweisungen sie unterstützt. Wäre schön, wenn man das auch über FHEM irgendwie realisieren könnte. Sie ist ja mit DLNA (teilweise) kompatibel. Leider reichen meine Programmierkenntnisse dafür nicht aus...

Trotzdem danke für die Antwort.

Gruß

ra666ack

leHi,

was passiert, wenn du mit einem Browser (von einem Rechner aus) diese Seite aufrufst?
Könntest du versuchen, mit einem Browser http://ip-des-gerätes:2870 den Quellcode auszulesen und zu posten?

Leider kenne ich das Gerät nicht. Wie heißt die App, mit der der Player bedient wird?

Danke und Gruß




ra666ack

Alternativ könntest du versuchen, in der Zeile 319 des Moduls 71_PHILIPS_AUDIO.pm

$hash->{PORT}    = 8889; durch $hash->{PORT}    = 2870;

zu ersetzen.

Evtl. haben wir Glück und lediglich der Port wurde geändert...

hoover123

tja, da kommt ein "böser" Browser-"Error 403 Access forbidden" - wenn ich mit 192.IP-des-gerätes:2870 darauf zugreifen will. Mit http://www.upnp-database.info/device.jsp?deviceId=897 war zumindest ein "reger" Kontakt möglich. Dort hat sich das Gerät auch preisgegeben.

Als App habe ich auf meinem Apple iPhone die "Philips MyRemote" installiert. Mit der kann ich die Anlage auch steuern.
https://itunes.apple.com/de/app/philips-myremote/id426883783

Meine Frau hat auf Android das gleiche:
https://play.google.com/store/apps/details?id=philips.oneremote

hoover123

Ich hatte mal versuchsweise auf meiner Fritz-Box eine Port-Umleitung von 8889 auf 2870 eingerichtet (bei gleicher IP eingetragen, sozusagen als dirty trick) - bin mir aber nicht sicher ob dies technisch überhaupt der richtige Gedankenansatz gewesen wäre.

Ich bezeichne mich derzeit als fortgeschrittenen Anfänger. Ich bin immerhin in der Lage, in der:

i71_PHILIPS_AUDIO.pm

die Zeile 319
$hash->{PORT}    = 8889; durch $hash->{PORT}    = 2870;
zu ändern.

Leider weiß ich nicht, wie ich diese Zwischenversion in das FHEM als Test-Update reinbekomme. Ich habe ein Raspberry Pi 2 und kann grobmotorisch mit telnet, ssh und dem Webinterface umgehen. Leider sind meine Grundkenntnisse nicht ausreichend. Ich bräuchte also eine kleine Anweisung. Mit Hinweisen wie "hier die richtige IP-Adresse eintragen" kann ich schon umgehen... :-)

ra666ack

Alles klar. Das Home-Verzeichnis von FHEm auf dem Pi2 müßte /opt/fhem sein.
Im Verzeichnis /opt/fhem/FHEM die Datei 71_PHILIPS_AUDIO.pm editieren, heißt in Zeile 319 8889  durch 2870 ersetzen.

Nach dem ausprobieren wieder zurück. Evtl. must du dies als root machen.

Die Chancen stehen eher schlecht, dass das Modul funktioniert.




hoover123

Ich habe jetzt mal mit dem Programm "Softperfect Network Scanner" einen Port Scan auf der lokalen IP des Philips  HTS9241 gemacht. Bekomme den Port 51000 als offen gemeldet. Siehe da, ich kann die Anlage jetzt voll über den Browser steuern. Siehe Screenshots anbei. Im HTML-Quelltext stehen auch die Befehle drin, die die Anlage beherrscht.

hoover123

Jetzt habe ich in in meinen Router eine TCP-Portfreigabe von 51000 auf 8889 eintragen und mit Dyn. DNS nach draußen geschossen (UDP ist noch zu). Lustig, jetzt kann man sogar die Fidelio von der Ferne aus steuern. Im Screenshot sieht man auch, dass der Redirect von Port 51000 auf 8889 funktioniert.

Leider hilft mir das nicht, weil die Anlage unter FHEM immer noch absent ist (trotz shutdown restart). Ich habe mal die Außen-IP benutzt, wegen dem verflixten Port 8889.

ra666ack

Vielen Dank für die Screenshots. Das Konzept ähnelt dem umgesetzten. Evtl. haben wir Glück.

Könntest du folgendes tun:

Gehe bitte auf die Hauptseite -> http://ip:51000

Danach klicke bitte z.B. auf den Standby Button und beobachte, was mit der Browser Adresse passiert. Sie dürfte sich nach dem Klick verändert haben. Bitte notiere die URL. Ähnlich bei den anderen Tasten.




hoover123

Die URL ändert sich beim Tastendrücken im Browser-Interface nicht. Guck mal in den HTML-Quellcode. Da sind die Tasten beispielsweise als

<div class="RC-button commonRC" id="powerRCButton"></div><div class="buttonHL" id="powerRCButton_hl"></div>
<div class="buttonTZ" id="powerRCButton_tz"></div>
...
<div class="buttonHL" id="redRCButton_hl"></div>
<div class="buttonTZ" id="redRCButton_tz"></div>
...

Beim Draufklicken wird lediglich eine Javascript-Routine aufgerufen.

Hier hat Philips scheinbar die smartPhoneControl.js entsprechend gepimpt. Da sind Ajax-Aufrufe drin.

hoover123

Sind anscheinend POST Befehle die per JSON abgesetzt werden. Siehe Screenshot.

ra666ack

Vielen Dank.

So richtig verstanden habe ich das KOnzept noch nicht. Liegt wahrscheonlich daran, dass ich mit JSON AJAX noch nie was gemacht gabe.
Ich versuche mich durch die Skripte durchzufräsen.

Möglicherweise wäre die Reverse-Engineering Methode einfacher: Hast du eine Möglichkeit auf deinem OSX "Wireshark" Laufen zu lassen? Dabei die Netzwerkkommunikation mitzuschneiden. Dort müssten die POST/GET Anfragen von der App zum Gerät direkt sichtbar sein.

hoover123

Ich habe im Wireshark den Filter auf Port 51000 (Philips-Anlage) und einmal auf Volume Down gedrückt. Anbei der Mitschnitt.