[Neues Modul] Spotify

Begonnen von neumann, 28 Mai 2017, 15:58:19

Vorheriges Thema - Nächstes Thema

Macx

Bei dem Scenario spielt es die Einschlafmusik meiner Tochter ab ... Lautstärke 7 reicht hier für mich völlig ... Ich habe auch noch eine Taste für Radio Fritz auf allen Lautsprechern, die vorher auch alle Lautstärke 20 bekommen, somit kann es eigentlich nie zu zu lauten/leisen Aktionen kommen :)

War ja auch nur eine Idee ;)

neumann

Hallo zusammen,

ich würde ungern bestehende Befehle miteinander vermischen und etablierte Syntax ändern.
In diesem Fall würde ich wirklich einfach vorschlagen, die Abspiellautstärke vor Beginn des Playbacks immer zu setzen - um sicher zu gehen kannst du das Playback ja auch erst 1-2 Sekunden später starten.
In der Regel sollte es aber passen, wenn du es sequentiell machst.

LG
Modulentwickler
- Spotify #72490
- Nello #75127

Esjay

Zitat von: neumann am 13 September 2017, 12:48:30
Hallo zusammen,

ich würde ungern bestehende Befehle miteinander vermischen und etablierte Syntax ändern.
In diesem Fall würde ich wirklich einfach vorschlagen, die Abspiellautstärke vor Beginn des Playbacks immer zu setzen - um sicher zu gehen kannst du das Playback ja auch erst 1-2 Sekunden später starten.
In der Regel sollte es aber passen, wenn du es sequentiell machst.

LG

Ich nehme alles zurück, und behaupte das Gegenteil. Ich dachte, dass es nur möglich ist die Lautstärke des aktuell abspielenden Gerätes zu ändern. Habe gerade in der Commandref gesehen, das es auch unabhängig geht.

Sorry für die Unruhe.

Grüße

tklein

Hallo,

ich verzweifel greade daran, ein bestimmtes Lied auf dem Echo zu starten. Eingerichtet ist alles.

Hier der Link zum Lied (Teilenfunktion): https://open.spotify.com/track/2pgYlzjkKrGH7McMiwWpEL?si=10lSFmAa

Habe diese Varianten ausprobiert:

set Spotify_TK playContextByURI spotify:track:2pgYlzjkKrGH7McMiwWpEL 33d9f5b10ca06ade25......
--> Spotify_TK: request failed: Non supported context uri

set Spotify_TK playContextByURI 2pgYlzjkKrGH7McMiwWpEL 33d9f5b10ca06ade25......
--> Spotify_TK: request failed: Invalid context uri

set Spotify_TK playContextByURI track:2pgYlzjkKrGH7McMiwWpEL 33d9f5b10ca06ade25......
--> Spotify_TK error_description: Invalid context uri

set Spotify_TK playContextByURI https://open.spotify.com/track/2pgYlzjkKrGH7McMiwWpEL?si=10lSFmAa 33d9f5b10ca06ade25......
-->
2017.09.13 17:53:04 3 : Spotify_TK: request failed: Non supported context uri
2017-09-13 17:53:04 Spotify Spotify_TK error_code: 400
2017-09-13 17:53:04 Spotify Spotify_TK error_description: Non supported context uri

wie muss ich den Aufruf korrekt starten?

Freue mich auf Hilfe/Feedback

Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

neumann

Lieber Thomas,

eine vollständige Spotify URI beginnt immer mit spotify: -  das erklärt, warum Beispiel 2 - 4 nicht funktionieren.
Zusätzlich versuchst du bei 1. & 3. einen einzelnen Track abzuspielen, dafür musst die die vollständige URI mit playTrackByURI verwenden.

Um nun das gesamte Album abzuspielen verwende set <name> playContextByURI spotify:album:2J5Lf1s0Q42e31xjSwVd8J <device_id>
Das es sich hierbei um eine passende URI handelt, siehst du ebenfalls an spotify:album.

LG
Oskar
Modulentwickler
- Spotify #72490
- Nello #75127

tklein

Hi Oskar,

vielen lieben Dank für deine superschnelle Hilfe. Jetzt kann ich das Lied auf dem Device abspielen. Allerdings nur, wenn es vorher aktiv gewesen ist. Sonst passiert leider nichts.
Muss ich da evtl das defaultPlaybackDeviceID wieder löschen?

Mit dem Modul ist es jetzt möglich Alexa zum "reden" zu bringen. :-)

