Sonos-Lautstärke mit Stream Deck+ steuern

Die nachfolgende kurze Anleitung mag sehr spezifisch und für nur wenige relevant sein, ist aber insbesondere auch ein Protokoll für mich selber, um die Konfiguration in Zukunft nachvollziehen zu können.

Das Ziel: Die Lautstärke des Sonos-Lautsprechers auf meinem Pult soll mit dem Drehregler des Stream Deck+ gesteuert werden können. Dafür benötigt ihr:

Script in Home Assistant 

Um den Sonos-Lautsprecher mit dem Stream Deck steuern zu können, muss als erstes ein Script in Home Assistant erstellt werden, welches dann beim Drehen des Stream Deck+ Rades ausgelöst wird.

Das Script in Home Assistant erstellen:

  1. Home Assistant besuchen
  2. Einstellungen öffnen
  3. Zu “Automatisierungen & Szenen” navigieren
  4. Zum Tab “Skripte” wechseln
  5. “Neues Skript erstellen”
  6. Mit dem Menü (oben rechts) zu “Als YAML bearbeiten” wechseln
  7. Untenstehenden Code einfügen
  8. Speichern

YAML-Code:

alias: Stream Deck + Sonos Volume
sequence:
  - if:
      - condition: template
        value_template: "{{ ticks < 0 }}"
    then:
      - service: media_player.volume_down
        target:
          entity_id: media_player.era_300
        data: {}
    else:
      - service: media_player.volume_up
        target:
          entity_id: media_player.era_300
        data: {}
mode: single
icon: mdi:volume-high

Im Code dabei “era_300” durch den Namen eures Lautsprechers in Home Assistant ersetzen.

Das Script erhält beim Drehen des Drehreglers die “Ticks”, also die Schritte der Umdrehung des Reglers. Wenn Ticks < 0 sind, dann dreht ihr nach links, wenn Ticks > 0 nach rechts. Entsprechend wird die Lautstärke bei ticks < 0 gesenkt, bei ticks > 0 erhöht.

Stream Deck+ Konfiguration 

Zu Beginn muss das Home Assistant Plugin für Stream Deck aus dem Elgato Marketplace installiert werden. Danach das Home Assistant “Entity (generic)” Modul zum gewünschten Feld für einen der Drehregler hinzufügen.

  • Unter “Server Settings” die Verbindung mit eurer Home Assistant Installation herstellen. Der Access Token kann auf eurer Profilseite unter “Langlebige Zugangstoken” ganz unten generiert werden.
  • Mit Encoder appearance könnt ihr das Icon eurer Entität in Home Assistant übernehmen. Hier bspw. unter “Domain” “media_player” und als “Entity” euren Lautsprecher auswählen. Hier wird ausschliesslich das Aussehen des Buttons auf eurem Stream Deck konfiguriert.
  • Unter “Short Press”, “Long Press” und “Screen tab” können die Aktionen für euren Lautsprecher beim klicken des Drehrades oder dem Bildschirm konfiguriert werden. In meinem Fall habe ich auf einen Short Press die Funktion Play/Pause konfiguriert:
    • Domain: media_player
    • Service: Play/Pause
    • Entity: Era300 (euer Lautsprecher)
  • Alternativ kann der Lautsprecher z.B. auch stummgeschaltet oder der nächste Titel wiedergegeben werden. Die Aktion wird unter “Service” konfiguriert.
  • Das Drehrad wird unter Rotation konfiguriert. Hierfür wird das Script, welches wir oben erstellt haben, aufgerufen. Hier meine Konfiguration:
    • Domain: script
    • Service: Stream Deck+ Sonos Volume (das zuvor erstellte Script)
    • Service Data JSON
{
"ticks": {{ ticks }}
}

Mit diesem JSON werden die Ticks an Home Assistant übergeben, um die Lautstärke entweder zu senken oder erhöhen.

Screenshot der Einstellungen in Stream Deck Software

Damit sollte die Konfiguration bereits abgeschlossen sein und der (Sonos) Lautsprecher via Home Assistant mit dem Stream Deck+ gesteuert werden können.

Add left/right action to dial · cgiesche streamdeck-homeassistant · Discussion #208
Would it be possible to add different service calls to the left and right rotation?′ I want to use the rotation to for instance send an IR signal for volume up with the right rotation and volume do…

💙 via streamdeck-homeassistant auf GitHub