Powiadamianie głosowe o stanie czujnika

Dzień dobry.
Mam problem z powiadamianiem głosowym. Chciałbym powtarzać komunikat głosowy na głośniku google aż zostanie spełniony jakiś warunek. Problem polega na tym, że komunikat pojawia się tylko raz.
Oto moja automatyzacja:

alias: Alarm - zamknij okno w sypialni
description: ""
trigger:
  - platform: state
    entity_id:
      - input_boolean.abcd_test
    to: "on"
    from: "off"
    for:
      hours: 0
      minutes: 0
      seconds: 30
condition:
  - condition: state
    entity_id: switch.pc_tryb_zima
    state: "on"
action:
  - repeat:
      until:
        - condition: state
          entity_id: input_boolean.abcd_test
          state: "on"
      sequence:
        - service: script.turn_on
          data: {}
          target:
            entity_id: script.skrypt_1
        - delay:
            hours: 0
            minutes: 0
            seconds: 20
            milliseconds: 0
mode: single

oraz skrypt:

alias: Scrypt_zamknij_okno_w_sypialni
sequence:
  - service: media_player.volume_set
    data:
      volume_level: 0.9
    target:
      entity_id: media_player.google_nest_hub
  - service: tts.google_say
    data:
      entity_id: media_player.google_nest_hub
      message: wiadomość
  - delay:
      seconds: 3
  - service: media_player.volume_set
    data:
      entity_id: media_player.google_nest_hub
      volume_level: 0.4
mode: single

@Witek_K w takim przypadku musisz sprawdzić poszczególne elementy automatyzacji, najlepiej za pomocą narzędzi deweloperskich, w zakładce usługi odpal skrypt, odpalaj go ciągle bo w Twojej automatyzacji tak chcesz robić, jeżeli działa dobrze przejdź do analizy samej automatyzacji, cdn …

Dziękuję za szybką reakcję. Skrypt uruchamia się bez problemu. Mogę wysyłać widomość w kółko i nie ma problemu. Natomiast jak wejdę w ślad automatyzacji, to po 20 sekundowej pauzie w pętli jest komunikat “unknown” i automatyzacja się kończy:

A jaki stan ma ta encja? To warunek końca pętli.
A tak zaczynając od poczatku: co chcesz zrobić? Jaki cel chcesz osiągnąć? Pamietaj, że punkt widzenia zależy od punktu siedzenia. Może próbujesz zrealizowac “coś” co można zrealizować zupełnie inaczej :wink:

Encja ma stan “on”. Zrobiłem sobie wirtualny przełącznik, bo miałem dość otwierania okna.
Zrobić chcę komunikat przypominający o otwartym oknie. Działać powinien tak, że przypomina po pewnym czasie (powiedzmy 5 min) o zamknięciu okna od momentu otwarcia i powtarza komunikat co minutę, aż do zamknięcia okna.
Żona moja uwielbia wietrzyć sypialnię pomimo rekuperatora w domu i przeważnie jak otworzy okno to otwarte jest przez kilka godzin :wink: A później mówi, że zimno…

To moja automatyzacja jeżeli w czymś ci pomoże

alias: ostrzeżenie o oknie
description: ""
trigger:
  - type: opened
    platform: device
    device_id: c0c746e955091616fb33e2f98d29e737
    entity_id: binary_sensor.drzwi_z_lazienka_contact
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - type: opened
    platform: device
    device_id: c0c746e955091616fb33e2f98d29e737
    entity_id: binary_sensor.drzwi_z_lazienka_contact
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 20
      milliseconds: 0
condition: []
action:
  - repeat:
      count: "4"
      sequence:
        - service: media_player.play_media
          data:
            media_content_id: amzn_sfx_doorbell_chime_01
            media_content_type: sound
          target:
            entity_id:
              - media_player.artur_s_echo_dot
        - service: notify.alexa_media
          data:
            message: Please close your windows
            target:
              - media_player.artur_s_echo_dot
            data:
              type: tts
        - delay:
            hours: 0
            minutes: 3
            seconds: 0
            milliseconds: 0
mode: single

Głośnik nie przechodzi ci czasem w idle i dlatego dalej nie działa ?

Dzięki @artpc ! Jednak mi chodzi o powtarzanie do spełnienia warunku. I chyba się udało.

Niesamowite… Jednak nie rozumiem… Zmieniłem w automatyzacji na:

action:
  - repeat:
      until:
        - condition: state
          entity_id: input_boolean.abcd_test
          state: "off"

i działa… Zawsze myślałem, że “until” to znaczy dopóki coś trwa… To jakby należy czytać, że powtarzaj dopóki nie osiągnie stanu… zamiast dopóki jest jakiś stan… Czy to błąd HA?

action:
  - repeat:
      until:
        - condition: state
          entity_id: input_boolean.abcd_test
          state: "on"
action:
  - repeat:
      until:
        - condition: state
          entity_id: input_boolean.abcd_test
          state: "off"

Logicznie, powtarzaj dopóki nie będzie off (okno zamknięte)
Nie zapomnij o ładnym komunikacie dla żony

Żona informatyka mówi do męża:
- Kochanie zamknij okno.
- Jasne alt+f4.

Były inne myśli: zabić okno dechami, zamontować siłownik do zamykania okna po 5 minutach… O wymianie żony nie myślałem :slight_smile:
Dzięki. Czytałem - powtarzaj dopóki jest “on” zamiast powtarzaj aż nie będzie “off”.
Pozdrawiam.

W podobnych przypadkach używam funkcjonalności Alert - Home Assistant a powiadomienia głosowe idą bezpośrednio na telefony, głośnik zawsze można uciszyć wyciągając go z gniazdka, telefonu raczej nikt nie będzie chciał wyłączyć :wink:.

Można. Jednak alarmy nie obsługują tts, a w domu właśnie telefon jest odłożony na półkę. Głośnik mam google Nest i robi za ramkę do zdjęć. Działa od dwóch lat jak tylko jest prąd. A jest prawie zawsze :wink:

Powiadomienia w HA w usłudze notify obsługują TTS - Notify using TTS - Home Assistant, przyklad jak skorzystać https://www.slacker-labs.com/blog/2022/04/13/home-assistant-alerts.

Masz rację @macek. Dowodzi to tego, że w HA można wszystko zrobić na kilka sposobów.