Entität für Attribut von SONOS Volume anlegen

Dieser Thread hat mich auf die Spur geführt, dass die Lautstärke meiner SONOS Soundbar, die nur als Attribut existiert, zu einer Entität machen kann. Stichwort Helfer/Template.

Leider sind die dortigen Beschreibungen (noch) böhmische Dörfer für mich. Auch die Doku hilft nicht wirklich weiter.

Erbarmt sich bitte mal jemand, eine kurze Anleitung für Anfänger zu posten.

Da Du nicht schreibst, warum Du das machen willst, hier mal eine Info zur Lautstärke:
Füge im Dashboard eine Mediensteuerung hinzu, falls nicht schon vorhanden.
Über die drei Punkte oben rechts, da kannst Du dann auch die Lautstärke ändern.

Danke für den Hinweis und sorry für die fehlende Info.

Ich möchte die Lautstärke per Automation auswerten und verändern. Dazu brauche ich sie doch als Entität?

Nein, man kann auch das Attribut einer Entität auslesen. Wie soll die Automation funktionieren?

Ich habe Sonosboxen im Einsatz und individuelle Lautstärke steuere ich in Automatisationen über

      - data:
          entity_id:
            - media_player.sonos_xxx
          volume_level: 0.1
        action: media_player.volume_set

Desweiteren habe ich zentrale Lautstärke Wort/Wert Paare in der configuration.yaml als Sensor hinterlegt

  - sensor:
      - name: "OM_Sonus_Sprachausgabe_SoundLevelMap_1"
        unique_id: OM_Sonus_Sprachausgabe_SoundLevelMap_1
        state: ""
        attributes:
          {
            "sleep": "0.07",
            "leise": "0.18",
            "normal": "0.30",
            "laut": "0.65",
            "alarm": "0.8",
          }

In Automatisationen spreche ich diese zentralen Werte als Attribute so an:

      - data:
          entity_id:
            - media_player.sonos_xxx
          volume_level: >-
            {{float(state_attr('sensor.om_sonus_sprachausgabe_soundlevelmap_1', 'laut'))}}
        action: media_player.volume_set

Gutes Gelingen!

Bezüglich der Lautstärke möchte ich zwei Dinge machen:

  1. Wenn SONOS idle ist, eine Default-Lautstärke setzen. Damit einen der Fernseher nicht anbrüllt, wenn jemand vorher Metallica in Maximallautstärke gehört hat.
  2. Per zwei KNX-Taster die Lautstärke regeln. Kurzer Tastendruck soll die Lautstärke jeweils um einen definierten Wert erhöhen/verringern. Besonders auf diese Lösung bin ich gespannt. Mit Blockly (wie es derzeit läuft) waren das ein paar Mausklicks.

Der Punkt mir der Lautstärke von Punkt 1 lässt sich mit einer einfachen Automation lösen:

Teil 2 mache ich so:

alias: Lautsprecher Bad erhöhen
description: ""
triggers:
  - alias: Taste "5" kurz gedrückt
    trigger: state
    entity_id:
      - event.schlafzimmer_tastenblock_ch5
    attribute: event_type
    to: press_short
    id: 5_short
  - alias: Taste "5" hat langem Tastendruck gestartet
    trigger: state
    entity_id:
      - event.schlafzimmer_tastenblock_ch5
    attribute: event_type
    to: press_long_start
conditions: []
actions:
  - alias: >-
      Bei kurzen Tastendruck Lautstärke setzen, bei langem Tastendruck
      Lautstärke erhöhen
    if:
      - condition: trigger
        id:
          - 5_short
    then:
      - alias: Lautstärke auf 29% erhöhen
        repeat:
          sequence:
            - metadata: {}
              data: {}
              target:
                entity_id: media_player.bad
              action: media_player.volume_up
            - delay:
                hours: 0
                minutes: 0
                seconds: 0
                milliseconds: 100
          until:
            - condition: numeric_state
              entity_id: media_player.bad
              attribute: volume_level
              above: 0.28
    else:
      - alias: Lautstärke erhöhen
        repeat:
          sequence:
            - metadata: {}
              data: {}
              target:
                entity_id: media_player.bad
              action: media_player.volume_up
            - delay:
                hours: 0
                minutes: 0
                seconds: 0
                milliseconds: 200
          until:
            - alias: Bis Taste losgelassen wird
              condition: state
              entity_id: event.bad_tastenblock_ch5
              attribute: event_type
              state: press_long_release
