47eee0291f
revert Clean main branch
268 lines
11 KiB
YAML
268 lines
11 KiB
YAML
dishwasher:
|
|
|
|
# инпут для ввода времени отложенного старта
|
|
input_datetime:
|
|
dishwasher_startinrelative:
|
|
name: INPT|dishwasher_startinrelative
|
|
has_date: false
|
|
has_time: true
|
|
|
|
input_boolean:
|
|
dishwasher_needs_unloading:
|
|
name: Нужно разобрать посуду
|
|
icon: mdi:dishwasher
|
|
|
|
script:
|
|
dw_start_select_program:
|
|
alias: dw_start_select_program_relative
|
|
sequence:
|
|
- action: homeconnect_ws.start_program
|
|
data:
|
|
device_id: 0166c54489231f7edaf804c02ab6a652
|
|
start_in:
|
|
hours: "{{ state_attr('input_datetime.dishwasher_startinrelative', 'hour') }}"
|
|
minutes: "{{ state_attr('input_datetime.dishwasher_startinrelative', 'minute') }}"
|
|
seconds: "{{ state_attr('input_datetime.dishwasher_startinrelative', 'second') }}"
|
|
|
|
dw_stop_program:
|
|
alias: dw_stop_program
|
|
sequence:
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.bosch_dishwasher_abort
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "00:00:00"
|
|
target:
|
|
entity_id: input_datetime.dishwasher_startinrelative
|
|
|
|
dw_install_auto_45_65_extradry_extrarinse:
|
|
alias: dw_install_auto_45_65_extradry_extrarinse
|
|
sequence:
|
|
- service: select.select_option
|
|
data:
|
|
entity_id: select.bosch_dishwasher_selected_program
|
|
option: dishcare_dishwasher_program_auto2
|
|
|
|
dw_install_quick_65_extradry_extrarinse:
|
|
alias: dw_install_quick_65_extradry_extrarinse
|
|
sequence:
|
|
- service: select.select_option
|
|
data:
|
|
entity_id: select.bosch_dishwasher_selected_program
|
|
option: dishcare_dishwasher_program_quick65
|
|
|
|
dw_install_int_70_extradry_extrarinse:
|
|
alias: dw_install_int_70_extradry_extrarinse
|
|
sequence:
|
|
- service: select.select_option
|
|
data:
|
|
entity_id: select.bosch_dishwasher_selected_program
|
|
option: dishcare_dishwasher_program_intensiv70
|
|
|
|
dw_install_eco_50_extradry_extrarinse:
|
|
alias: dw_install_eco_50_extradry_extrarinse
|
|
sequence:
|
|
- service: select.select_option
|
|
data:
|
|
entity_id: select.bosch_dishwasher_selected_program
|
|
option: dishcare_dishwasher_program_eco50
|
|
|
|
dw_install_care:
|
|
alias: dw_install_care
|
|
sequence:
|
|
- service: select.select_option
|
|
data:
|
|
entity_id: select.bosch_dishwasher_selected_program
|
|
option: dishcare_dishwasher_program_machinecare
|
|
|
|
automation:
|
|
|
|
# ==========================================
|
|
# --- СБРОС ТАЙМЕРА ПРИ СТАРТЕ ---
|
|
# ==========================================
|
|
- id: dw_refresh_inp_dttm_dw
|
|
alias: "dw|refresh_inp_dttm_dw"
|
|
description: "Сброс времени отложенного старта"
|
|
mode: single
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.bosch_dishwasher_operation_state
|
|
from: null
|
|
to: "Run"
|
|
- platform: state
|
|
entity_id: sensor.bosch_dishwasher_operation_state
|
|
from: null
|
|
to: "DelayedStart"
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "00:00:00"
|
|
target:
|
|
entity_id: input_datetime.dishwasher_startinrelative
|
|
|
|
# ==========================================
|
|
# --- УВЕДОМЛЕНИЕ О ЗАВЕРШЕНИИ И РАЗБОРЕ ---
|
|
# ==========================================
|
|
- id: ntf_tg_dw_end_wash
|
|
alias: "ntf|tg|dw|end_wash"
|
|
description: "Уведомление о завершении мойки с проверкой открытия дверцы"
|
|
mode: single
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.bosch_dishwasher_operation_state
|
|
from: "Run"
|
|
to: "Finished"
|
|
action:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.dishwasher_needs_unloading
|
|
|
|
- repeat:
|
|
sequence:
|
|
# Отправляем уведомление в обе группы!
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- -1002006010424
|
|
- -1003233671944
|
|
message: "✅ <b>Мойка посуды завершена!</b> Необходимо разобрать её."
|
|
parse_mode: html
|
|
inline_keyboard:
|
|
- '🌊 Посудомойка:/dw_control'
|
|
- '🔙 Главное меню:/menu_back, 🗑️ Прочитано:/menu_hide'
|
|
|
|
# Ждем открытия дверцы до 3 часов
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.bosch_dishwasher_door
|
|
to: "on"
|
|
timeout: "03:00:00"
|
|
continue_on_timeout: true
|
|
|
|
# Если дверцу открыли
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.bosch_dishwasher_door
|
|
state: "on"
|
|
sequence:
|
|
- delay: "00:01:00"
|
|
# Проверяем, что она всё ещё открыта (посуду разбирают)
|
|
- condition: state
|
|
entity_id: binary_sensor.bosch_dishwasher_door
|
|
state: "on"
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- -1002006010424
|
|
- -1003233671944
|
|
message: "🎉 <b>Посудомойка успешно разобрана!</b>"
|
|
parse_mode: html
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.dishwasher_needs_unloading
|
|
until:
|
|
- condition: state
|
|
entity_id: binary_sensor.bosch_dishwasher_door
|
|
state: "on"
|
|
for:
|
|
minutes: 1
|
|
|
|
# ==========================================
|
|
# --- КОМАНДА: УСТАНОВКА ТАЙМЕРА (/time) ---
|
|
# ==========================================
|
|
- id: dw_install_time_startinrelative
|
|
alias: "dw|install_time_startinrelative"
|
|
mode: single
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: "/time"
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: "/time@ha_dddennnisss_bot"
|
|
action:
|
|
- choose:
|
|
# Вариант 1: формат HH:MM (например /time 14:30)
|
|
- conditions: >
|
|
{{ trigger.event.data.args is defined and
|
|
trigger.event.data.args | length > 0 and
|
|
':' in trigger.event.data.args[0] }}
|
|
sequence:
|
|
- variables:
|
|
time_parts: "{{ trigger.event.data.args[0].split(':') }}"
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "{{ '%02d:%02d:00' | format(time_parts[0] | int, time_parts[1] | int) }}"
|
|
target:
|
|
entity_id: input_datetime.dishwasher_startinrelative
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: "✅ Отложенный запуск через <b>{{ '%02d:%02d' | format(time_parts[0] | int, time_parts[1] | int) }}</b>"
|
|
parse_mode: html
|
|
inline_keyboard:
|
|
- '▶️ Старт программы:/toggle_dw_start, ❌ Сброс пуска:/toggle_dw_delay_clear'
|
|
- '🔙 Меню:/menu_back, 🌊 Посудомойка:/dw_control'
|
|
|
|
# Вариант 2: только минуты (например /time 45)
|
|
- conditions: >
|
|
{{ trigger.event.data.args is defined and
|
|
trigger.event.data.args | length > 0 and
|
|
trigger.event.data.args[0] | int(default=0) > 0 and
|
|
':' not in trigger.event.data.args[0] }}
|
|
sequence:
|
|
- variables:
|
|
minutes_only: "{{ trigger.event.data.args[0] | int }}"
|
|
target_hour: "{{ (minutes_only // 60) % 24 }}"
|
|
target_minute: "{{ minutes_only % 60 }}"
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "{{ '%02d:%02d:00' | format(target_hour, target_minute) }}"
|
|
target:
|
|
entity_id: input_datetime.dishwasher_startinrelative
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: "✅ Отложенный запуск через <b>{{ '%02d:%02d' | format(target_hour, target_minute) }}</b>"
|
|
parse_mode: html
|
|
inline_keyboard:
|
|
- '▶️ Старт программы:/toggle_dw_start, ❌ Сброс пуска:/toggle_dw_delay_clear'
|
|
- '🔙 Меню:/menu_back, 🌊 Посудомойка:/dw_control'
|
|
|
|
# Ошибка: неверный формат
|
|
default:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: "⚠️ Укажите время в правильном формате:\n<code>/time 14:30</code> (часы:минуты)\nили\n<code>/time 45</code> (только минуты)"
|
|
parse_mode: html
|
|
|
|
# ==========================================
|
|
# --- УВЕДОМЛЕНИЕ: МАЛО СОЛИ ---
|
|
# ==========================================
|
|
- id: ntf_tg_dw_salt_off
|
|
alias: "ntf|tg|dw_salt_off"
|
|
description: "Каждые 6 часов уведомлять, если соль закончилась"
|
|
trigger:
|
|
- platform: time_pattern
|
|
hours: "/6"
|
|
condition:
|
|
- condition: state
|
|
entity_id: sensor.bosch_dishwasher_salt
|
|
state: "nearly_empty"
|
|
action:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- -1002006010424
|
|
- -1003233671944
|
|
parse_mode: html
|
|
message: |
|
|
🧂❌ <b>Внимание!</b> Соль в посудомоечной машине почти закончилась.
|
|
Пожалуйста, пополните резервуар как можно скорее.
|
|
inline_keyboard:
|
|
- '🔙 Главное меню:/menu_back, 🗑️ Прочитано:/menu_hide' |