Automatyzacja źle ustawia zmianę prędkości wentylatorów

Mam dwa wentylatory łazienkowe (nawiew i wywiew). Sterowane 0-10V. Automatyzacja miała polegać na tym aby włączyć za określony czas wentylatory na maksa, później na troszkę mniej i jeszcze później na kolejne troszkę mniej. Chodzi o to, że jednak je słychać w domu, i aby były mniej upierdliwe. Zrobiłem automatyzacją jak z poniżej i jak na telefonie patrzę na jaką prędkość mi ustawia wentylatory, to jest ona inna niż w automatyzacji. Kroki są następujące:

  • 74%
  • 33%
  • 17%

A ustawia:

  • 74%
  • 41%
  • 24%

Kodu nie pisałem w YAML, wyklikałem go a następnie przełączyłem na YAML, aby go tutaj zacytować.


alias: wyjscie_z_lazienki
description: ""
trigger:
  - platform: state
    entity_id:
      - light.esphome_web_83abac_wiatlo_r2_azienka
    from: "on"
    to: "off"
condition: []
action:
  - action: fan.turn_on
    metadata: {}
    data:
      percentage: 74
    target:
      entity_id:
        - fan.esphome_web_1c97e4_fan_4
        - fan.esphome_web_1c97e4_fan_5
  - delay:
      hours: 0
      minutes: 0
      seconds: 20
      milliseconds: 0
  - condition: state
    entity_id: light.esphome_web_83abac_wiatlo_r2_azienka
    state: "off"
  - action: fan.decrease_speed
    metadata: {}
    data:
      percentage_step: 33
    target:
      entity_id:
        - fan.esphome_web_1c97e4_fan_4
        - fan.esphome_web_1c97e4_fan_5
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - condition: state
    entity_id: light.esphome_web_83abac_wiatlo_r2_azienka
    state: "off"
  - action: fan.decrease_speed
    metadata: {}
    data:
      percentage_step: 17
    target:
      entity_id:
        - fan.esphome_web_1c97e4_fan_4
        - fan.esphome_web_1c97e4_fan_5
  - delay:
      hours: 0
      minutes: 0
      seconds: 15
      milliseconds: 0
  - condition: state
    entity_id: light.esphome_web_83abac_wiatlo_r2_azienka
    state: "off"
  - action: fan.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - fan.esphome_web_1c97e4_fan_4
        - fan.esphome_web_1c97e4_fan_5
mode: single

kod jest błędny - nie ustawiasz wartości tylko zmniejszasz obecną o jakiś X
74-33=41
41-17=24

zmień

    data:
      percentage_step: XX

na

    data:
      percentage: XX
2 polubienia

Nie sądziłem, że rozwiązanie jest tak banalnie proste. :wink:
Ale to nie koniec kłopotów. Teraz dołożyłem warunek, że aby przejść do kolejnych zmian prędkości musi być zgaszone światło w łazience (nikt nie wszedł do środka itp, itd… i nie rozpoczął nowej procedury… i jeśli jest zgaszone to automatyzacja jest kontynułowana. Jeśli się świeci, to koniec.

Analogicznie chciałem zrobić jeśli ktoś zmieni nastawy prędkości wentylatorów. To znaczy, że jeśli ustawi coś ręcznie (zmieni z tego, co założyłem w automatyzacji na inną wartość, to automatyzacja jest zakończona). Wentylatory pracują w trybie ręcznym itd… Oczywiście lepiej byłoby na jakiejś zmiennej globalnej, ale na razie nie chce wchodzić na ten poziom. Wyłożyłem się na porównaniu prędkości wentylatorów aktualnej z prędkością w warunku. Podczas śledzenia automatyzacji (trzeba sobie odświeżać ekran), mam komunikat:

Wynik:
result: false
state: 74
wanted_state: '74'

Jedna wartość to string, a druga integer. Czyli rzeczywista wartość jest liczbowa, a w warunku automatyzacja traktuje mój wpis 74, jako stringa ‘74’. Czy dobrze rozumiem?

Jak zatem zrobić, aby potraktowała mój wpis w warunku, że 74 to wartość liczbowa? Przeedytować YAML’a?

Do warunkowania w automatyzacjach sprawdzają się dobrze pomocnicy (Settings > Devices & services > Helpers). Te wirtualne byty przydają się w różnych zastosowaniach w całym HA.
Tu przykład:
Input boolean - Home Assistant (home-assistant.io)