Sobald meine Fritzbox-Anruferliste einen Anruf signalisiert, werde ich per spotify einen Rington abspielen.
Vielleicht gibt es ja noch weitere Ansagen wie Alarm, Stauwarnung etc. Werde da mal Spotify durchsuchen.
Auf allen ID kann ich nicht gleichzeitig das gleiche abspielen, oder?

Viele Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

AmunRe

Zitat von: tklein am 13 September 2017, 18:49:04
Sobald meine Fritzbox-Anruferliste einen Anruf signalisiert, werde ich per spotify einen Rington abspielen.
Vielleicht gibt es ja noch weitere Ansagen wie Alarm, Stauwarnung etc. Werde da mal Spotify durchsuchen.
Auf allen ID kann ich nicht gleichzeitig das gleiche abspielen, oder?

Viele Grüße
Thomas


Klar kannst Du. Schaff dir für jedes Endgerät ein Spotify Premium Account an. Und leg für jedes Gerät bzw Account ein Spotify Device an.
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

tklein

ok, danke. Habe ich mir schon gedacht.

Jetzt habe ich immer noch das Problem, dass ich keine Ausgabe auf meinem Echo bzw. Echo Dot habe. In den GUI's (Desktop, App) zeigt er mir an, das dort abgespielt wird. Es kommt aber kein Ton an bzw raus. Ja es ist nicht stumm und die Lautstärke ist nicht 0 :-)


setstate Spotify_TK 2017-09-14 10:28:00 device_1_id 7c7aed7f69a99dd45877a19..
setstate Spotify_TK 2017-09-14 10:28:00 device_1_name Thomas' Echo Dot
setstate Spotify_TK 2017-09-14 10:28:00 device_1_type Speaker
setstate Spotify_TK 2017-09-14 10:28:00 device_1_volume 80

setstate Spotify_TK 2017-09-14 10:28:00 device_2_id 3854157b19d748ea2..
setstate Spotify_TK 2017-09-14 10:28:00 device_2_name Thomas' Echo
setstate Spotify_TK 2017-09-14 10:28:00 device_2_type Speaker
setstate Spotify_TK 2017-09-14 11:22:52 device_2_volume 48

setstate Spotify_TK 2017-09-14 10:57:52 device_3_id 835b71aa3d550d40f5af6..
setstate Spotify_TK 2017-09-14 10:57:52 device_3_name HPLAPTOPKLEIN
setstate Spotify_TK 2017-09-14 10:28:00 device_3_type Computer
setstate Spotify_TK 2017-09-14 10:57:52 device_3_volume 46

setstate Spotify_TK 2017-09-14 10:57:52 device_4_id 4ff687d87d4480a3054..
setstate Spotify_TK 2017-09-14 10:57:52 device_4_name PC
setstate Spotify_TK 2017-09-14 10:57:52 device_4_type Computer
setstate Spotify_TK 2017-09-14 10:57:52 device_4_volume 53

setstate Spotify_TK 2017-09-14 11:22:52 device_5_id 33d9f5b10ca06ade25ca..
setstate Spotify_TK 2017-09-14 11:22:52 device_5_name thomas.klein's iPhone 5s
setstate Spotify_TK 2017-09-14 11:22:52 device_5_type Smartphone

setstate Spotify_TK 2017-09-14 11:24:18 device_active_id 3854157b19d748ea263..
setstate Spotify_TK 2017-09-14 11:24:18 device_active_name Thomas' Echo
setstate Spotify_TK 2017-09-14 11:24:18 device_active_type Speaker
setstate Spotify_TK 2017-09-14 11:24:18 device_active_volume 48


Das Lied wird auch nicht auf das gewünschte gewechselt.

Wenn ich das iPhone oder meinen Laptop/PC ansteuere, höre ich das entsprechende gewünschte Lied.

Verwirrte Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

AmunRe

Zitat von: tklein am 14 September 2017, 11:33:38
ok, danke. Habe ich mir schon gedacht.

Jetzt habe ich immer noch das Problem, dass ich keine Ausgabe auf meinem Echo bzw. Echo Dot habe. In den GUI's (Desktop, App) zeigt er mir an, das dort abgespielt wird. Es kommt aber kein Ton an bzw raus. Ja es ist nicht stumm und die Lautstärke ist nicht 0 :-)


