Speech-To-Phrase: Unterschiedliche Automationen für unterschiedliche Räume

Ich habe mir einen kleinen Testsprachassistenten gebaut und eine Automation, welche auf die Sprachbefehle reagiert. Funktioniert soweit ganz gut.

In der Zukunft möchte ich allerdings verschiedene Automationen für verschiedene Räume nutzen.

Wenn ich im Wohnzimmer „Stehlampe an“ sage, dann möchte ich dass im Wohnzimmer die Stehlampe eingeschaltet wird. Im Schlafzimmer soll der gleiche Befehl die Schlafzimmerstehlampe schalten.

Wie macht man das? Kann ich dem Trigger irgendwie mit der Quelle verknüpfen?

alias: Sprachsteuerung_T1
description: ""
triggers:
  - trigger: conversation
    command: stehlampe an
    id: stehlampe_an
  - trigger: conversation
    command: schalte Stehlampe aus
    id: stehlampe_aus
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - stehlampe_an
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.action_lsc_11_0
          - set_conversation_response: Stehlampe wurde eingeschaltet
      - conditions:
          - condition: trigger
            id:
              - stehlampe_aus
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.action_lsc_11_0
          - action: assist_satellite.announce
            metadata: {}
            data:
              message: Stehlampe wurde ausgeschaltet
              preannounce: true
mode: single

Moin

Rein von der Logik her: Wenn es mehrere Stehlampen gibt, woher soll HA dann wissen welche dieser Stehlampen mit dem Befehl “Stehlampe an” gemeint ist?

Das würde nur funktionieren wenn HA auswerten würde über welches Gerät der Sprachbefehl empfangen wurde. Also nach dem Motto. Wenn das Gerät A (z.B. Nest Lautsprecher/Hub 1) im Schlafzimmer den Befehl “Stehlampe an” empfangen hat dann schalte die Stehlampe im Schlafzimmer an. Wenn das Gerät B (z.B. Nest Lautsprecher/Hub 2) im Wohnzimmer den Befehl “Stehlampe an” empfangen hat dann schalte die Stehlampe im Wohnzimmer an.

Mit Google Home und z.B. Nest Lautsprecher oder Hub, wäre das z.B. nicht möglich, eben weil diese nicht an HA melden über welchen Nest Lautsprecher oder Hub ein Befehl empfangen wurde. Zumindest kenne ich dazu/dafür keine Möglichkeit. Wie das dann mit anderen Geräten zur Sprachsteuerung aussieht: Keine Ahnung. :slightly_smiling_face:

VG Jim

Weiß nicht, was Du da genau als Sprachassistenten am Start hast.
Bei dem Home Assistant Voice, hast Du eine Assist Entität (assist_satellite.xyz), die angibt ob dieser gerade aktiv ist oder nicht.

Diese Entität könnte man als Bedingung verwenden.

Gruß Osorkon

Super, scheint mit der Zusatzbedingung

conditions:
  - condition: template
    value_template: >-
      {{ trigger.satellite_id == 'assist_satellite.schlafzimmer_assist_satellit'
      }}
 

zu funktionieren (hab noch keine wirkliche zweite Station). Aktionen werden jetzt nur noch ausgeführt, wenn dieser Satellite den Trigger ausgelöst hat.

Eigentlich habe ich es anders gemeint.
Das sind ja die möglichen Zustände, die ein Satellit einnehmen kann.

Wenn Du jetzt möchtest das die Stehlampe im Schlafzimmer eingeschaltet wird, wenn der Satellit im Schlafzimmer verwendet wird und die Stehlampe im Wohnzimmer eingeschaltet wird, wenn der Satellit im Wohnzimmer verwendet wird, musst Du nur wissen, welcher Satellit aktuell mit der Verarbeitung beschäftigt ist.
Das heisst Du fragst ab sich der betroffenen Satellit gerade im Zustand Verarbeiten befindet und je nach dem welcher gerade eine Anfrage bearbeitet, dementsprechend wird die zughörige Aktion ausgeführt.
Dann sollte die Aktion so aussehen.

  - choose:
      - conditions:
          - condition: state
            entity_id: assist_satellite.schlafzimmer_assist_satellit
            state:
              - processing
        sequence:
          - action: light.turn_on
            metadata: {}
            target:
              entity_id: light.stehlampe_schlafzimmer
            data: {}
      - conditions:
          - condition: state
            entity_id: assist_satellite.wohnzimmer_assist_satellit
            state:
              - processing
        sequence:
          - action: light.turn_on
            metadata: {}
            target:
              entity_id: light.stehlampe_wohnzimmer
            data: {}

Gruß Osorkon

Ok, ist auch eine Lösungsmöglichkeit. Wenn ich wirklich die zweite Station fertig habe, werde ich sehen, ob ich doch auf deinen Weg umschwenken muss.

Mit meiner Filter-Condition kann ich unterschiedliche Automationen für unterschiedliche Räume schreiben (bzw. die gleiche Automation für unterschiedliche Räume nur andere Ziel-Entitäten). Ich frage mich allerdings, wie das System das verkraftet, wenn große Listen mit den gleichen Triggern mehrmals in unterschiedlichen Automationen auftreten und was das für die Ausführungsgeschwindigkeit/Reaktionszeit bedeutet.

Gruß Lutz