Czujnik Duty Time w ESPHome pozwala śledzić całkowity czas pracy jakiegoś urządzenia (np. żarówki) w sekundach, potrafi również obliczyć ostatni czas włączenia, gdy opcjonalny czujnik last_time
jest uwzględniony w konfiguracji.
Przykład na podstawie Shelly2.5:
output:
- platform: gpio
pin: GPIO4
id: shelly_output_1
- platform: gpio
pin: GPIO15
id: shelly_output_2
light:
- platform: binary
name: "shelly25 light"
output: shelly_output_1
id: shelly_relay_1
switch:
- platform: output
name: "shelly25 relay"
output: shelly_output_2
id: shelly_relay_2
sensor:
- platform: duty_time
id: relay_1_work_time
name: "shelly25 light work time"
lambda: |-
if (id(shelly_relay_1).current_values.is_on()) {
return 1;
}
else {
return 0;
}
# Sensor for last turn-on time (optional)
last_time:
name: "shelly25 light last turn-on"
update_interval: 10s
- platform: duty_time
id: relay_2_work_time
name: "shelly25 relay 2 work time"
lambda: 'return id(shelly_relay_2).state == 1;'
# Sensor for last turn-on time (optional)
last_time:
name: "shelly25 relay last turn-on"
update_interval: 10s
Efekt końcowy:
Shelly2.5 wykorzystuję do sterowania światłem nad lustrem i podgrzewaniem lustra (mata grzewcza), do wejść modułu podłączony jest podwójny przycisk zwierny (dzwonkowy). Pojawiło się ryzyko, że domownicy zapomną wyłączyć podgrzewania lustra (brak stanu włączenia na przycisku) a to może mieć przykre skutki (np. wysoki rachunek za prąd). Czujnik duty_time
wykorzystałem do ograniczenia maksymalnego czasu pracy podgrzewania lustra, po przekroczeniu zadanego czasu następuje automatyczne wyłączenie przekaźnika (shelly_relay_2
), kod po modyfikacji:
sensor:
- platform: duty_time
id: relay_2_work_time
name: ${devicename} relay work time
lambda: 'return id(shelly_relay_2).state == 1;'
# Sensor for last turn-on time (optional)
last_time:
name: ${devicename} relay 2 last turn-on
update_interval: 10
on_value_range:
- above: 300 # maksymalny zadany czas pracy [s]
then:
- switch.turn_off: shelly_relay_2
switch:
- platform: output
name: "${devicename} relay 2"
output: shelly_output_2
id: shelly_relay_2
on_turn_on:
then:
- sensor.duty_time.reset: relay_2_work_time
efekt końcowy: automatycznie po zadanym czasie 300s (+ czas oświeżania sensora - update_interval
) przekaźnik wyłącza się, czas pracy (work time) i czas ostatniego włączenia (last turn-on) są takie same:
Tak gdzie jest to możliwe automatyzacje piszę na sterownikach, w ESPHome a nie w HA dzięki czemu ograniczam ryzyko nieprawidłowego działania.
cdn …