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

Armilar
2024-02-10 19:11:15 +01:00
parent af4139454d
commit 8766279cba

@@ -33,4 +33,225 @@ Damit die Elapsed/Duration Anzeige nicht permanent auf 0:00 zurückspringt, ist
Weiter Infos zu diesem Fehler:
https://github.com/iobroker-community-adapters/ioBroker.spotify-premium/issues/167
## Player im Live-Betrieb:
![Nextion_Editor_OU5vhqrVgr](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/6d051f61-bcfb-40ac-84fd-abfcb34f62fe)
und mit **den beiden alternativen Einstellungen** für:
* den Equalizer und
* die Crossfade-Funktion
![Nextion_Editor_UYuOfvSHCY](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/08fb83b9-f4d3-45de-9f53-8bdd616711df)
## 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
* 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)
### 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](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)`
### 9. SONOS Favoriten (Alternativ 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)
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.
>
> 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)
### 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]
> 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)
> [!NOTE]
> siehe auch [Erstellung einer Sonos Playlist](#individuelle-wiedergabe-liste-array-playlist)
### 12. SONOS Speaker Liste
* 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`
### 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](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)
# Erstellung der Seitenvariable für die cardMedia
![image](https://github.com/joBr99/nspanel-lovelace-ui/assets/102996011/e87fd566-af21-475e-80dd-81e6225e52e9)
## 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.