Idee: Alexa und Squeezebox zum Zugriff auf lokale Musik

Begonnen von bugster_de, 04 Mai 2018, 23:28:04

Vorheriges Thema - Nächstes Thema

bugster_de

Hallo Leute,

ich hab erst seit ein paar Tagen einen Echo und ihn auch momentan nur mit dem Smart Home Skill am Laufen. Das kleine Ding ist aber schon eine Killerapplikation und bereits fester Bestandteil im Haus. Allerdings habe ich (logischerweise) in der kurzen Zeit noch nichts mit Custom Skills gemacht und bräuchte daher die Einschätzung der Experten ob es überhaupt Sinn macht mein Vorhaben anzugehen.

Zuerst mein Problem: meine Tochter (5 Jahre) nutzt den Echo sehr gerne und sie würde nun auch gerne ihre Hörspiele darüber hören. Allerdings fordert Alexa einen dann immer zum Abschluß eine Audible Abos auf, obwohl die Hörspiele in Amazon Music drin sind. Und viel schlimmer: die Hörspiele sind alle im Squeezeserver integriert; sprich sie liegen lokal vor, aber Alexa kann ja eben nicht auf lokale Medien zugreifen. Und das führt bei Töchterlein dann zu Tränen, da "die Frau in der Kiste" nicht macht was sie soll.

Meine Idee: über einen Custom Skill das Abspielen der Hörbücher ermöglichen. Da es sich nur um 20-30 CDs handelt ist das überschaubar. Ich stelle mir das so vor: Alexa gibt via Custom Skill den Sprach Befehl: "Alexa sage Kinderzimmer dass es Bibi&Tina das Fohlen spielen soll". Diesen Befehl schmeiße ich dann einem Perl Script "zum Fraß" vor und in  einer Switch-Case Evaluierung wird mittels RegExp das entsprechende Album raus gesucht und dann hart-codiert dem Player im Kinderzimmer zum Abspielen mitgegeben (set playlist das_fohlen).
Der Player im Kinderzimmer ist bereits in FHEM integriert.

Meint ihr das geht?

Wie gesagt, kein generischer Zugriff auf alle meine Musik sondern nur auf 20-30 Alben

MadMax-FHEM

Mit etwas Fleiß geht es bestimmt.

Folgendes könnte helfen: https://forum.fhem.de/index.php/topic,82631.0.html

Damit lässt sich auch lokale Musik abspielen...
...ob auch vom SqueezeServer -> keine Ahnung -> ausprobieren...

Mit dem CustomSkill kannst du auch direkt eine Sub in myUtils aufrufen -> da kannst du ja tun was du willst...
Evtl. reicht es auch schon mal mit den "Regeln" in der Alexa-App zu spielen...

Auswerten von Text geht mit Alexa leider nicht so einfach wie mit dem Google Home Assistant...
...da funktioniert es mittels IFTTT und dann per fhem-Module z.B. TEERKO, Babble, Talk2Fhem, ... und damit dann "parsen" ganz gut.
Da wird aber auch der gesprochene Text mitgegeben.

Bei Alexa kommt in alexa-fhem nur die bereits ausgewertete Sprache bzw. daraus resultierende Kommandos (naja auch nicht wirklich aber so ähnlich) an.
D.h. das gesprochene Wort kommt da gar nicht...

Das gesprochene kommt wohl mit dem oben verlinkten Modul aber (wohl sehr) zeitverzögert...

Viel Spaß und Erfolg, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

bugster_de

Hi,

Danke! Fleiß ist da nicht das Problem, denn ein weinendes Töchterlein erzeugt ja einiges an Motivation :-)

ZitatMit dem CustomSkill kannst du auch direkt eine Sub in myUtils aufrufen -> da kannst du ja tun was du willst...
genau das wäre der Weg, den ich mir vorstelle. Diese Sub braucht dann halt "nur" den Text des gewünschten Albums als Argument. Sprich wenn Töchterlein sagt "Alexa, sage Kinderzimmer spiele Bibi&Tina das Fohlen", dann brauche ich in der Sub mindestens "Bibi&Tina das Fohlen" als Argument.

