[gelöst] SONOS; Playliste mit HTML aufrufen

Begonnen von FHEm2005, 14 Juli 2018, 13:33:43

Vorheriges Thema - Nächstes Thema

FHEm2005

Ich habe seit einiger Zeit SONOS/SONOSPLAYER in meinem Homeserver integriert. Das passt alles. Jetzt plane ich ein Projekt, bei dem ich eine Playlist via HTML-Befehl - FHEM - SONOS - sonos_Kueche_RF aufrufen möchte. Diese soll in den SonosBoxen in der Küche abgespielt werden. URI der Playlist: <IP>/music/SONOS/playlist1.m3u. In der SONOS-App kann ich die PL aufrufen und sie wird auch abgespielt.  In Fhem steuert der Befehl set SONOS_Kueche_RF playURI \\<IP>\music\SONOS\playlist1.m3u  spielt die PL sofort und ohne Probleme ab.

Jetzt brauche ich nur noch einen passenden HTML-Aufruf. Wie kann ich einen Fhem-Befhl über Html an den Server schicken? Eine Suche war nicht erfolgreich. Klar kann es sein, dass  ich die falschen Begriffe gewählt habe.

Außerdem bekomme ich bei den get-Commands weder eine Playliste (get <device> playlist) noch eine Radiostation (get <device> radio) angezeigt. Keine Ahnung woran es liegen kann. In der App ist beides vorhanden.

"Help! I need sombody's help!" :)

Edit:
In einem Thread habe ich den den allgemeinen Befehl: http://<fhemhost>:8083/fhem?XHR=1&cmd=<fhem-Kommando>  gefunden. Auf mein Projekt umgesetzt müsste der Befehl lauten:

http://192.168.2.46:8083/fhem?XHR=1&cmd=set%20sonos_Kueche_RF%20PlayURI%20//192.168.2.14/music/SONOS/playlist1.m3u
Ergebnis: Geht nicht, obwohl ich Leerzeichen durch %20 ersetzt habe. Fehlt da noch mehr?


Viele Grüße
Eberhard


Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

dev0

Mindstens die Groß- und Kleinschreibung wurde in der URL nicht beachtet.

FHEm2005

Inzwischen musste ich lernen, dass es so einfach nicht geht - ein Token ist gefragt!

Also habe ich mich für die Methode des festen Token entschieden. Ich habe in meine config attr WEB csrfToken 123456789123 eingefügt. Dann ein restart.  Den Aufruf habe ich wie folgt modifiziert:
http://192.168.2.46:8083/fhem?cmd=set%20sonos_Kueche_RF%20PlayURI%20//192.168.2.14/music/SONOS/playlist1.m3u&fwcsrf=123456789123

Aber leider funktioniert auch dieser Link nicht. Ich habe es mit einem einfacheren Command (set <device> on) versucht - geht nicht.

...und nun?

ZitatMindstens die Groß- und Kleinschreibung wurde in der URL nicht beachtet.
Da sehe ich nichts! Das habe ich so aus einem Thread/Wiki.

Grüße Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

dev0

"sonos_Kueche_RF" != "SONOS_Kueche_RF"

FHEm2005

Hallo dev0,
ok, das ist ein Schreibfehler, der sich nicht auf die Funktion (bei mir) auswirkte. Nach einer langen Nacht habe ich das Problem lösen können. Ein Wiki hat mir geholfen den Weg zu finden.

Fakt ist: ich komme um das Thema Token nur herum, wenn ich ihn entweder ausschalte oder benutze.

Token ausschalten: mit attr <WEB-Instanz> csrfToken none
Dann funktioniert der folgenden Befehl:
http://192.168.2.46:8083/fhem?cmd=set%20sonos_Kueche_RF%20PlayURI%20//192.168.2.14/music/SONOS/playlist.m3u

Als zweite für mich praktikable Lösung ist die mit einem festen Token. Dazu muss der Token definiert werden: attr <WEB-Instanz> csrfToken 123456789123 . Er ist frei wählbar. In wieweit Sonderzeichen benutzt werden dürfen, habe ich nicht ausprobiert. Ich habe mich auf eine 12-stellige Zahl festgelegt.
Jetzt sieht der Aufruf wie folgt aus:
http://192.168.2.46:8083/fhem?cmd=set%20sonos_Kueche_RF%20PlayURI%20//192.168.2.14/music/SONOS/playlist.m3u&fwcsrf=123456789123

Damit war mein Ziel erreicht!

Gruß Eberhard

Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM