Alexa, welches Fenster/Tür ist noch offen?

Wird vielleicht damit zusammenhängen, welcher Benutzer gerade auf dem jeweiligen Echo aktiv ist. Aber ruf doch einfach beide Dienste parallel auf, dann hast Du immer den richtigen.

wie meinst du beide Dienste paralell?

Wenn Du die Benachrichtigung parallel an beide Notify-Adressen schickst, müsste sie doch auf jeden Fall einmal ankommen.

nein ich glaube wenn ich das mache, bricht er ab, wenn es den ersten Dienst nicht gibt oder?

Deshalb parallel. Du wählst in den Aktionen “Parallel laufen” aus und fügst da beide Benachrichtigungen ein.

Hab es jetzt mal mit diesem Code probiert:

alias: Welche Fenster und Türen offen
sequence:
  - service: alexa_media.update_last_called
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
  - if:
      - condition: state
        entity_id: binary_sensor.fenster_und_tursensoren
        state: "on"
    then:
      - service: notify.alexa_media_last_called_xxx
        data:
          data:
            type: announce
          message: |-
            Folgende Fenster und Türen sind noch offen: {{
            expand('binary_sensor.fenster_und_tursensoren')
               | selectattr('state', 'eq', 'on') 
               | map(attribute='name') 
               | list 
               | join (', ')
            }}
    else:
      - service: notify.alexa_media_last_called_xxx
        data:
          data:
            type: announce
          message: Es sind alle Fenster und Türen geschlossen
    enabled: true
  - if:
      - condition: state
        entity_id: binary_sensor.fenster_und_tursensoren
        state: "on"
    then:
      - service: notify.alexa_media_last_called
        data:
          data:
            type: announce
          message: |-
            Folgende Fenster und Türen sind noch offen: {{
            expand('binary_sensor.fenster_und_tursensoren')
               | selectattr('state', 'eq', 'on') 
               | map(attribute='name') 
               | list 
               | join (', ')
            }}
    else:
      - service: notify.alexa_media_last_called
        data:
          data:
            type: announce
          message: Es sind alle Fenster und Türen geschlossen
    enabled: true
mode: parallel

Aber leider kommt keine Ansage.

er bricht wohl doch beim ersten ab:

Nicht der Modus muss parallel sein, sondern die Aktionen. Schau in der Liste der Aktionen nach “parallel laufen”. Da kommen dann beide Notify-Aktionen rein.

Super vielen Dank. Das funktioniert jetzt.

So jetzt hab ich dich lange genug an Weihnachten aufgehalten :see_no_evil: Frohe Weihnachten :christmas_tree:

Danke, frohe Weihnachten auch für Dich. :christmas_tree:

Hallo zusammen und ein gesundes Jahr 2024.

ich komme hier leider nicht weiter, das Script funktioniert soweit

alias: fenster
sequence:
  - service: alexa_media.update_last_called
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
  - service: notify.alexa_media_last_called
    data:
      data:
        type: tts
        method: speak
      message: >-
        Folgende Fenster und Türen sind noch offen: {{
        expand('binary_sensor.gruppe_alle_fenster_und_turen')
           | selectattr('state', 'eq', 'on') 
           | map(attribute='name') 
           | list 
           | join (', ')
        }}
mode: single

Ich habe sowohl den Alexa_Media player installiert als auch das Video von Cryd abgearbeitet, das funktioniert soweit alles gut, licht an und so weiter

was aber so überhaupt nicht funktionieren will ist das ich das an Alexa übergebe.

die Config sieht wie folgt aus:

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml
template: !include template.yaml
alarm_control_panel: !include alarm.yaml
waste_collection_schedule: !include abfall.yaml
alexa: !include alexa.yaml
light: !include light.yaml
climate: !include climate.yaml
influxdb: !include influxdb.yaml

und die alexa.yaml sieht so aus:

smart_home:
  locale: de-DE
  endpoint: https://api.eu.amazonalexa.com/v3/events
  filter:
    include_entities:
      # Lichter
      - light.buro
      - light.esszimmer
      - light.wohnzimmer
      - light.sleepingroom_licht
      - light.terrasse
      # Steckdosen
      - switch.tasmota_2
      - switch.fernseher_sideboard_wohnzimmer_fernseher_wohnzimmer
      - switch.ventilator_wz
      - switch.ecklampe
      - switch.ventilator_wz
      - switch.nachttisch
      - switch.schlafzimmer_ventilator_fernseher_fernseher
      # abfragen
      - input_boolean.test_schalter
  entity_config:
    script.fenster:
      name: "offene Fenster"
      display_categories: SCRIPT

wo habe ich einen Fehler gemacht?
Danke und Gruß

Micha

Hallo Micha und herzlich willkommen im Forum. Du musst das Script auch in die include_enities einfügen.

Danke Heiko,

jedes mal wenn ich es versuche das Skript in die include zu setzen bekomme ich ganz viele Fehler Meldungen
wie zum Beispiel

schreibe ich hingegen

smart_home:
  locale: de-DE
  endpoint: https://api.eu.amazonalexa.com/v3/events
  filter:
    include_entities:
      # Lichter
      - light.buro
      - light.esszimmer
      - light.wohnzimmer
      - light.sleepingroom_licht
      - light.terrasse
      # Steckdosen
      - switch.tasmota_2
      - switch.fernseher_sideboard_wohnzimmer_fernseher_wohnzimmer
      - switch.ventilator_wz
      - switch.ecklampe
      - switch.ventilator_wz
      - switch.nachttisch
      - switch.schlafzimmer_ventilator_fernseher_fernseher
      # abfragen
      - input_boolean.test_schalter
      # script    
      - script.fenster:
          name: "Fenster"
          display_categories: SCRIPT

kommt folgende Meldung beim prüfen

Invalid config for 'alexa' at alexa.yaml, line 5: value should be a string for dictionary value 'alexa->smart_home->filter->include_entities', got ['light.buro', 'light.esszimmer', 'light.wohnzimmer', 'light.sleepingroom_licht', 'light.terrasse', 'switch.tasmota_2', 'switch.fernseher_sideboard_wohnzimmer_fernseher_wohnzimmer', 'switch.ventilator_wz', 'switch.ecklampe', 'switch.ventilator_wz', 'switch.nachttisch', 'switch.schlafzimmer_ventilator_fernseher_fernseher', 'input_boolean.test_schalter', {'script.fenster': {'name': 'Fenster', 'display_categories': 'SCRIPT'}}]

Ich verstehe “noch” nicht wo das Problem ist

Edit:
ich habe keine Ahnung was und wie ich es in die alexa.yaml schreiben soll

Es gibt Entitäten, bei denen Alexa selbst erkennt, um welche Displaykategorie es sich handelt, dazu gehören beispielsweise Lichter und Schalter. Da brauchst Du einen Eintrag in der entity_config nur, wenn Du ihnen für Alexa einen speziellen Namen geben möchtest. Bei Skripten brauchst Du diesen Eintrag schon wegen der Kategorie, aber den Eintrag in den include_entities benötigst Du trotzdem. Das muss dann so aussehen:

smart_home:
  locale: de-DE
  endpoint: https://api.eu.amazonalexa.com/v3/events
  filter:
    include_entities:
      # Lichter
      - light.buro
      - light.esszimmer
      - light.wohnzimmer
      - light.sleepingroom_licht
      - light.terrasse
      # Steckdosen
      - switch.tasmota_2
      - switch.fernseher_sideboard_wohnzimmer_fernseher_wohnzimmer
      - switch.ventilator_wz
      - switch.ecklampe
      - switch.ventilator_wz
      - switch.nachttisch
      - switch.schlafzimmer_ventilator_fernseher_fernseher
      # abfragen
      - input_boolean.test_schalter
      # Skripte
      - script.fenster
  entity_config:
    script.fenster:
      name: "offene Fenster"
      display_categories: SCRIPT
1 „Gefällt mir“

ich danke dir recht herzlich, da hätte ich noch lange probieren können, darauf wäre ich nie gekommen.

Gerne, freut mich, dass ich helfen konnte.

1 „Gefällt mir“

Kleiner Nachtrag, bzw. einen Hinweis.

bei meiner HA Version
image

hat sich das wohl geändert
von:

- script.fenster
  entity_config:
    script.fenster:
      name: "offene Fenster"
      display_categories: SCRIPT

zu

- script.1705080641098
  entity_config:
    script.1705080641098:
      name: "offene Fenster"
      display_categories: SCRIPT

Es muss wohl die Script ID benutzt werden.

Ja, das ist immer so. Ich dachte, das sei die ID. Wenn Du ein neues Skript anlegst, dann leg immer gleich oben den Namen dafür fest. Dann wird die ID nach dem Namen generiert. Wenn Du ohne Namen abspeicherst, wird eine solche kryptische ID vergeben. Aber Du kannst die ID auch noch nachträglich ändern, dann hast Du es bei solchen Dingen einfacher.

danke für den Hinweis.
Als IOB Wechsler ist das alles nicht so einfach, auch wenn es einfach aussieht.

nochmal tausend dank

Danke für diesen Thread an alle Beteiligten, es hat mir sehr geholfen.
Mein nun mittlerweile funktionierendes Script sieht so aus:

alias: Abfrage Fenster und Türen offen
sequence:
  - data: {}
    action: alexa_media.update_last_called
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
  - if:
      - condition: state
        entity_id: binary_sensor.alle_fenster_und_turen
        state: "on"
    then:
      - data:
          data:
            type: tts
            method: speak
          message: |-
            Folgende Fenster und Türen sind noch offen: {{
            expand('binary_sensor.alle_fenster_und_turen')
               | selectattr('state', 'eq', 'on') 
               | map(attribute='name') 
               | list 
               | join (', ')
            }}
        action: notify.alexa_media_last_called
    else:
      - data:
          data:
            type: tts
            method: speak
          message: Es sind keine Fenster oder Türen geöffnet.
        action: notify.alexa_media_last_called
mode: single
description: ""
icon: mdi:window-open-variant

Nun möchte ich erreichen, dass Alexa mir nicht immer den gleichen Satz vorliest, wenn alles geschlossen ist.
Versucht habe ich folgendes im letzten Abschnitt des Scripts:

    else:
      - data:
          data:
            type: tts
            method: speak
          message: >
            {% set alexa_text = [ "Ja,Alles iss zu ", "Ja,Türen und Fenster sind
            momentan alle zu ", "Ja,alle Türen und Fenster sind geschlossen " ]
            | random %}
        action: notify.alexa_media_last_called
mode: single
description: ""
icon: mdi:window-open-variant

Da kommt aber nichts von Alexa, wenn ich das Script so verwende, nur das einleitende “okay” und dann nichts mehr. Kann mir da jemand vielleicht behilflich sein? Das wäre klasse.

2te Frage noch: Das einleitende “okay” bei der Antwort, das bekommt man nicht weg, oder? Ich habe schon mal in der App auf kurze Antworten gestellt, aber dann kommt ein kurzer Ton, da finde ich “okay” dann doch besser. Von tts auf announce habe ich auch mal versucht, aber dann kommt das “okay” plus ein (anderer) Ton :smile:

Wurde gelöst von ChatGPT:

          message: >
            {{ [
              "Ja, alles ist zu.",
              "Ja, Türen und Fenster sind momentan alle zu.",
              "Ja, alle Türen und Fenster sind geschlossen."
            ] | random }}
        action: notify.alexa_media_last_called

Um Alexa zufällig eine Nachricht aus einer Auswahl vorlesen zu lassen, kannst du die Jinja2-Template-Engine von Home Assistant verwenden. Du kannst dabei eine zufällige Auswahl aus einer Liste von Nachrichten treffen, indem du den random-Filter verwendest.

Änderungen:

  1. Die message-Zeile für den Fall, dass alle Fenster und Türen geschlossen sind, wurde angepasst, um eine zufällige Auswahl aus drei verschiedenen Nachrichten zu treffen. Dies geschieht mit der Liste und dem random-Filter.

Das Skript wählt jetzt zufällig eine der drei Nachrichten aus, wenn alle Fenster und Türen geschlossen sind.

1 „Gefällt mir“