ZitatFolgendes könnte helfen: https://forum.fhem.de/index.php/topic,82631.0.html
Damit lässt sich auch lokale Musik abspielen...
...ob auch vom SqueezeServer -> keine Ahnung -> ausprobieren...
Hatte ich auch schon gefunden und ausprobiert. Man kann da auch Musik von einem Share abspielen das geht, aber halt erst mal nur via FHEM Web gesteuert. Sprich der Baustein "Sprachsteuerung" fehlt dann immer noch.

Ich musste mich schweren Herzens gegen Google Assistant und für Alexa entscheiden, da beim Google Assistant nun wohl so gar keine Möglichkeit mehr besteht auf lokale Musik oder andere Musikdienste zuzugreifen. Auch habe ich mich für das Sonos One mit Player als Player für das Kinderzimmer entschieden, da man zumindest per App auf lokale Musik vom Share als auc auf Plex Musik zugreifen kann. Sprich Alexa ist am dichtesten dran mene Anforderungen zu erfüllen und nun muß ich "nur" noch ein CustomSkill bauen, das eine Sub in myUtils aufruft.

MadMax-FHEM

Stimmt, man kann ja auch ein Argument übergeben...
Damit hatte ich probeweise mal rumgespielt...
...hätte ich ja auch dran denken können/sollen...

Aber wenn der SmartHome Skill läuft ist das mit dem Custom Skill nicht mehr so schwer...
...gefühlt...

Allerdings sieht wohl leider auf Seiten Amazon AWS nun alles (wieder) anders aus (als im Wiki)...

Ansonsten ist das mit der Sub seitens fhem nicht so schwer...

Wenn du den Befehl hast, wie es per FhemWeb geht (lokale) Musik abzuspielen (die du willst), dann kann man das doch per Sub einfach auch aufrufen!?

P.S.: ich entscheide mich (immer) noch zwischen Google Assistant und Alexa ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

x-ingo

Hallo bugster,

ich habe mal etwas ähnliches implementiert und beschrieben:
https://forum.fhem.de/index.php/topic,65890.msg743742.html#msg743742

Dort ist das mit eine Suche bei Google Music über die Squeezebox. Das müsstest du anpassen, da die Musik/Hörspiele ja bei dir lokal sind.
Das geht recht einfach über die Weboberfläche der Squeezeboxen.

Grüße und viel Erfolg,
Ingo

bugster_de

Hi,

cool! Ich mach mich da also mal ans Werk. ich hatte meiner Frau schon gesagt, dass ich mal einen verregnten Sonntag brauche und mich im Bastelzimmer einschließe.

Ich muß aber mal ein bisschen fast Off-topic lästern: ich habe seit ein paar Tagen eine Sonos One mit Alexa. Ganz ehrlich: das Ding ist Mist. Falls es, eher zufällig, dann doch mal verstanden hat, dass es Musik oder ein Hörspiel abspielen soll, dann kann man es nicht mehr stoppen. "Alexa, Stop" macht gar nix. Man muß dann die Sonos App (oder FHEM) hernehmen und es stoppen. Ich habe ein Probe-Abo von Amazon Music Unlimited abgeschlossen. Da greift die Kiste überhaupt nicht drauf zu sondern fordert mich auf ein Abo abzuschliessen.
Im Wohnzimmer habe ich einen Echo Dot und im Fitnessraum einen Sonos One ohne Alexa. Die Kombo von den beiden Geräten macht alles so wie es sein soll. Sprich eigentlich wäre es billiger und sogar besser gewesen zwei einzelne Geräte zu kaufen an Stelle der integrierten Variante.
Das hat nun dazu geführt, dass der WAF für ein Sonos-Alexa Gerät im Kinderzimmer auf unter Null gesunken ist. Sonos-One mit Alexa ist schon wieder eingepackt und geht zurück.
Vielleicht kann ich den WAF mit der Programmierung von dem hier beschriebenen Setup noch retten.

Eisix

Hallo,

habe keine Alexa, aber vielleicht einen etwas anderen Ansatz für dich. Habe schon etwas mit dem Babble Modul rumgespielt und konnte damit Sachen problemlos schalten. Bei mir Amad als Spracheingang, sollte aber auch mit Alexa gehen. Damit könntest du dein Abspielgerät auf den Squeezeserver schalten und die Playlist mit Bibbi&Tina starten. Oder auch die einzelnen Folgen definieren.

Gruß
Eisix

bugster_de

Hi,

holy Shit, das läuft jetzt. Zar alles noch sehr wackelig (Prototyp Status) aber das Prinzip geht schon mal.