mode: single

@MaJaMa:
Danke, das sieht ja noch recht einfach aus. Das kriege ich mit meinem derzeitigen Wissenslevel hin.

@miami:
Okay, es geht also… irgendwie. :laughing:
Aber wenn ich die Umsetzung konkret angehe, habe ich mal wieder das Gefühl, mit meinem Ansinnen, ioBroker durch HA zu ersetzen, die Büchse der Pandora geöffnet zu haben.
Zuerst wollte ich den KNX-Tastendruck im HA als Entität anlegen. Da treten schon die ersten Probleme auf:
Wenn ich die Doku der KNX Integration ansehe, kommen das “Sensor” oder “Switch” in Frage. “Key”, was ja eig. im Englischen eine Taste ist, gibt es nicht.
Naja, eine Taste kann man auch als Sensor bezeichnen.
Also Sensor:
nein, doch nicht. Die entsprechende Gruppenadresse im KNX hat den DP-Typ 1.x - gibts nicht bei “Sensor.”.
Also Switch:
auch nicht. Die Doku sagt: “The KNX switch platform is used as an interface to switching actuators”. Ein Aktor im KNX hat mit meiner Taste gar nichts zu tun.

Ratlos.

(Beitrag vom Verfasser gelöscht)

Auf der Seite der KNX Integration ist doch der Abschnitt Support for automations, im Beispiel verwenden die die Entinität binary_sensor.cover_abstell (musst Du natürlich anpassen).
Eine ganz einfache Automatisierung wäre damit:

description: ""
mode: single
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.cover_abstell
    to: "on"
conditions: []
actions:
  - action: media_player.volume_up
    metadata: {}
    data: {}
    target:
      entity_id: media_player.bad

Für die Verringerung machst Du eine zweite Automatisierung mit “off” und “media_player.volume_down”

Ich hatte Tomaten auf den Augen: der device type “Button” ist das, was ich suchte.

Für nicht-KNXer: jedes Device jeden Typs muss in HA per YAML bekannt gemacht werden. Lediglich _Light" und “Switch” können per GUI konfiguriert werden - was allerdings per YAML mit Cut’nPaste ungleich schneller geht, als gefühlt 999 Lichter mit je 4 Gruppenadressen per klick-klick-klick-klick-klick-klick-klick-klick zu konfigurieren.
Kaum sind die Buttons konfiguriert (übrigens jeweils langer und kurzer Tastendruck sind im HA-Kontext zwei Buttons…) steht der taster als Entität zur Verfügung…

Ich komme mir langsam vor wie ein Erstklässer in der Abi-Abschlussklasse… :grin:

Jetzt habe ich mir die Automation zusammengeklickt. Scheitere aber offensichtlich bereits beim Auslöser:

Die Automation wird laut HA nie getriggert. Zuletzt ausgelöst: niemals.

Die Entität “W2 Sonos lauter” ist die bewusste Taste. Dass sie gedrückt wird sehe ich in HA im KNX-Gruppenmonitor. Dort sehe ich unter Daten: 1 und unter Wert: on wenn die Taste gedrückt wird.

der YAML Code sieht so aus:

- id: '1737901160956'
  alias: W2 Sonos lauter
  description: ''
  triggers:
  - trigger: state
    entity_id:
    - button.w2_sonos_lauter
    to: 'on'
    from:
  conditions: []

Die Lernkurve steigt!

In der Doku habe ich gefunden, dass man direkt auf eingehende Telegramme vom KNX reagieren kann. Das erübrigt das Anlegen von Buttons per YAML.

Da Aktivitäten im KNX immer von sog. Gruppenadressen repräsentiert werden, kann man direkt auf die Gruppenadresse als Telegramminhalt triggern. Bei Eingabe der Gruppenadresse im Automationseditor wird einem sogar der Name der Gruppenadresse gezeigt, sofern man ihn in der ETS sinnvoll vergeben hat.