Table of Contents
- Aufbau des SONOS Players
- Player im Live-Betrieb:
- Bedienungselemente / Anzeigen
- 1. Seitentitel
- 2. Navigation zur nächsten Seite
- 3. Track (Elapsed|Duration)
- 4. Interpret | Album
- 5. Player An/Aus (Stop)
- 6. Volume lauter
- 7. Volume zwischen 0% und 100%
- 8. Repeat-Funktion
- 9. SONOS Favoriten (Alternativ Equalizer)
- 10. Track Liste
- 11. SONOS Playlist
- 12. SONOS Speaker Liste
- 13. Nächster Track
- 14. Play / Pause
- 15. Volume leiser
- 16. Shuffle
- 17. Vorheriger Track
- 18. Player Logo / Seek Funktion (Alternativ Crossfade)
- 19. Navigation zur vorherigen Seite
- Erstellung der Seitenvariable für die cardMedia
- Erstellung der Sonos Listen
- Der Auto-Alias
- cardMedia Sonos FAQ
Inhalt:
- Aufbau des SONOS Players
- Erstellung der Seitenvariable für die cardMedia
- Erstellung der Sonos Listen
- Der Auto-Alias
- cardMedia Sonos FAQ
Aufbau des SONOS Players
(vollständig ab NSPanelTs.ts - Version 4.7.1)
Player im Live-Betrieb:
und mit den beiden alternativen Einstellungen für:
- den Equalizer und
- die Crossfade-Funktion
Bedienungselemente / Anzeigen
1. Seitentitel
Der Seitentitel steht auf:
- der dem Parameter "heading" aus der Seitenvariable der cardMedia (z.B. Sonos Player), wenn keine Wiedergabe erfolgt oder wenn das Wiedergabegerät über die Sonos-Adapterinstanz (z.B. sonos.0.) im Datenpunkt
sonos.0.root.<DEVICE_IP>.current_typeauf track(0) steht sonos.0.root.<DEVICE_IP>.current_stationwenn ein Radiosender gewählt wurde
2. Navigation zur nächsten Seite
- siehe Navigation
3. Track (Elapsed|Duration)
Zeigt die folgenden Datenpunkte der aktiven Sonos Adapterinstanz wenn der Wert des Datenpunktes sonos.0.root.<DEVICE_IP>.current_type auf track(0) steht:
- Titel --> sonos.0.root.<DEVICE_IP>.current_title
- Verstrichene Zeit (Minuten/Sekunden) des aktuell abgespielten Titels (nicht bei Radio) -->
sonos.0.root.<DEVICE_IP>.current_elapsed_s - Gesamtlänge (Minuten/Sekunden) des aktuell abgespielten Titels (nicht bei Radio) -->
sonos.0.root.<DEVICE_IP>.current_duration_s
Important
Die Aktualisierung in Sekunden steht in Abhängigkeit zur Sonos Adapterinstanz
Aktualisierung des Lied-Timersund steht per Default auf 2000ms.
4. Interpret | Album
Folgende Datenpunkte der Sonos Adapterinstanz werden berücksichtigt:
- Interpret -->
sonos.0.root.<DEVICE_IP>.current_artist(beim Abspielen von Radiosendern abweichende Informationen zum Sender) - Album -->
sonos.0.root.<DEVICE_IP>.current_album(beim Abspielen von Radiosendern abweichende Informationen zum Sender)
5. Player An/Aus (Stop)
- Stop (Icon blau) -->
sonos.0.root.<DEVICE_IP>.stop(beim Abspielen weiß)
6. Volume lauter
- Die Feinjustierung der aktuellen Lautstärke in Einerschritten (+1) --> Datenpunkt:
sonos.0.root.<DEVICE_IP>.volume
7. Volume zwischen 0% und 100%
- Die Feinjustierung der aktuellen Lautstärke erfolgt stufenlos zwischen 0% und 100% --> Datenpunkt:
sonos.0.root.<DEVICE_IP>.volume
Note
Volume zieht das Volumen einer Gruppe beim Einsatz einer Sonos-Box mit. Wenn das Group-Volume (
sonos.0.root.<DEVICE_IP>.group_volume) benötigt wird, so ist der Datenpunkt nach Erstellung des Auto-Alias entsprechend zu ändern.
8. Repeat-Funktion
- Es sind keine weiteren Einstellungen zu berücksichtigen. Der Datenpunkt
sonos.0.root.<DEVICE_IP>.repeatwird genutzt und inkrementiert die Wertenone(0),all(1)undone(2)
9. SONOS Favoriten (Alternativ Equalizer)
Note
Dieses Steuerelement kann unterschiedliche Eigenschaften annehmen
Steuerelement als SONOS Favoriten:
Das PageItem enthält keinen equalizerString --> Die Favoriten werden automatisch aus dem Datenpunkt: sonos.0.root.<DEVICE_IP>.favorites_list_array extrahiert:
Caution
let Sonos: PageType = { 'type': 'cardMedia', 'heading': 'Sonos', 'items': [{ id: AliasPath + 'Media.PlayerSonos', adapterPlayerInstance: 'sonos.0.', mediaDevice: '192_168_1_212', speakerList: ['Terrasse'], playList: ['Hartmann','Armilars Playlist'], playerMediaIcon: 'logo-sonos', // Optional with latest TFT v4.7.1 colorMediaIcon: colorSonos, colorMediaArtist: Yellow, colorMediaTitle: Yellow, alwaysOnDisplay: true, autoCreateALias: true }] };
Steuerelement als Equalizer:
- Innerhalb des
PageItemwird derEqualizerund in diesem Beispiel ebenfalls der Parametercrossfadedefiniert:
Caution
let Sonos: PageType = { 'type': 'cardMedia', 'heading': 'Sonos', 'items': [{ id: AliasPath + 'Media.PlayerSonos', adapterPlayerInstance: 'sonos.0.', mediaDevice: '192_168_1_212', speakerList: ['Terrasse'], playList: ['Hartmann','Armilars Playlist'], equalizerList: ['Bassboost','Klassik','Dance', 'Deep', 'Electronic', 'Flat', 'Hip-Hop', 'Rock', 'Metal', 'Jazz', 'Latin', 'Tonstärke', 'Lounge', 'Piano'], playerMediaIcon: 'logo-sonos', // Optional with latest TFT v4.7.1 colorMediaIcon: colorSonos, colorMediaArtist: Yellow, colorMediaTitle: Yellow, crossfade: true, alwaysOnDisplay: true, autoCreateALias: true }] };
Important
Die Sonos Adapterinstanz verfügt nicht über Klangsteuerungs-Datenpunkte. Es kann jedoch die SONOS HTTP API https://github.com/jishi/node-sonos-http-api#usage genutzt werden.
Für den Fall, dass der Equalizer zum Einsatz kommt, bitte weiteren Link befolgen: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---FAQ-&-Anleitungen#12-equalizer-f%C3%BCr-cardmedia
Note
siehe auch Erstellung der Sonos Favoriten
10. Track Liste
- Sofern der Datenpunkt
sonos.0.root.<DEVICE_IP>.queueDaten enthält und die abspielbaren Medien eine Trackliste enthalten, so wird diese automatisch geladen.
Note
Sollten weitere Tracks vorhanden sein, so können diese über den rechtsangeordneten Pfeil erreicht werden
11. SONOS Playlist
Note
siehe auch Erstellung einer Sonos Playlist
12. SONOS Speaker Liste
Note
siehe auch Erstellung einer speakerList
13. Nächster Track
- Sofern ein weiterer Titel in der Track Liste verfügbar ist, so wird dieser ausgewählt -->
sonos.0.root.<DEVICE_IP>.next
14. Play / Pause
- Umschaltung zwischen den Datenpunkten
sonos.0.root.<DEVICE_IP>.playundsonos.0.root.<DEVICE_IP>.pause
15. Volume leiser
- Die Feinjustierung der aktuellen Lautstärke in Einerschritten (-1) --> Datenpunkt:
sonos.0.root.<DEVICE_IP>.volume
16. Shuffle
- Umschaltung zwischen den Datenpunkten
sonos.0.root.<DEVICE_IP>.shuffleals wahr/falsch (true/false)
Note
Diese Funktion ist nicht steuerbar, wenn Radiosender abgespielt werden
17. Vorheriger Track
- Sofern ein weiterer Track vor dem aktuell abgespielten Titel in der Track Liste verfügbar ist, so wird dieser ausgewählt -->
sonos.0.root.<DEVICE_IP>.prev
18. Player Logo / Seek Funktion (Alternativ Crossfade)
Per Standard ist der Seek-Modus aktiv. Dieser wird mit Klick auf das Logo des Players aufgerufen:
Jetzt ist es möglich eine Position des Tracks (Titels) in 10% Schritten zu erreichen (vor- und zurückspulen).
Note
Wird im PageItem der Parameter
crossfade: true
verwendet, dann wird statt der Seek-Funktion Crossfade zur Auswahl aktiv
19. Navigation zur vorherigen Seite
- siehe Navigation
Erstellung der Seitenvariable für die cardMedia
Variablen Beispiele:
Standard Beispielvorlage für AlwaysOnDisplay
In diesem Beispiel wird der Screensaver nach eingestellter nicht aufgeschaltet. Der Player bleibt geöffnet bis zu einer Seite ohne alwaysOnDisplay navigiert wird.
let Sonos: PageType =
{
'type': 'cardMedia',
'heading': 'Sonos Player',
'items': [{
id: AliasPath + 'Media.PlayerSonos',
adapterPlayerInstance: 'sonos.0.',
mediaDevice: '192_168_1_212',
speakerList: ['Wohnzimmer', 'Küche', Büro],
playList: ['Hartmann','Armilars Playlist'],
playerMediaIcon: 'logo-sonos', // Optional with latest TFT v4.7.1
colorMediaIcon: colorSonos,
colorMediaArtist: Yellow,
colorMediaTitle: Yellow,
alwaysOnDisplay: true,
autoCreateALias: true
}]
};
Standard Beispielvorlage ohne AlwaysOnDisplay
In diesem Beispiel wird der Screensaver nach eingestellter Zeit aufgerufen. Der Player wird geschlossen.
let Sonos: PageType =
{
'type': 'cardMedia',
'heading': 'Sonos Player',
'items': [{
id: AliasPath + 'Media.PlayerSonos',
adapterPlayerInstance: 'sonos.0.',
mediaDevice: '192_168_1_212',
speakerList: ['Wohnzimmer', 'Küche', Büro],
playList: ['Hartmann','Armilars Playlist'],
playerMediaIcon: 'logo-sonos', // Optional with latest TFT v4.7.1
colorMediaIcon: colorSonos,
colorMediaArtist: Yellow,
colorMediaTitle: Yellow,
autoCreateALias: true
}]
};
mediaDevice ist hierbei die mit '_' getrennte IP des primären Wiedergabegerätes und muss angepasst werden. Der Inhalt ist analog des Datenpunktes sonos.0.root.<DEVICE_IP>.coordinator
Caution
Nicht zu empfehlen!!!: Der Parameter autoCreateALias kann ebenfalls entfernt werden, jedoch muss ein korrekter Media-Alias mit dem Channel "media" und den vom NSPanelTs.ts - Skript erwarteten Datenpunkten dann "per Hand" erstellt werden. Da es nahezu unmöglich ist unter ioBroker einen korrekten und vollständigen Media-Alias zu erstellen, übernimmt das Skript mit diesem Parameter diese Aufgabe.
Erstellung der Sonos Listen
Speaker Liste (Array speakerList)
Diese List sollte die Wiedergabegeräte des primären Sonos und ggfs. optionale Geräte aus dem Datenpunkt sonos.0.root.<DEVICE_IP>.members enthalten.
Favoriten Liste
Die Einstellung erfolgt über die App des Smartphones oder über z.B. dem "Sonos Controller für PC" wie im nachfolgenden Beispiel:
Die Favoriten können unter Sonos-Favoriten eingesehen werden:
Individuelle Wiedergabe Liste (Array playList)
Dann entweder zu einer besehenden Playlist hinzufügen oder eine neue Playlist mit neuem Namen erstellen:
Die Namen der individuellen Playlisten für diesen Player werden dann in das Array (Beispiel): playList: ['Hartmann','Armilars Playlist'], des PageItem eingetragen.
Der Auto-Alias
Der nachfolgende Alias wird komplett und vollständig angelegt, wenn der Parameter autoCreateALias: true im PageItem definiert ist:
cardMedia Sonos FAQ
Der Player aktualisiert nicht die Informationen?
Die Datenpunkte der Adapter-Instanz des Sonos-Adapters werden teils nur träge aktualisiert. Der Player kann nur anzeigen, was bereits in der Adapter-Instanz in den Datenpunkten vorhanden ist!
In der Tracklist steht ab und zu "undefined"?
Der Datenpunkt "queue" ist nicht wie in anderen Player-Adaptern ein Datentyp JSON-Objekt, sondern ein Datentyp String. Beim Aufbau der Playlist wird aus dem String ein JSON-Objekt. Bei der Umwandlung kann es vorkommen, dass der String des Titels aufgrund von Sonderzeichen nicht importiert werden kann oder das eine falsche Trennung stattfindet.