Nachdem ich mich in die Custom Skills rein gefuchst habe, ergit das jetzt mal so richtig neue Möglichkeiten. Ich musste mich in die Custom Skills erst vernünftig einlesen, da Amazon ja dauern das User Interface ändert und somit der Wiki Artikel nicht up-2-date sein kann (kein Vorwurf an die Wiki Ersteller). Und da Amazon auch die die Intent und Slot Type JSON Definitionen leicht geändert hat, passt fhem alexa get interaction model auch nicht ohne händische Nacharbeit. Und dann musste ich erstmal noch drauf kommen, dass man nach jeder Änderung des Skill auch auf FHEM Seiten den Alexa Service stoppen und neu starten muß.  Ich kann aber daher jeden nur empfehlen sich die Amazon Doku zu Custom Skills durch zu lesen, so dass man verstanden hat, was man da tut und eben nicht nur nach Anweisung sich durchklickt.

Die ganze Alexa Anbindung hebt nun die Hausautomatisierung wirklich auf einen ganz neuen Level wie ich ihn immer haben wollte. Mich hat immer gestört, dass ich erstmal das iPad suchen muß, um was schalten zu können. Mit einem Haus, was aufs Wort hört ist das nun echt der Brüller ! Danke an die Entwickler für diese Schnittstelle!

Sobald ich einen Implementierungsstatus habe, mit dem ich mich auch traue ihn mal hier zu zeigen mache ich das natürlich. Und da die Erst-Implementierung der Squeezebox Anbindung von mir stammt werde ich mal zusehen müssen, ob wir das nicht enger und generischer verzahnt bekommen, so dass sich nicht jeder selbst was basteln muß.

tk-ham

Moin bugster,

das klingt sehr spannend! Klappt das mit der Spracherkennung der Titel, Album etc. oder lehnt der Server das beim kleinsten Problem ab? Ich bin schon daran gescheitert ein 'playlist play' eines tracks oder Albums auszulösen (ohne Pfad).
Wäre klasse wenn es Deine Zeit erlaubt Deine Lösung detaillierter zu beschreiben.

LG

bugster_de

ZitatKlappt das mit der Spracherkennung der Titel, Album etc. oder lehnt der Server das beim kleinsten Problem ab?
welchen Server meinst Du?

Zuerst mal nimmt mein Code den Suchbegriff entgegen und schaut, welcher Player Typ gemeint ist. Je nach Player Typ wird dann mit einer RegEx Suche die Favoriten oder Playlists durch gegangen. Sowohl Sonos- als auch Squeezebox FHEM Module behersschen dann das Abspielen auf Basis von Teilbegriffen. Also zum Beispiel play Fohlen fürht zum Abspielen von "Bibi und Tina - Das Fohlen". Hinderlich bei beiden ist nur, dass man vorher wissen muß, ob es in den Playlisten oder in den Favoriten ist, da die Aufruf Befehle unterschiedlich sind.

hummeruli

Das hört sich nice an.

könntest Du den Code hier einstellen?

Wäre super.

Uli
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

tk-ham

Zitat von: bugster_de am 05 Juli 2018, 13:14:06
welchen Server meinst Du?
ich hatte Probleme den Squeezebox Server anzusteuern, das klappt jetzt mit set device playlist track XXX (hatte die Syntax nicht richtig verstanden). Mit den Teilbegriffen klappt es jetzt also.
Purer Luxus wäre natürlich eine Ansage der gefundenen Titel und Nachfrage welcher gespielt werden soll...

@bugster: wäre klasse wenn Du den Code hier einstellen könntest.

dadoc

Moin,
Zitat von: bugster_de am 11 Mai 2018, 08:23:19

Sobald ich einen Implementierungsstatus habe, mit dem ich mich auch traue ihn mal hier zu zeigen mache ich das natürlich. Und da die Erst-Implementierung der Squeezebox Anbindung von mir stammt werde ich mal zusehen müssen, ob wir das nicht enger und generischer verzahnt bekommen, so dass sich nicht jeder selbst was basteln muß.
Auch ich würde mich freuen, das Rad nicht erneut erfinden zu müssen  8)
Bist Du schon weitergekommen oder magst Du vielleicht zumindest die bisherigen Erkenntnisse mit uns teilen? Getiltes Leid ist schließlich halbes Leid...
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Frini