UNIVERSELLER MUSIKSTATUS FÜR IOBROKER – ALEXA + SONOS ========================================================= Portable Version V10 Diese Version ist dafür gedacht, das Skript auf einer ANDEREN ioBroker- Installation einzusetzen – mit anderen Räumen, anderen Alexa-Geräten, anderen Sonos-Geräten und anderen Adapter-Instanzen. Es sind KEINE festen Geräte-IDs, IP-Adressen oder persönlichen Raumlisten eingetragen. 1. WAS MACHT DAS SKRIPT? ------------------------ Das Skript sucht automatisch nach: - Alexa-Geräten über alexa2.* - Sonos-Geräten über sonos.* Es erkennt vorhandene Geräte beim Skriptstart und legt automatisch Status-States unter folgendem Pfad an: 0_userdata.0.Status_Musikboxen Beispiele: Wohnzimmer_Status Kueche_Status Schlafzimmer_Status Hobbyraum_Status Alexa und Sonos werden nach Möglichkeit zu EINEM gemeinsamen Raumstatus zusammengeführt. 2. VORAUSSETZUNGEN ------------------ Benötigt werden: - ioBroker - javascript-Adapter - alexa2-Adapter, wenn Alexa verwendet wird - sonos-Adapter, wenn Sonos verwendet wird Nicht zwingend beide Adapter nötig: Das Skript funktioniert auch nur mit Alexa oder nur mit Sonos. 3. INSTALLATION --------------- 1. ZIP-Datei entpacken. 2. Datei öffnen: musikstatus_alexa_sonos_universal_v10.js 3. In ioBroker öffnen: Skripte -> neues JavaScript-Skript 4. Den kompletten Inhalt der JS-Datei einfügen. 5. Speichern. 6. Skript aktivieren. 7. Etwa 5 bis 10 Sekunden warten. 8. Danach das ioBroker-Log prüfen. 4. ES MÜSSEN KEINE GERÄTE-IDS EINGETRAGEN WERDEN ------------------------------------------------ Das Skript sucht die Geräte automatisch. Es müssen keine Werte wie diese eingetragen werden: G091AA08052203UL 025b455db7bb4720... 192_168_178_21 Auch andere Adapter-Instanzen werden berücksichtigt, z. B.: alexa2.0 alexa2.1 sonos.0 sonos.1 5. WO WERDEN DIE STATUS-STATES ANGELEGT? --------------------------------------- Unter: 0_userdata.0.Status_Musikboxen Beispiele: 0_userdata.0.Status_Musikboxen.Wohnzimmer_Status 0_userdata.0.Status_Musikboxen.Kueche_Status 0_userdata.0.Status_Musikboxen.Schlafzimmer_Status 6. WELCHE STATUSWERTE KÖNNEN ANGEZEIGT WERDEN? ---------------------------------------------- Zum Beispiel: nichts Amazon Music Spotify TuneIn-Liveradio Internetradio Audible Apple Music Deezer YouTube Podcast Externe Quelle Musik von Platte Fernseher Andere Quelle 7. ALEXA + SONOS IM GLEICHEN RAUM --------------------------------- Das Skript versucht Gerätenamen automatisch zu vereinfachen. Beispiele: Wohnzimmer Echo Sonos Wohnzimmer werden zu: Wohnzimmer und verwenden gemeinsam: Wohnzimmer_Status Weitere Beispiele: Küche Echo Dot Küche Sonos One -> Kueche_Status Schlafzimmer Alexa Schlafzimmer Sonos -> Schlafzimmer_Status 8. MEHRERE GERÄTE PRO RAUM -------------------------- Mehrere Alexa- oder Sonos-Geräte können derselben Raumgruppe zugeordnet werden. Beispiel: 2 Alexa-Geräte im Wohnzimmer 1 Sonos-Gerät im Wohnzimmer werden gemeinsam über: Wohnzimmer_Status ausgewertet. 9. AMAZON MUSIC AUF SONOS ------------------------- Wenn Amazon Music über Alexa auf Sonos gestartet wird, kann es passieren, dass der Echo selbst currentState=false meldet. Das Skript berücksichtigt deshalb: Sonos spielt + Alexa kennt Provider "Amazon Music" und zeigt: Amazon Music statt nur: Musik von Platte 10. ROOMALIASES – FÜR SONDERFÄLLE --------------------------------- Wenn zwei Geräte unterschiedlich heißen und nicht automatisch zusammengeführt werden, kann man roomAliases verwenden. Im CONFIG-Bereich steht: roomAliases: {} Beispiel: roomAliases: { "Beam": "Wohnzimmer" } Dann wird Beam dem Wohnzimmer zugeordnet. V10 unterstützt auch diese Schreibweise: roomAliases: { "Beam_Status": "Wohnzimmer_Status" } Beide Varianten funktionieren. Weitere Beispiele: roomAliases: { "Living Room": "Wohnzimmer", "Kitchen Speaker": "Kueche", "Beam_Status": "Wohnzimmer_Status" } 11. WICHTIG ZU ROOMALIASES -------------------------- roomAliases ist nur nötig, wenn die automatische Namens-Erkennung nicht ausreicht. Wenn alles automatisch korrekt erkannt wird: roomAliases: {} einfach leer lassen. 12. EXTRAIGNOREWORDS -------------------- Im CONFIG-Bereich gibt es: extraIgnoreWords: [] Damit können ungewöhnliche Modellbegriffe entfernt werden. Beispiel: extraIgnoreWords: [ "speaker pro", "special model" ] Dann werden diese Begriffe bei der Raum-Erkennung ignoriert. 13. TV-/VIDEO-GERÄTE IGNORIEREN ------------------------------- Standard: ignoreAlexaTvDevices: true Damit werden typische TV-/Video-Geräte nicht als Musikbox angelegt. Gefiltert werden z. B.: Fire TV Samsung QLED OLED Smart TV Geräte mit Namen wie "Schlafzimmer TV" Wenn auch solche Geräte berücksichtigt werden sollen: ignoreAlexaTvDevices: false 14. DIAGNOSE-LOG ---------------- Standard: diagnosticLog: true Im Log erscheinen z. B.: Alexa erkannt: "Wohnzimmer Echo" -> "Wohnzimmer" Sonos erkannt: "Wohnzimmer" -> "Wohnzimmer" Gruppe "Wohnzimmer": Alexa=1, Sonos=1 Bei ignorierten Geräten: Alexa-Gerät ignoriert (TV/Video): "..." Damit kann man auf einem fremden System sehr schnell prüfen, was erkannt wurde. 15. SONOS CURRENT_TYPE ---------------------- Bekannte Werte werden übersetzt: 0 = Musik von Platte 1 = TuneIn-Liveradio 2 = Fernseher Andere Werte werden möglichst sinnvoll übernommen. 16. NEUE GERÄTE --------------- Neue Geräte werden beim nächsten Skriptstart automatisch erkannt. Vorgehen: 1. Neues Gerät in Alexa oder Sonos hinzufügen. 2. Adapter vollständig starten lassen. 3. Skript neu starten. 4. Neues Gerät wird automatisch gesucht. 17. ALTE STATES --------------- Das Skript löscht NIEMALS automatisch bestehende States. Das ist absichtlich so, damit auf einer fremden Installation nichts versehentlich gelöscht wird. Wenn nach Änderungen alte doppelte States vorhanden sind, können diese nach erfolgreichem Test manuell gelöscht werden. 18. BEISPIEL FÜR ALTE DOPPEL-STATES ----------------------------------- Nach früheren Versionen können z. B. vorhanden sein: Badezimmer_One_Status Badezimmer_Status oder: Beam_Status Wohnzimmer_Status Wenn die neue Zuordnung korrekt funktioniert, kann der alte nicht mehr benötigte State manuell gelöscht werden. 19. EMPFOHLENER ERSTTEST ------------------------ Nach der Installation: 1. Skript starten. 2. Log kontrollieren. 3. Prüfen, welche Räume angelegt wurden. 4. Alexa-Musik starten. 5. Sonos-Musik starten. 6. Amazon Music testen. 7. Spotify testen. 8. TuneIn testen. 9. Prüfen, ob Alexa + Sonos im selben Raum zusammengeführt wurden. 10. Erst danach alte falsche States löschen. 20. WENN EIN RAUM FALSCH ERKANNT WIRD ------------------------------------- Dann im Log prüfen: - Wie heißt das Alexa-Gerät? - Wie heißt das Sonos-Gerät? - Welcher vereinfachte Raumname wird ausgegeben? Danach kann man entweder: - roomAliases ergänzen - extraIgnoreWords ergänzen 21. BEISPIEL ROOMALIAS ---------------------- Angenommen: Alexa heißt: Wohnzimmer Sonos heißt: Beam und beide gehören zusammen. Dann: roomAliases: { "Beam": "Wohnzimmer" } oder: roomAliases: { "Beam_Status": "Wohnzimmer_Status" } 22. BEISPIEL MIT ENGLISCHEN NAMEN --------------------------------- Angenommen: Alexa: Living Room Sonos: Wohnzimmer Dann: roomAliases: { "Living Room": "Wohnzimmer" } 23. CONFIG-BEREICH ------------------ Ganz oben im Skript befindet sich: const CONFIG = { root: "0_userdata.0.Status_Musikboxen", ignoreAlexaTvDevices: true, diagnosticLog: true, roomAliases: {}, extraIgnoreWords: [] }; Normalerweise müssen nur roomAliases oder extraIgnoreWords angepasst werden. 24. ROOT-PFAD ÄNDERN -------------------- Wenn die States an einem anderen Ort angelegt werden sollen: root: "0_userdata.0.Status_Musikboxen" ändern. Beispiel: root: "0_userdata.0.MeineMusikStates" 25. BEI EINER ANDEREN INSTALLATION ---------------------------------- Empfehlung: - zuerst roomAliases leer lassen - Skript starten - Log ansehen - nur bei Bedarf Aliase ergänzen So bleibt das Skript möglichst automatisch. 26. FEHLERSUCHE --------------- Wenn keine Geräte gefunden werden: Prüfen: - Läuft der javascript-Adapter? - Läuft alexa2? - Läuft sonos? - Existieren Alexa Player.currentState States? - Existieren Sonos state_simple States? - Sind die Adapter vollständig gestartet? 27. WICHTIG ZUR ZUKUNFT ----------------------- Adapter-Strukturen können sich durch zukünftige Adapter-Versionen ändern. Falls alexa2 oder sonos ihre Objektstruktur stark ändern, muss eventuell nur die Suchlogik angepasst werden. Der Rest des Skripts kann normalerweise unverändert bleiben. 28. DATEIEN IN DIESER ZIP ------------------------- Enthalten sind: musikstatus_alexa_sonos_universal_v10.js ANLEITUNG_KOMPLETT.txt KURZANLEITUNG.txt 29. KURZFASSUNG --------------- Für eine neue Installation: 1. Skript einfügen. 2. Starten. 3. Log prüfen. 4. States kontrollieren. 5. Nur bei Bedarf roomAliases ergänzen.