Updated NSPanel ‐ cardMedia ‐ Der Spotify‐Premium Player (markdown)

Armilar
2024-02-10 20:14:43 +01:00
parent 18895e4ed2
commit 28abc0f423

@@ -41,161 +41,97 @@ https://github.com/iobroker-community-adapters/ioBroker.spotify-premium/issues/1
## Bedienungselemente / Anzeigen
### 1. Seitentitel
Der Seitentitel steht auf:
* der dem Parameter "heading" aus der Seitenvariable der cardMedia (z.B. Spotify-Premium), wenn keine Wiedergabe erfolgt. Wenn das Wiedergabegerät über die Spotify-Premium-Adapterinstanz (z.B. spotiy-premium.0.) im ALIAS `.CONTEXT_DESCRIPTION` auf:
Der dem Parameter "heading" aus der Seitenvariable der cardMedia (z.B. Spotify-Premium) wird visualisiert, wenn keine Wiedergabe erfolgt.
Wenn folgender Inhalt:
* Playlist: This Is
* Playlist:
* Album:
* Track:
* Artist:
steht, wird dieser Content-Typ visualisiert
enthalten ist, wird dieser Content-Typ bereinigt visualisiert
### 2. Navigation zur nächsten Seite
* siehe [Navigation](ioBroker-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-Timers` und steht per Default auf 2000ms.
> ![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/6770fd4c-271f-499e-a935-7e2217631ea9)
* Titel
* Verstrichene Zeit (Minuten/Sekunden) des aktuell abgespielten Titels
* Gesamtlänge (Minuten/Sekunden) des aktuell abgespielten Titels
> Die Aktualisierung in Sekunden steht in Abhängigkeit zur Spotify-Premium Adapterinstanz und steht per Default auf 10 Sekunden.
Das führt zu unschönen Ergebnissen in Verbindung mit einem bekannten Fehler des Adapters. Die Zeit sollte demnach auf 1 Sekunde reduziert werden.
### 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)
Folgende Datenpunkte der Spotfiy-Premium Adapterinstanz werden berücksichtigt:
* Interpret
* Album
### 5. Player An/Aus (Stop)
* Stop (Icon blau) --> `sonos.0.root.<DEVICE_IP>.stop` (beim Abspielen weiß)
* Stopp (Icon blau)
### 6. Volume lauter
* Die Feinjustierung der aktuellen Lautstärke in Einerschritten (+1) --> Datenpunkt: `sonos.0.root.<DEVICE_IP>.volume`
* Die Feinjustierung der aktuellen Lautstärke in Einerschritten (+1)
### 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`
* Die Feinjustierung der aktuellen Lautstärke erfolgt stufenlos zwischen 0% und 100%
> [!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](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/27165f31-9d25-4921-98b9-1c3a7e46cf82)
> ![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/ca9c5cd2-1fa0-467e-ae01-5dc968b26e63)
### 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)`
* Es sind keine weiteren Einstellungen zu berücksichtigen.
### 9. SONOS Favoriten (Alternativ Equalizer)
### 9. Equalizer
> [!NOTE]
> Dieses Steuerelement kann unterschiedliche Eigenschaften annehmen
#### Steuerelement als SONOS Favoriten:
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/2cedade5-89ca-46bf-a8d8-5e4e4c2c3573)
> Dieses Steuerelement wird nicht über die Spotify-Premium Instanz gesteuert
Das PageItem enthält keinen equalizerString --> Die Favoriten werden automatisch aus dem Datenpunkt: `sonos.0.root.<DEVICE_IP>.favorites_list_array` extrahiert:
> [!CAUTION]
> ```typescript
>let SpotifyPremium: PageType =
>{
> 'type': 'cardMedia',
> 'heading': 'Spotify-Premium',
> 'items': [{
> id: AliasPath + 'Media.PlayerSpotifyPremium',
> adapterPlayerInstance: "spotify-premium.0.",
> speakerList: [],
> playList: [],
> equalizerList: ['Bassboost','Klassik','Dance', 'Deep', 'Electronic', 'Flat', 'Hip-Hop', 'Rock',
> 'Metal', 'Jazz', 'Latin', 'Tonstärke', 'Lounge', 'Piano'],
> colorMediaIcon: colorSpotify,
> colorMediaArtist: Yellow,
> colorMediaTitle: Yellow,
> alwaysOnDisplay: true,
> autoCreateALias: true
> }]
>};
> ```
#### Steuerelement als Equalizer:
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/66ef5685-e7de-43e5-a574-84e15779799f)
* Innerhalb des `PageItem` wird der `Equalizer` und in diesem Beispiel ebenfalls der Parameter `crossfade` definiert:
> [!CAUTION]
> ```typescript
> let Sonos: PageType =
> {
> 'type': 'cardMedia',
> 'heading': 'Sonos',
> 'useColor': true,
> '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.
> Die Spotify-Premium Adapterinstanz verfügt nicht über Klangsteuerungs-Datenpunkte. Es kann jedoch bei SONOS die HTTP API https://github.com/jishi/node-sonos-http-api#usage genutzt werden oder alternativ bei z.B. Alexa die 3-Punkt Klangsteuerung.
>
> 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](#favoriten-liste)
> Für den Fall, dass der Equalizer aktiv genutzt werden soll, 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](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/44c5b0b6-7bbd-4372-ad8e-244f5e9bb729)
> [!NOTE]
* Sofern eine Playlist abgespielt wird die eine Trackliste enthält, so wird diese automatisch geladen.
> 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](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/7a544d32-7fe1-45f8-b9fb-50ad5a259628)
### 11. Spotify-Premium Playlist
* Das Array playList im PageItem wird genutzt.
> [!NOTE]
> siehe auch [Erstellung einer Sonos Playlist](#individuelle-wiedergabe-liste-array-playlist)
Wenn das Array leer ist [], dann werden die Playlisten automatisch aus dem Adapter geladen.
### 12. SONOS Speaker Liste
Andernfalls können die bevorzugten Playlists dort manuell eingetragen werden
### 12. Spotify-Premium Speaker Liste
2 Varianten
* Ist das Array leer [], dann werden die Wiedergabegeräte automatisch importiert
* Das Array speakerList im PageItem wird genutzt. Die Wiedergabegeräte sind dort manuell einzutragen
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/da4e95e3-9091-43da-9712-744e85a30c0c)
> [!NOTE]
> siehe auch [Erstellung einer speakerList](#speaker-liste-array-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`
* Sofern ein weiterer Titel in der Track Liste verfügbar ist, so wird dieser ausgewählt
### 14. Play / Pause
* Umschaltung zwischen den Datenpunkten `sonos.0.root.<DEVICE_IP>.play` und `sonos.0.root.<DEVICE_IP>.pause`
* Umschaltung zwischen Play und Pause
### 15. Volume leiser
* Die Feinjustierung der aktuellen Lautstärke in Einerschritten (-1) --> Datenpunkt: `sonos.0.root.<DEVICE_IP>.volume`
* Die Feinjustierung der aktuellen Lautstärke in Einerschritten (-1)
### 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
* Umschaltung zwischen Shule an/aus, soffern das Wiedergabemedium dieses unterstützt
### 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`
* Sofern ein weiterer Track vor dem aktuell abgespielten Titel in der Track Liste verfügbar ist, so wird dieser ausgewählt
### 18. Player Logo / Seek Funktion (Alternativ Crossfade)
### 18. Player Logo / Seek Funktion
Per Standard ist der Seek-Modus aktiv. Dieser wird mit Klick auf das Logo des Players aufgerufen:
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/f78a8093-351f-4a5f-b58b-415f78bf4e2d)
Jetzt ist es möglich eine Position des Tracks (Titels) in 10% Schritten zu erreichen (vor- und zurückspulen).
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/ee9ce338-5c0e-465d-935c-df55adf8642c)
> [!NOTE]
> Wird im PageItem der Parameter
> `crossfade: true`
> verwendet, dann wird statt der Seek-Funktion Crossfade zur Auswahl aktiv
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/7d2387fa-b943-4540-ae7e-efbb2c98b763)
### 19. Navigation zur vorherigen Seite
* siehe [Navigation](ioBroker-Navigation)
@@ -203,56 +139,6 @@ Jetzt ist es möglich eine Position des Tracks (Titels) in 10% Schritten zu erre
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/c3e5ffba-70a5-4630-8fe4-1cf09952bdeb)
## 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.
```typescript
let Sonos: PageType =
{
'type': 'cardMedia',
'heading': 'Sonos Player',
'useColor': true,
'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.
```typescript
let Sonos: PageType =
{
'type': 'cardMedia',
'heading': 'Sonos Player',
'useColor': true,
'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](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/6de74a6c-0aed-480e-9a07-196148d01a25)
> [!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.