setstate Spotify_TK 2017-09-14 10:28:00 device_1_id 7c7aed7f69a99dd45877a19..
setstate Spotify_TK 2017-09-14 10:28:00 device_1_name Thomas' Echo Dot
setstate Spotify_TK 2017-09-14 10:28:00 device_1_type Speaker
setstate Spotify_TK 2017-09-14 10:28:00 device_1_volume 80

setstate Spotify_TK 2017-09-14 10:28:00 device_2_id 3854157b19d748ea2..
setstate Spotify_TK 2017-09-14 10:28:00 device_2_name Thomas' Echo
setstate Spotify_TK 2017-09-14 10:28:00 device_2_type Speaker
setstate Spotify_TK 2017-09-14 11:22:52 device_2_volume 48

setstate Spotify_TK 2017-09-14 10:57:52 device_3_id 835b71aa3d550d40f5af6..
setstate Spotify_TK 2017-09-14 10:57:52 device_3_name HPLAPTOPKLEIN
setstate Spotify_TK 2017-09-14 10:28:00 device_3_type Computer
setstate Spotify_TK 2017-09-14 10:57:52 device_3_volume 46

setstate Spotify_TK 2017-09-14 10:57:52 device_4_id 4ff687d87d4480a3054..
setstate Spotify_TK 2017-09-14 10:57:52 device_4_name PC
setstate Spotify_TK 2017-09-14 10:57:52 device_4_type Computer
setstate Spotify_TK 2017-09-14 10:57:52 device_4_volume 53

setstate Spotify_TK 2017-09-14 11:22:52 device_5_id 33d9f5b10ca06ade25ca..
setstate Spotify_TK 2017-09-14 11:22:52 device_5_name thomas.klein's iPhone 5s
setstate Spotify_TK 2017-09-14 11:22:52 device_5_type Smartphone

setstate Spotify_TK 2017-09-14 11:24:18 device_active_id 3854157b19d748ea263..
setstate Spotify_TK 2017-09-14 11:24:18 device_active_name Thomas' Echo
setstate Spotify_TK 2017-09-14 11:24:18 device_active_type Speaker
setstate Spotify_TK 2017-09-14 11:24:18 device_active_volume 48


Das Lied wird auch nicht auf das gewünschte gewechselt.

Wenn ich das iPhone oder meinen Laptop/PC ansteuere, höre ich das entsprechende gewünschte Lied.

Verwirrte Grüße
Thomas


Wie steuerst Du denn an?
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

tklein

Hi,

mit

set Spotify_TK pause
set Spotify_TK playTrackByURI spotify:track:2pgYlzjkKrGH7McMiwWpEL 3854157b19d748ea2632fcd54....


Gruß
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

jpp

#130
Servus!

Ein dickes Dankeschön erst mal für das Modul, damit kann man wirklich schön spielen und es hat die Weckroutine defintiv verbessert :)

Aktuell behelfe ich mir mit einem DOIF und manuell eingetragenen Playlisten, damit ich bequem aus der Weboberfläche und aus anderen Aktionen heraus Playlisten starten kann. Habe den Code unten mal angehangen, vllt. kann ihn ja wer gebrauchen.

Besteht evtl. die Möglichkeit in das Spotify Modul ein get für Playlisten zu ergänzen? Bzw. noch besser ein reading oder mehrere mit Unterscheidung zwischen allen und selbst erstellten. So weit ich das verstanden habe, bietet die API dazu verschiedene get-playlist befehl an: https://developer.spotify.com/web-api/get-playlist/
Die man dann anhand der owner property splitten kann bzw. separat abrufen kann. Aber da hört es dann leider bei mir mit den Programmierkenntnissen aber schon auf...


define Spotify Spotify DUMMY  DUMMY
attr Spotify alwaysStartOnDefaultDevice 1
attr Spotify cmdIcon toggle:rc_PLAY next:rc_NEXT prev:rc_PREVIOUS
attr Spotify defaultPlaybackDeviceID DUMMY
attr Spotify icon audio_sound
attr Spotify stateFormat track_artist_name - track_name (is_playing)
attr Spotify webCmd toggle:prev:next:shuffle
attr Spotify webCmdLabel &nbsp;;:&nbsp;;:&nbsp;;:Shuffle&nbsp;;

