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

Hallo,
bei mir war der Fehler, dass ich die Leerzeichen für die Alexanwendung nicht gemacht habe. Auch musste ich noch in der Alexa-App die Geräte Aktualisieren.

Dann bin ich wie folgt vorgegangen:
Routine programmieren

  1.  Alexa-App am Handy starten
    
  2.  Rechts unten auf die 3 Striche Mehr klicken
    
  3.  Auf Routine klicken
    
  4.  Oben rechts auf das Pluszeichen klicken
    
  5.  Routinenname vergeben (Dies ist nicht der Befehl mit der man die Routien aufruft.
    
  6.  Rechts oben auf  Weiter klicken
    
  7.  Auf Wenn folgendes passiert klicken
    
  8.  Auf  Stimme klicken
    
  9. Frage zum Aufrufen des Scriptes schreiben z.B.
    

Alexa, was ist noch offen

  1. Oben rechts auf  Weiter klicken
    
  2. Auf Aktion hinzufügen klicken
    
  3. Smart Home anklicken
    
  4. Nach unten scrollen  und Szenen ankklicken
    
  5. Fenster_offen anklicken
    
  6. Szene An  auswählen
    
  7. Oben rechts auf Weiter klicken
    
  8. Oben rechts auf Speichern klicken
    

Die Gerätesuche ist überall die gleiche, und was gefunden wird, ist dann in jeder Anwendung zu sehen. Du kannst auch einfach sagen: “Alexa, suche Geräte”. Wichtig ist aber, dass Du jedes Mal eine neue Suche startest, wenn Du etwas hinzugefügt hast.

Ich habe den Fehler bei mir gefunden - das script bei mir heißt nicht so wie ich es genannt habe und wie es angezeitg wird, sondern hat vom HA eine Zahlenfolge als Namen zugewiesen bekommen - diese kann ich nicht ändern. D.h. nachdem ich den von mir gewählten Namen des scriptes gegen diese Zahlenfolge getauscht habe kann ich es endlich auch über Alexa ausführen lassen. Manchmal glaubt man, man wird verrückt, wenn eigentlich alles richtig ist, abern es funktioniert nicht - alle Protokolle sauber… Aber der Watchman hat mich auf die richtige Spur gebracht :slight_smile:

Hallo Heiko - Du hast geschrieben, dass Du die Routine erweitert hast, um bei allen geschlossenen Fenstern eine “dann” Funktion zu erstellen. Wie hast Du fas gemacht - erst alle Sensoren abfragen und wenn keiner aktiv ist auf “dann” springen lassen - oder gibt es einen schlankeren Weg?

Prima, dass es geklappt hat. :slight_smile: In der Wenn-dann-Funktion fragst Du einfach den Zustand Deines Alle-Fenster-Helfers ab. Die Gruppe steht so lange auf on (offen), bis alle Fenster zu sind. Dann schaltet sie auf off (geschlossen) Bei mir sieht das Ganze so aus:

if:
  - condition: state
    entity_id: binary_sensor.fenster_alle_gruppe
    state: "on"
then:
  - service: notify.alexa_media_last_called
    data:
      data:
        type: tts
      message: |-
        Ja: {{ expand('binary_sensor.fenster_alle_gruppe')
           | selectattr('state', 'eq', 'on') 
           | map(attribute='name') 
           | list 
           | join (', ')
           | replace('Balkontür SZ', 'Balkontür Schlafzimmer')
           | replace('Terrassentür Griff contact', 'Griff Terrassentür')
           | replace('Fenster Toilette', 'Fenster Gäste-WC')
        }}
else:
  - service: notify.alexa_media_last_called
    data:
      data:
        type: tts
      message: Es sind keine Fenster oder Türen geöffnet.

stimmt - es macht Sinn direkt die Gruppe abzufragen - das macht es einfacher. Danke für die Info - das probiere ich aus.

Hallo zusammen,

ich hätte eine Frage zu dem Befehl- service: notify.alexa_media_last_called

Bei mir funktioniert dieser nur, wenn ich zuvor Alexa aktivierte, in dem ich zum Beispiel frage:
Alexa wie viel Uhr ist es.

Wenn ich dann meine Routine in Alexa mit dem Befehl “Status Fenster” starte, zählt mir Alexa alle Fenster auf die offen sind.

Gehe ich jetzt aber von der Küche ins Wohnzimmer und frage dort : Alexa, Status Fenster, antwortet mir Alexa nicht im Wohnzimmer, sondern in der Küche.

Auch wenn ich erneut im Wohnzimmer frage; Alexa Status Fenster, wird immer noch in der Küche geantwortet.

Erst wenn ich im Wohnzimmer zuvor frage, Alexa wie viel Uhr ist es, und dann Alexa Status Fenster,
Antwortet mir Alexa im Wohnzimmer.

Wenn ich dann wieder frage; Alexa Status Fenster, antwortet er mir im Wohnzimmer, ohne dass ich zuvor Alexa, wie viel Uhr ist es, fragen muss.

Habt ihr auch solch ein Problem mit diesem Befehl?

Vielen Dank
Frank

Hi Frank,

Du musst den Service alexa_media.update_last_called davorschalten:

- service: alexa_media.update_last_called
    data: {}
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
    enabled: true

Damit wird die Ausgabe auf den angesprochenen Echo gelegt.

Gruß Heiko

Hallo Heik,

ich selber habe das nicht hinbekommen. Franky vom Forum hier, hatte das netterweise erstellt.

alias: fenster_offen
sequence:
  - service: notify.alexa_media_last_called
    data:
      message: >-
        {% set status = expand('binary_sensor.fenster_offen')  |
        selectattr('state', 'eq', 'on')                |
        map(attribute='name')                | list                | join (', ')
        %}        

        {% if status == '' %}            {{ status|replace("", "Alle Fenster und
        Türen sind geschlossen!") }}       {% else %}           
              Folgende Fenster und Türen sind noch offen: {{status}}       
        {% endif %}
mode: single
icon: mdi:window-open

Aber so wie es aussieht, ist der Service notify.alexa_media_last_called gleich am Anfang.
Oder, könntest du mir bitte die Zeilen einfügen?
Alleine mit den vielen Einzügen usw. komme ich nicht wirklich klar.
Versuche im Urlaub mich da ein wenig reinzufuchsen.

Vielen Dank
Frank

Hi Frank,

so müsste das aussehen:

alias: fenster_offen
sequence:
  - service: alexa_media.update_last_called
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
  - service: notify.alexa_media_last_called
    data:
      message: >-
        {% set status = expand('binary_sensor.fenster_offen')  |
        selectattr('state', 'eq', 'on')                |
        map(attribute='name')                | list                | join (', ')
        %}        

        {% if status == '' %}            {{ status|replace("", "Alle Fenster und
        Türen sind geschlossen!") }}       {% else %}           
              Folgende Fenster und Türen sind noch offen: {{status}}       
        {% endif %}
mode: single
icon: mdi:window-open

Gruß Heiko

1 „Gefällt mir“

Hallo Heiko,

super vielen Dank. Jetzt funktioniert es über all, ohne dass ich zuvor
Alexa nach der Uhrzeit fragen muss.

Danke Dir
Frank

Hi Frank,

prima, freut mich, dass es läuft.

Gruß Heiko

Hallo zusammen, hallo Heiko,

ch habe mir einen neuen Echo.dot. Generation 5 gekauft.
In den Automationen habe ich diesen ergänzt. Funktioniert auch super.
Entität: media_player.alexa_echo_dot_5

Nur beim Script funktioniert er nicht.
Wenn ich wie gewohnt frage: “Alexa Status” kommen die zwei Signaltöne, jedoch spricht er nicht welche Fenster bzw. Türen offen sind.

Ich hatte den echo_dot_5 zuvor umbenannt. Kann es daran liegen?
Im Script selber kann man ja den neuen Namen nicht angeben.

`alias: fenster_offen
sequence:
  - service: alexa_media.update_last_called
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 2
  - service: notify.alexa_media_last_called
    data:
      message: >-
        {% set status = expand('binary_sensor.fenster_offen')  |
        selectattr('state', 'eq', 'on')                |
        map(attribute='name')                | list                | join (', ')
        %}        

        {% if status == '' %}            {{ status|replace("", "Alle Fenster und
        Türen sind geschlossen!") }}       {% else %}           
              Folgende Fenster und Türen sind noch offen: {{status}}       
        {% endif %}
mode: single
icon: mdi:window-open
`

Wo muss ich denn den neuen Echo.dot 5 noch eintragen, dass er mir auch hier die offenen Türen und Fenster vor liest.
Komme da leider nicht weiter.

System hatte ich auch komplett neu gestartet. Half leider auch nichts.
Alles andere funktioniert. Musikabspielen, Uhrzeit erfragen, Automation usw.

Überlegungen zum Fehler:

  • Ist vielleicht die Reaktionszeit für den neuen Echo.dot zu langsam
  • Fehlt ein Eintrag in der configuration.yamal.
  • habe ich in den Einstellungen des Echo.dot was verdummbeutelt

Vielen Dank
Frank

Problem gelöst.

Ich habe den Alexaname gekürzt auf Alexa_Pit
dann funktionierte es wieder.
(Musste halt für die Automationen die Entitäten neu anpassen.)

Vielen Dank
Frank

Hallo Zusammen,
ich habe hier das Thema gefunden, weil ich sowas umsestzen wollte.

Grundsätzlich klappt das Script, dass er mir vorliest, ob noch ein Fenster oder eine Tür offen ist.

Was allerdings leider nicht klappt, ist das vorlesen auf dem angesprochenen Echo.

Ich habe auch wie beschrieben das alexa_media.update_last_called und delay eingebaut.

Hier mal mein Code:

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
        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 keine Fenster oder Türen geöffnet.
mode: single

Hab ich hier irgendwo noch einen Denkfehler?

Nachtrag:
ich sehe gerade im Scriptablauf:

Executed: 23. Dezember 2023 um 14:22:08
Result:
params:
  domain: alexa_media
  service: update_last_called
  service_data: {}
  target: {}
running_script: false

Der service: update_last_called wurde also garnicht erst ausgeführt

Müsste eigentlich funktionieren. Aber schau mal nach, ob der Update-Dienst bei Dir auch genau so heißt. Ich glaube, da gibt es unterschiedliche Varianten.

Danke für den Tipp, aber der passt wohl so:

Komisch, bei mir funktioniert es wie immer. Zwischendurch war der Service mal down, aber das ist schon wieder eine Weile her.

kann bei sowas ein HA Neustart was bringen oder eher nicht?

Nachtrag:
Und ich gehe schon recht davon aus, dass hier

Executed: 23. Dezember 2023 um 17:59:09
Result:
params:
  domain: alexa_media
  service: update_last_called
  service_data: {}
  target: {}
running_script: false

bei running_script: true stehen müsste oder?

@HeikoBauer was hast du denn beim delay für eine Zahl?

Nein, das heißt wohl nur, dass kein Script im Aktion Teil aufgerufen wurde.
Stimmt ja auch, du rufst ja nur notify auf.

ah ok, dann muss mich da erst mal nicht wundern.

Hab jetzt einen neuen Stand. Habe mir vorhin mal einen Helper Templat angelegt um zu sehen, was in dem notify.alexa_media_last_called drin steht. Dieser wurde die ganze Zeit nicht gleich gesetzt.

Hab jetzt mal einen neustart von HA gemacht. der notify.alexa_media_last_called wird jetzt immer gleich gesetzt. Aber leider kommt nur manchmal die Ansage auf einem Echo raus.

das hier ist mein aktueller Code:

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 keine Fenster oder Türen geöffnet.
mode: single

Was jetzt schon mal gut ist, dass der alexa_media.update_last_called sauber gesestzt wird. Aber jetzt muss nur noch die Ansage danach auch wirklich zuverlässig rauskommen.

Nachtrag:
Ok, ich glaube ich weis jetzt warum die Ansage gerade nicht mehr zuverlässig kommt.

Der Service:
notify.alexa_media_last_called ist manchmal mit dem Namen zu finden und manchmal mit notify.alexa_media_last_called_xxx (wobei das xxx für meine Emailadresse von Alexa steht.

Ich habe im HA zwei Alexa Accounts verbunden.

Kann mir jemand sagen warum das dauern wechselt?