Seit einiger Zeit besitze ich mehrere Fonera Gramofon als Spotify Connect Empfänger. Was leider an den Playern etwas nervig ist, dass diese keine Lautsprecher besitzen und somit am Kopfhörerausgang aktive Verstärkung brauchen. Dazu schalte ich die Lautsprecher via Funksteckdose ein. Wenn man also nun via Spotify Connect dann Musik auf den Player schickt, muss man zusätzlich die Lautsprecher einschalten. Via FHEM wollte ich das nun automatisieren – was mir nun mittels des Moduls HTTPMOD gelungen ist. Werbung
Hier ist die genutzte Definition nach meiner Device Namenskonvention. Folgendes ist zu beachten:
- In der ersten Zeile ist die IP auszutauschen (wahlweise kann man dort den DNS-Namen eintragen)
- Per default ist auf dem gramofon das Passwort „admin“ gesetzt, dies muss, sofern es geändert wurde, in der zweiten Zeile am Ende geändert werden.
- In der untenstehenden Definition wird der Gramofon alle 30 Sekunden nach dem aktuellen Status gefragt – dies kann man ebenso in der ersten Zeile ändern
- Weiterhin wird jede Stunde der Spotify-Name und der DNS-Name abgefragt
- Ist der Abruf mehr als 5 Minuten nicht erfolgt, so wechseln die Readings für color (Farbe der LED), mode und status (abspielen oder WifiStatus bei gestoppter Musik) auf „offline“
- Via set kann man den Gramofon rebooten
define KUE_HTM_GRAMOFON HTTPMOD http://192.168.1.2/api/$sid 30 attr KUE_HTM_GRAMOFON sid1Data {"jsonrpc":"2.0","id":63,"method":"call","params":["session","login",{"username":"admin","password":"admin" }]} attr KUE_HTM_GRAMOFON stateFormat status (color) attr KUE_HTM_GRAMOFON enableControlSet 1 attr KUE_HTM_GRAMOFON reAuthRegex -32002|.*Access Denied.*|.*Bad Request.* attr KUE_HTM_GRAMOFON sidHeader1 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8 attr KUE_HTM_GRAMOFON sidHeader2 Accept: */* attr KUE_HTM_GRAMOFON sidHeader3 X-Requested-With: XMLHttpRequest attr KUE_HTM_GRAMOFON sidHeader4 Referer: http://%%internal_host%%/ attr KUE_HTM_GRAMOFON sid1URL http://%%internal_host%%/api/00000000000000000000000000000000 attr KUE_HTM_GRAMOFON sid1Data {"jsonrpc":"2.0","id":63,"method":"call","params":["session","login",{"username":"admin","password":"admin" }]} attr KUE_HTM_GRAMOFON sidIDRegex sid":[ \t]+"([\w\.]+)" attr KUE_HTM_GRAMOFON getURL http://%%internal_host%%/api/$sid attr KUE_HTM_GRAMOFON getHeader1 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8 attr KUE_HTM_GRAMOFON getHeader2 Accept: */* attr KUE_HTM_GRAMOFON getHeader3 X-Requested-With: XMLHttpRequest attr KUE_HTM_GRAMOFON getHeader4 Referer: http://%%internal_host%%/ attr KUE_HTM_GRAMOFON requestHeader1 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8 attr KUE_HTM_GRAMOFON requestHeader2 Accept: */* attr KUE_HTM_GRAMOFON requestHeader3 X-Requested-With: XMLHttpRequest attr KUE_HTM_GRAMOFON requestHeader4 Referer: http://%%internal_host%%/ attr KUE_HTM_GRAMOFON requestData {"jsonrpc":"2.0","id":81,"method":"call","params":["ledd","get",{"device_status":true}]} attr KUE_HTM_GRAMOFON replacement01Mode internal attr KUE_HTM_GRAMOFON replacement01Regex %%internal_host%% attr KUE_HTM_GRAMOFON replacement01Value host attr KUE_HTM_GRAMOFON reading01Name color attr KUE_HTM_GRAMOFON reading01JSON result_02_color attr KUE_HTM_GRAMOFON reading01MaxAge 300 attr KUE_HTM_GRAMOFON reading01MaxAgeReplacement offline attr KUE_HTM_GRAMOFON reading01MaxAgeReplacementMode text attr KUE_HTM_GRAMOFON reading02Name mode attr KUE_HTM_GRAMOFON reading02JSON result_02_mode attr KUE_HTM_GRAMOFON reading02MaxAge 300 attr KUE_HTM_GRAMOFON reading02MaxAgeReplacement offline attr KUE_HTM_GRAMOFON reading02MaxAgeReplacementMode text attr KUE_HTM_GRAMOFON reading03Name status attr KUE_HTM_GRAMOFON reading03JSON result_02_name attr KUE_HTM_GRAMOFON reading03MaxAge 300 attr KUE_HTM_GRAMOFON reading03MaxAgeReplacement offline attr KUE_HTM_GRAMOFON reading03MaxAgeReplacementMode text attr KUE_HTM_GRAMOFON get01Name spotifyname attr KUE_HTM_GRAMOFON get01Data {"jsonrpc":"2.0","id":6,"method":"call","params":["anet","get_gramofonname",{}]} attr KUE_HTM_GRAMOFON get01JSON result_02_spotifyname attr KUE_HTM_GRAMOFON get01Poll 1 attr KUE_HTM_GRAMOFON get01PollDelay 3600 attr KUE_HTM_GRAMOFON get02Name mdnsname attr KUE_HTM_GRAMOFON get02Data {"jsonrpc":"2.0","id":6,"method":"call","params":["anet","get_gramofonname",{}]} attr KUE_HTM_GRAMOFON get02JSON result_02_mdnsname attr KUE_HTM_GRAMOFON get02Poll 1 attr KUE_HTM_GRAMOFON get02PollDelay 3600 attr KUE_HTM_GRAMOFON set01Name reboot attr KUE_HTM_GRAMOFON set01Data {"jsonrpc":"2.0","id":14,"method":"call","params":["mfgd","reboot",{}]} attr KUE_HTM_GRAMOFON set01NoArg
Hallo,
danke für den hilfreichen Beitrag.
Ich habe prinzipiell das gleiche Setup wie du, möchte aber noch einen Schritt weiter gehen und meine Lieblingsplaylist auf Knopfdruck (z.B. Flic oder Hue Fernbedienung) direkt auf dem Gramofon starten.
Hast du eine Idee, wie sich das realisieren ließe?
LG
Jeff
Hi Jeff,
da habe ich ewig rumprobiert…aber es scheint so zu sein, dass der physikalische Knopf leider nicht anzusteuern ist. Und damit leider auch die Steuerung nicht möglich ist… 🙁
Ich habe eine Weile versucht einen Spotify Connect Controller mit FHEM zu bauen, aber da bin ich auch nicht wirklich weiter gekommen 🙁 Hatte mich mit spotcontrol an diesem Problem probiert aber irgendwann das Interesse verloren.
Falls du es löst: Lass es mich wissen – wäre interessant 🙂
Cheers,
Uli
Hi Uli,
danke für den Hinweis mit Spotcontrol. Das Tool funktioniert nur noch bedingt, da es auf die obsolete Spotify Library aufsetzt. Allerdings hat es mich nach einiger Recherche auf https://github.com/Spotifyd/spotifyd-http gebracht, was vielversprechend aussieht, da es auf einer aktuellen, aber inoffiziellen Library aufsetzt. Ich benötige noch einen oder zwei freie Abende zum Testen, aber ich hoffe, dass ich dann eine Lösung parat habe.
Das oben genannte Tool scheint, wenn es funktioniert, auch ziemlich cool für FHEM zu sein, da es über simple HTTP Requests Musik auf einem Connect Gerät steuern kann.
Ich melde mich, wenn ich mehr weiß.
LG
Jeff
Hi Uli,
mit dem o.g. Tool bin ich in der Lage, das Gramofon vollständig über Spotify Connect zu steuern. Alles funktioniert!
Ich habe ein Docker-Image gebaut, da die Kompilierung doch recht viel Zeit in Anspruch nahm: https://hub.docker.com/r/jeboehm/spotifyd-http/
Viel Spaß!
Hi Jeff,
der Hammer 🙂 Danke dir – werde ich definitiv über die kommenden ruhigeren Tage mal ausprobieren 🙂
Cheers,
Uli
Gibt es für unbedarfte Nutzer evtl. ein howto, wie man das auf XUBUNTU 16.04 nutzen könnte?