Skip to content

NSPanel ‐ cardMedia ‐ Der SONOS Player

Armilar edited this page Aug 18, 2024 · 69 revisions

Inhalt:

Aufbau des SONOS Players

(vollständig ab NSPanelTs.ts - Version 4.3.3.17)

image

Player im Live-Betrieb:

Nextion_Editor_OU5vhqrVgr

und mit den beiden alternativen Einstellungen für:

  • den Equalizer und
  • die Crossfade-Funktion

Nextion_Editor_UYuOfvSHCY

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_type auf track(0) steht
  • sonos.0.root.<DEVICE_IP>.current_station wenn ein Radiosender gewählt wurde

2. Navigation zur nächsten Seite

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-Timers und steht per Default auf 2000ms.
image

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.
image
image

8. Repeat-Funktion

  • Es sind keine weiteren Einstellungen zu berücksichtigen. Der Datenpunkt sonos.0.root.<DEVICE_IP>.repeat wird genutzt und inkrementiert die Werte none(0), all(1) und one(2)

9. SONOS Favoriten (Alternativ Equalizer)

Note

Dieses Steuerelement kann unterschiedliche Eigenschaften annehmen

Steuerelement als SONOS Favoriten:

image

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
             }]
};

Steuerelement als Equalizer:

image

  • Innerhalb des PageItem wird der Equalizer und in diesem Beispiel ebenfalls der Parameter crossfade 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

10. Track Liste

  • Sofern der Datenpunkt sonos.0.root.<DEVICE_IP>.queue Daten enthält und die abspielbaren Medien eine Trackliste enthalten, so wird diese automatisch geladen. image

Note

Sollten weitere Tracks vorhanden sein, so können diese über den rechtsangeordneten Pfeil erreicht werden

11. SONOS Playlist

  • Das Array playList im PageItem wird genutzt. Die Playlists sind dort manuell einzutragen
    image

12. SONOS Speaker Liste

  • Das Array speakerList im PageItem wird genutzt. Die Wiedergabegeräte sind dort manuell einzutragen image

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>.play und sonos.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>.shuffle als 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:
image

Jetzt ist es möglich eine Position des Tracks (Titels) in 10% Schritten zu erreichen (vor- und zurückspulen).
image

Note

Wird im PageItem der Parameter
crossfade: true
verwendet, dann wird statt der Seek-Funktion Crossfade zur Auswahl aktiv
image

19. Navigation zur vorherigen Seite

Erstellung der Seitenvariable für die cardMedia

image

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'],
                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'],
                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 image

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:
image

Die Favoriten können unter Sonos-Favoriten eingesehen werden:
image

Sonos Favoriten hinzufügen:
image

Individuelle Wiedergabe Liste (Array playList)

image

Dann entweder zu einer besehenden Playlist hinzufügen oder eine neue Playlist mit neuem Namen erstellen:
image

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:

image

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.

In der Favoriten-Liste steht z.B. nur "Hits"

image
In der Sonos App umbenennen:
image
image
image

Clone this wiki locally