Update README.md
This commit is contained in:
207
README.md
207
README.md
@@ -1,201 +1,82 @@
|
|||||||
# 🎵 AWTRIX NowPlaying – Sonos → AWTRIX Custom App (ioBroker)
|
# 📂 Public Scripts by Mike
|
||||||
|
|
||||||
Zeigt den aktuell laufenden Song von **Sonos** als eigene **AWTRIX Custom-App** an:
|
Willkommen im Repository **public-script**!
|
||||||
`🎵 Künstler — Titel (Album)` – hält sich per Keep-Alive in der Rotation, solange ein Titel läuft.
|
Hier stelle ich diverse hilfreiche Scripts aus meinem Homelab und für allgemeine IT-Automatisierungen bereit.
|
||||||
|
|
||||||
> Getestet mit ioBroker (Javascript Adapter) + MQTT Adapter und einer AWTRIX mit MQTT-Support für Custom-Apps.
|
Die Scripts sind überwiegend in **Python**, **JavaScript (ioBroker)** oder als **Shell-/Batch-Tools** geschrieben – alle ohne Anspruch auf Vollständigkeit oder Support, aber gerne als Inspiration oder Basis zur eigenen Weiterentwicklung.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Features
|
## 📌 Ziel des Repositories
|
||||||
|
- Sammlung von kleinen Tools, die ich selbst im Alltag und Homelab nutze
|
||||||
- Liest **Titel / Artist / Album** aus Sonos-Datenpunkten
|
- Einfach nutzbar, schnell anpassbar, ohne komplizierte Abhängigkeiten
|
||||||
- Baut automatisch die Anzeige: `🎵 Künstler — Titel (Album)`
|
- Offene Veröffentlichung für die Community
|
||||||
- **Keep-Alive**: hält die App aktiv, solange ein Titel vorhanden ist
|
|
||||||
- Automatisches **Entfernen** der App, sobald keine Titelinfos mehr da sind
|
|
||||||
- Optionales **FORCE_SWITCH**: bei jedem Refresh auf die App umschalten
|
|
||||||
- **Debounce-Logik** (200 ms) gegen Flattern bei Trackwechseln
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧩 Voraussetzungen
|
## 📁 Struktur
|
||||||
|
|
||||||
- **ioBroker** mit:
|
| Ordner / Datei | Beschreibung |
|
||||||
- Javascript Adapter (zum Ausführen des Skripts)
|
|----------------|--------------|
|
||||||
- MQTT Adapter (als Client zum MQTT-Broker; verwendet `sendMessage2Client`)
|
| `scripts/` | Hauptordner mit allen Tools |
|
||||||
- Sonos Adapter (liefert `current_title`, `current_artist`, `current_album`)
|
| `docs/` | Zusätzliche Dokus oder Beispieldateien |
|
||||||
- **AWTRIX** (mit MQTT-Support für Custom-Apps)
|
| `resources/` | Icons, Assets, Templates (falls benötigt) |
|
||||||
- Ein erreichbarer **MQTT-Broker** (falls nicht in ioBroker integriert)
|
|
||||||
|
> Die genaue Struktur ist im Aufbau und kann sich noch verändern.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ⚙️ Installation
|
## ⚙️ Voraussetzungen
|
||||||
|
|
||||||
1. In ioBroker den **Javascript-Adapter** öffnen → neues Script `NowPlaying Sonos → AWTRIX` anlegen
|
Je nach Script können unterschiedliche Tools benötigt werden, z. B.:
|
||||||
2. Den Code aus `nowplaying_sonos_awtrix.js` einfügen
|
|
||||||
3. Folgende Werte anpassen:
|
- **Python 3.x** (inkl. `pip`)
|
||||||
- `MQTT_INSTANCE`, `AWTRIX_PREFIX`
|
- **Node.js**, **ioBroker-JavaScript Adapter**
|
||||||
- Sonos-Datenpunkte unter `DP.title / artist / album`
|
- **Docker / Containersysteme**
|
||||||
4. Skript starten
|
- **Standard Linux CLI**
|
||||||
→ Beim ersten laufenden Titel sollte auf der AWTRIX die App **NowPlaying** erscheinen.
|
|
||||||
|
Details stehen jeweils in der README der Scripts (falls vorhanden).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔧 Konfiguration
|
## ✅ Nutzung
|
||||||
|
|
||||||
| Variable | Typ | Standardwert | Beschreibung |
|
1. Script auswählen
|
||||||
|--------------------|---------|---------------|--------------|
|
2. README / Kommentare lesen
|
||||||
| `MQTT_INSTANCE` | String | `"mqtt.0"` | ioBroker-Instanzname des MQTT-Adapters |
|
3. Lokal kopieren
|
||||||
| `AWTRIX_PREFIX` | String | `"awtrix"` | MQTT-Prefix der AWTRIX (z. B. `awtrix/custom/NowPlaying`) |
|
4. Pfade & Parameter anpassen
|
||||||
| `APP_NAME` | String | `"NowPlaying"`| Name der Custom-App |
|
5. Ausführen – fertig ✅
|
||||||
| `LIFETIME_SEC` | Number | `600` | Lebensdauer der App in Sekunden (wenn kein Refresh kommt) |
|
|
||||||
| `KEEPALIVE_SEC` | Number | `10` | Intervall für den Refresh in Sekunden |
|
|
||||||
| `FORCE_SWITCH` | Boolean | `false` | Bei jedem Refresh auf die App umschalten |
|
|
||||||
| `ICON_MUSIC` | Number | `29944` | AWTRIX-Icon-ID |
|
|
||||||
| `COLOR_RGB` | Array | `[255,255,255]` | RGB-Farbe für Text |
|
|
||||||
| `TEXT_CASE` | Number | `2` | Textdarstellung (0 = normal, 1 = upper, 2 = smart) |
|
|
||||||
| `DP.title` | String | Beispiel | Sonos-Datenpunkt `current_title` |
|
|
||||||
| `DP.artist` | String | Beispiel | Sonos-Datenpunkt `current_artist` |
|
|
||||||
| `DP.album` | String | Beispiel | Sonos-Datenpunkt `current_album` |
|
|
||||||
|
|
||||||
> ⚠️ **Hinweis:** Passe die Sonos-Datenpunkte an dein Gerät an – IP und Struktur können variieren.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧠 Funktionsweise
|
## 💡 Ideen & Roadmap
|
||||||
|
|
||||||
1. **Trigger:**
|
- Mehr Scripts für Automatisierungen aus ioBroker / Proxmox / OPNsense
|
||||||
```js
|
- Kleine Webtools (z. B. JSON → ICS Konverter)
|
||||||
on({ id: [DP.title, DP.artist, DP.album], change: "ne" }, scheduleUpdate);
|
- Verbesserte Dokumentation direkt im Repo
|
||||||
```
|
|
||||||
Bei Änderung wird `updateAwtrix()` mit Debounce (200 ms) aufgerufen.
|
|
||||||
|
|
||||||
2. **Logik:**
|
> Vorschläge oder Optimierungen sind willkommen!
|
||||||
- Kein Titel → App entfernen, Keep-Alive stoppen
|
|
||||||
- Neuer Track → Text bauen, sofort publishen, Keep-Alive starten
|
|
||||||
- Gleicher Track → Keep-Alive aktualisiert regelmäßig selbst
|
|
||||||
|
|
||||||
3. **Keep-Alive:**
|
|
||||||
Alle `KEEPALIVE_SEC` Sekunden wird `publishCustom()` aufgerufen.
|
|
||||||
Sobald kein Titel mehr vorhanden ist → App wird automatisch entfernt.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📡 MQTT-Themen & Payloads
|
## 🔒 Hinweis
|
||||||
|
|
||||||
### Custom-App veröffentlichen
|
Einige Tools können in produktiven oder sicherheitskritischen Umgebungen Auswirkungen haben.
|
||||||
**Topic:**
|
Bitte **vor Nutzung** prüfen & anpassen. Nutzung auf eigene Verantwortung.
|
||||||
```
|
|
||||||
<AWTRIX_PREFIX>/custom/<APP_NAME>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Payload:**
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"name": "NowPlaying",
|
|
||||||
"text": "🎵 Artist — Title (Album)",
|
|
||||||
"icon": 29944,
|
|
||||||
"color": [255, 255, 255],
|
|
||||||
"textCase": 2,
|
|
||||||
"lifetime": 600
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Auf App umschalten (optional)
|
## 🧑💻 Autor
|
||||||
**Topic:**
|
|
||||||
```
|
|
||||||
<AWTRIX_PREFIX>/switch
|
|
||||||
```
|
|
||||||
|
|
||||||
**Payload:**
|
**Mike Lindner**
|
||||||
```json
|
Technik-Nerd, Homelab-Enthusiast & Automatisierungs-Fan 😄
|
||||||
{ "name": "NowPlaying" }
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### App entfernen
|
|
||||||
**Topic:**
|
|
||||||
```
|
|
||||||
<AWTRIX_PREFIX>/custom/<APP_NAME>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Payload:**
|
|
||||||
```json
|
|
||||||
{ "name": "NowPlaying", "lifetime": 1 }
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
> Das Skript sendet über:
|
|
||||||
> ```js
|
|
||||||
> sendTo("mqtt.X", "sendMessage2Client", { topic, message, retain: false, qos: 0 });
|
|
||||||
> ```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🛠️ Anpassungen & Tipps
|
|
||||||
|
|
||||||
### Mehrere Sonos-Player
|
|
||||||
- Skript **duplizieren**
|
|
||||||
- `APP_NAME` (z. B. `NowPlaying_Kueche`) und `DP.*` anpassen
|
|
||||||
|
|
||||||
### Anzeige-Dauer / Refresh
|
|
||||||
- Anzeige-Frequenz → `KEEPALIVE_SEC`
|
|
||||||
- Ablaufzeit ohne Refresh → `LIFETIME_SEC`
|
|
||||||
|
|
||||||
### Direkter Wechsel auf NowPlaying
|
|
||||||
- `FORCE_SWITCH = true` setzen, um bei jedem Refresh direkt zu wechseln
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🧰 Troubleshooting
|
|
||||||
|
|
||||||
| Problem | Mögliche Ursache / Lösung |
|
|
||||||
|----------|----------------------------|
|
|
||||||
| Keine Anzeige | MQTT-Broker nicht erreichbar, falsches Prefix oder kein Song aktiv |
|
|
||||||
| App verschwindet zu schnell | `LIFETIME_SEC` erhöhen |
|
|
||||||
| Zu häufige Refreshs | `KEEPALIVE_SEC` erhöhen |
|
|
||||||
| Falsches Icon oder Textformat | `ICON_MUSIC` oder `TEXT_CASE` anpassen |
|
|
||||||
| App spammt Rotation | `FORCE_SWITCH = false` lassen |
|
|
||||||
| Keine Daten von Sonos | Sonos-Adapter prüfen (korrekte Player-IDs?) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 💾 Code
|
|
||||||
|
|
||||||
Die vollständige Version liegt in:
|
|
||||||
`nowplaying_sonos_awtrix.js`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔒 Sicherheit
|
|
||||||
|
|
||||||
- MQTT-Zugangsdaten werden im ioBroker-MQTT-Adapter verwaltet
|
|
||||||
- Kein Retain (`retain:false`), QoS = 0 → kein Risiko veralteter Nachrichten
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📜 Lizenz
|
## 📜 Lizenz
|
||||||
|
|
||||||
**MIT License** – siehe `LICENSE`
|
Alle Scripts sind – sofern nicht anders angegeben – unter der **MIT-Lizenz** veröffentlicht.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 👏 Credits
|
**Viel Spaß beim Stöbern und Ausprobieren! 🚀**
|
||||||
|
|
||||||
- **Autor:** Mike
|
|
||||||
- **AWTRIX-Projekt:** Community & Entwickler
|
|
||||||
- **ioBroker Adapter:** Sonos, MQTT & Javascript
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🧾 Changelog
|
|
||||||
|
|
||||||
| Version | Datum | Änderungen |
|
|
||||||
|----------|--------|------------|
|
|
||||||
| v0.0.1 | 2025-10-27 | Erste Veröffentlichung |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|||||||
Reference in New Issue
Block a user