define di_spotplay DOIF ([di_spotplay:Elektro])\
(set Spotify shuffle on, set Spotify playContextByURI spotify:user:DUMMY:playlist:DUMMY, set Spotify skipToNext)\
DOELSEIF\
([di_spotplay:Rock])\
(set Spotify shuffle on,set Spotify playContextByURI spotify:user:DUMMY:playlist:DUMMY,set Spotify skipToNext)\
DOELSEIF\
...
attr di_spotplay alias Playlist
attr di_spotplay cmdState Elektro|Rock|...
attr di_spotplay icon edit_copy
attr di_spotplay readingList state
attr di_spotplay setList state:Keine,Elektro,Rock,...
attr di_spotplay stateFormat &nbsp;;
attr di_spotplay webCmd state

LeoSum

Hi Oskar,

nun hat es mich endlich genug gestört, mit librespot kein shuffle nutzen zu können, dass ich mir das mal angesehen habe.

Ich habe deine funktion "Spotify_playRandomTrackFromPlaylistByURI" entwas abgewandelt und daraus "Spotify_randomPlayPlaylistByURI" gemacht. Sieht dann so aus:

sub Spotify_randomPlayPlaylistByURI($$$$) { # play the playlist in random order
my ($hash, $uri, $limit, $device_id) = @_;
my $name = $hash->{NAME};
return 'wrong syntax: set <name> randomPlayPlaylistByURI <playlist_uri> [ <limit> ] [ <device_id> ]' if(!defined $uri);

my ($user_id, $playlist_id) = $uri =~ m/user:(.*):playlist:(.*)/;
return 'invalid playlist_uri' if(!defined $user_id || !defined $playlist_id);

$device_id = $limit . (defined $device_id ? " " . $device_id : "") if(defined $limit && $limit !~ /^[0-9]+$/);
$limit = undef if($limit !~ /^[0-9]+$/);

Spotify_apiRequest($hash, "users/$user_id/playlists/$playlist_id/tracks?fields=items(track(name,uri))". (defined $limit ? "&limit=$limit" : ""), undef, 'GET', 1);
my $result = $hash->{helper}{dispatch}{json}{items};
return 'could not find playlist' if(!defined $result);

my @uris = map { $_->{track}{uri} } @{$result};
@uris = shuffle(@uris);
$hash->{helper}{skipTrackLog} = 1;
Spotify_playTrackByURI($hash, \@uris, $device_id);
Log3 $name, 4, "$name: playing $uri in random order";
return undef;
}


oben brauchen wir hierzu noch ein use List::Util qw/shuffle/; und natürlich in der "Spotify_Set" Funktion ein return Spotify_playRandomTrackFromPlaylistByURI($hash, $args[0], $args[1], defined $args[2] ? join(' ', @args[2..$#args]) : undef) if($cmd eq 'playRandomTrackFromPlaylistByURI');

Funktioniert bei mir wunderbar!
Kannst du das integrieren? Hier waren glaube ich auch noch andere die unter der librespot limitierung gelitten haben.

Danke nochmal für das tolle Modul!

Gruß
Leo

borsTiHD

Hallo zusammen, Hallo Oskar,

erstmal danke das du hier dieses Modul anbietest.
Ich bin frisch mit FHEM eingestiegen und versuche gerade interessante Dinge für mich zu finden.
Bei mir im Netzwerk steht ein Onkyo AVR den ich bereits eingebunden habe. Auch in den Spotify Modus kann ich wechseln, aber leider keine Playlist beispielsweise starten. Jetzt bin ich auf dein Spotify Modul aufmerksam geworden und würde das gerne nutzen, in der Hoffnung das ich dadurch Spotify über FHEM auf meinem Onkyo starten kann.

Folgendes Problem habe ich, wie bekomme ich das Spotify Modul überhaupt in FHEM?
Wenn ich nach folgendem Muster versuche zu definieren bekomme ich nur folgende Fehlermeldung:
define Spotify Spotify  xxx xxx
Unknown module Spotify


Könnte mir bitte jemand helfen?
Danke. :)

Auch direkt die Frage als Neuling, sind die Module in der Commandref alle bereits vorinstalliert, oder muss man gewisse Module sich nachholen?

neumann

Hey!

gerne - die Module werden alle installiert, jedoch musst du regelmäßig Updates machen mit dem Befehl
update all

Lg
Oskar
Modulentwickler
- Spotify #72490
- Nello #75127

borsTiHD

Danke dir für die schnelle Antwort.  ;D
Nach dem Update und einem Restart hat alles funktioniert. :)

Wobei ich der Meinung bin, ich hab bereits nach der ersten FHEM Einrichtung schonmal ein Update gemacht, samt Neustart.  ???
Wie dem auch sei, vielen Dank für deine schnelle Hilfe und mach weiter so. :D