-
-
Notifications
You must be signed in to change notification settings - Fork 191
NSPanel ‐ cardMedia ‐ Der SONOS Player
Inhalt:
- Aufbau des SONOS Players
- Erstellung der Seitenvariable für die cardMedia
- Erstellung der Sonos Listen
- Der Auto-Alias
- cardMedia Sonos FAQ
(vollständig ab NSPanelTs.ts - Version 4.3.3.17)
und mit den beiden alternativen Einstellungen für:
- den Equalizer und
- die Crossfade-Funktion
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_type
auf track(0) steht -
sonos.0.root.<DEVICE_IP>.current_station
wenn ein Radiosender gewählt wurde
- siehe Navigation
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-Timers
und steht per Default auf 2000ms.
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)
- Stop (Icon blau) -->
sonos.0.root.<DEVICE_IP>.stop
(beim Abspielen weiß)
- Die Feinjustierung der aktuellen Lautstärke in Einerschritten (+1) --> Datenpunkt:
sonos.0.root.<DEVICE_IP>.volume
- 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.
- Es sind keine weiteren Einstellungen zu berücksichtigen. Der Datenpunkt
sonos.0.root.<DEVICE_IP>.repeat
wird genutzt und inkrementiert die Wertenone(0)
,all(1)
undone(2)
Note
Dieses Steuerelement kann unterschiedliche Eigenschaften annehmen
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'],
colorMediaIcon: colorSonos,
colorMediaArtist: Yellow,
colorMediaTitle: Yellow,
alwaysOnDisplay: true,
autoCreateALias: true
}]
};
- Innerhalb des
PageItem
wird derEqualizer
und in diesem Beispiel ebenfalls der Parametercrossfade
definiert:
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'],
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
- Sofern der Datenpunkt
sonos.0.root.<DEVICE_IP>.queue
Daten 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
- Das Array playList im PageItem wird genutzt. Die Playlists sind dort manuell einzutragen
Note
siehe auch Erstellung einer Sonos Playlist
- Das Array speakerList im PageItem wird genutzt. Die Wiedergabegeräte sind dort manuell einzutragen
Note
siehe auch Erstellung einer speakerList
- Sofern ein weiterer Titel in der Track Liste verfügbar ist, so wird dieser ausgewählt -->
sonos.0.root.<DEVICE_IP>.next
- Umschaltung zwischen den Datenpunkten
sonos.0.root.<DEVICE_IP>.play
undsonos.0.root.<DEVICE_IP>.pause
- Die Feinjustierung der aktuellen Lautstärke in Einerschritten (-1) --> Datenpunkt:
sonos.0.root.<DEVICE_IP>.volume
- Umschaltung zwischen den Datenpunkten
sonos.0.root.<DEVICE_IP>.shuffle
als wahr/falsch (true/false)
Note
Diese Funktion ist nicht steuerbar, wenn Radiosender abgespielt werden
- 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
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
- siehe Navigation
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'],
colorMediaIcon: colorSonos,
colorMediaArtist: Yellow,
colorMediaTitle: Yellow,
alwaysOnDisplay: true,
autoCreateALias: true
}]
};
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'],
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.
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.
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:
Sonos Favoriten hinzufügen:
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 nachfolgende Alias wird komplett und vollständig angelegt, wenn der Parameter autoCreateALias: true
im PageItem definiert ist:
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!
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.
In der Sonos App umbenennen: