Automatyzacja minutnik

Cześć,

Chciałbym zrobić automatyzację za pomocą wbudowanych automatyzacji w HA, która po wystartowaniu pomocnika “minutnik” włączy mi światło na czas trwania odliczania. Dodałem pomocnik minutnik Jednak nijak nie mogę wykonać automatyzacji. Próbowałem wyzwalacza “Stan” i przez chwilę działo mi włączanie jednak po skończeniu odliczania nie wyłączało światła.
Proszę o pomoc

:thinking:
Alla coś takiego

  alias: Włącz światło - minutnika
  trigger:
    - platform: state
      entity_id: timer.test    # twój pomocnik "minutnik"
      to: 'active'
  action:
    - service: light.turn_on
      entity_id:  light.stolik_1
    - delay: "{{ states('timer.test') }}"
    - service: light.turn_off
      entity_id: light.stolik_1 

:information_source: nie testowałem

Podpowiesz gdzie to mam wpisać? Tutaj “/config/configuration.yaml” ?

Automatyzacji:
Opcja 1
.Dodaj , nową automatyzacje, po prawej 3 kropeczki Edycjia w YAML. wklej kod zmień na Edytuj w edytorze wizualnym i pozmieniaj na własne encje i dostosuj do potrzeb

Opcja 2
Utwórz plik automations.yaml w folderze config

I tam dodaj kod

Pozmieniałem pod swoje encje i włącza światło lecz nie wyłącza

alias: Włącz światło - minutnika
description: ""
trigger:
  - platform: state
    entity_id: timer.stolik_1
    to: active
action:
  - service: switch.turn_on
    entity_id: switch.sonoff_1000f46fe1_3
  - delay: "{{ states('timer.stolik_1') }}"
  - service: switch.turn_off
    entity_id: switch.sonoff_1000f46fe1_3

Ja zrobiłem tak
Pomocnik timer.mminutnik
Pomocnik input_number.ile_sekund od 10 do 300

Automatyzacji:

 alias: Włącz światło - minutnika
description: ""
trigger:
  - platform: state
    entity_id: timer.mminutnik
    to: active
action:
  - service: light.turn_on
    data: {}
    target:
      entity_id:
        - light.garaz
  - delay: "{{ states('input_number.ile_sekund') }}"
  - service: light.turn_off
    data: {}
    target:
      entity_id:
        - light.garaz

Nieaktywny
ScreenShot_20230821212724
Suwakiem ustawiasz ile sekund ma działać i aktywujesz minutnik
Aktywny:
ScreenShot_20230821212835
U mnie działa :grinning:

Jeśli potrzebujesz stałych przedziałów czasu np. po 20 sekundach, po 2 minutach włącz i wyłącz światło
Lepiej jest zrobić kilka Skryptów
/
Np. Skrypt

alias: "Włącz światło w garażu na 1 minutę  "
sequence:
  - service: light.turn_on
    data: {}
    target:
      entity_id: light.garaz
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - service: light.turn_off
    data: {}
    target:
      entity_id: light.garaz
mode: single

Po kliknięciu włączy i po 1 minucie wyłączy światło
/
Ten skrypt jest “kompletny” nie potrzebuje dodatkowych danych wejściowych (minutnika…)
W delay:zmieniasz tylko czas po jakim opóźnieniu ma wykonać następną akcje, w tym przypadku jest ustawiona 1 minuta.
Jeśli potrzebujesz np. 3 skrypty ( wyłącz po 1 godzinie,2,3)

Opóźnienie 1h

  - delay:
      hours: 1
      minutes: 0
      seconds: 0
      milliseconds: 0

:information_source:
service: light.turn_on - włącz światło (żarówka)
Jeśli oświetlenie masz przez włącznik, gniazdko musisz zastosować
service: switch.turn_on

Czy ten skrypt sam Ci wrzuca czas z suwaka do minutnika? Nie umiem tego wykonać. Mi zależy mieć możliwość ustawiania 1 godzina 2 lub trzy

Ok z innej beczki:
Dodaj pomocnika np. przez wpis w configuration.yaml

input_number:
  ile_minut:
    name: Światło w garażu ile minut
    initial: 20
    min: 1
    max: 120
    step: 1

max: 120- max ile minut (możesz zmienić do zapotrzebowania )

lub przez interfejs HA.

Następnie stwórz automatyzacje:

alias: Włącz i wyłącz światło w garażu po czasie
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.ile_minut
action:
  - service: light.turn_on
    entity_id: light.garaz
  - delay:
      minutes: "{{ states('input_number.ile_minut') | int }}"
  - service: light.turn_off
    entity_id: light.garaz
mode: single

Podmień encje ( light.garaz na light.xxx)
Przeładuj konfiguracje HA (Narzędzia deweloperskie lub sprawdź poprawność HA i restart)

Dodaj nową kartę np. encje lub pusta i wklej ten kod:

type: entities
entities:
  - entity: light.garaz
  - entity: input_number.ile_minut
    secondary_info: last-changed
state_color: true

:information_source:
light.garaz- podmień na swoje oświetlenie
secondary_info: last-changed - jest to dodatkowa informacja o ostatniej zmianie stanu ( nie jest wymagana).

Teraz kiedy przesuniesz suwak np. na 20 to automatycznie włączy się światło i po 20 minutach się wyłączy
Efekt: :grinning:
ScreenShot_20230822212736

Twoje rozwiązanie działa :slight_smile: jednak jeszcze brakuje mi jakiegoś licznika, który pokazywałby czas pozostały do wyłączenie stąd planowałem wykorzystać minutnik :slight_smile:

:thinking:
Zależy jakiego formatu potrzebujesz, jeśli 01:16:41 (godzina .minuta.sekunda)
To możesz stworzyć sensor, który będzie zliczał czas do “końca” czasu ( :grinning:) a następnie wyświetli się napis
“Jest wyłączone”

...
          state: >-
          {% if is_state('light.garaz', 'on') and states('input_number.ile_minut') %}
            {% set time_remaining = (states('input_number.ile_minut') | int * 60) - ((as_timestamp(now()) - as_timestamp(states.light.garaz.last_changed))) %}
            {% if time_remaining > 0 %}
              {{ time_remaining | timestamp_custom('%H:%M:%S', false) }}
            {% else %}
              00:00:00
            {% endif %}
          {% else %}
            Jest wyłączone
          {% endif %}

ScreenShot_20230826181116

/
Jeśli nic nie zmieniałeś w konfiguracji HA
To dodaj wpis do configuration.yaml

template:
  - sensor:
      - name: "Pozostały czas światła w garażu"
        unit_of_measurement: "°C"
        state: >-
          {% if is_state('light.garaz', 'on') and states('input_number.ile_minut') %}
            {% set time_remaining = (states('input_number.ile_minut') | int * 60) - ((as_timestamp(now()) - as_timestamp(states.light.garaz.last_changed))) %}
            {% if time_remaining > 0 %}
              {{ time_remaining | timestamp_custom('%H:%M:%S', false) }}
            {% else %}
              00:00:00
            {% endif %}
          {% else %}
           Jest wyłączone
          {% endif %}




Zapisz, sprawdź poprawność , przeładuj lub restartHA

Można w configuration.yaml ale po jakiś czasie będziesz miał tysiące linii kodu, dlatego HA ma możliwość rozbicia konfiguracji na mniejsze “części”

automation.yaml
template.yaml
switch.yaml
device_tracker.yaml
customize.yaml

Po dodaniu “template.yaml” w folderze config
Następnie, sensory template umieszczamy w tym pliku, podobnie kamery do camera.yaml itp.

Podzielenie konfiguracji:

Tworzenie sensorów:

Przepraszam, że tak męczę. Gdzie mam dodać ten kod ?

@Pawel_LSK
jeśli się pytasz o ten to do configuration.yaml

edit: tylko musiałem wykasować tą linię, bo inaczej nie chciało działać

unit_of_measurement: "°C"
1 polubienie