438 lines
20 KiB
YAML
438 lines
20 KiB
YAML
# взято тут https://sprut.ai/article/odin-iz-variantov-upravleniya-pylesosom-1c-stytj01zhm-dreame-vacuum-mc1808-iz-home-assistant
|
|
select_vacuum_clean_rooms:
|
|
|
|
xiaomi_miot:
|
|
language: ru
|
|
translations:
|
|
# Global dictionary
|
|
'强劲': 'Турбо'
|
|
'标准': 'Стандартный'
|
|
'节能': 'Средний'
|
|
'关': 'Бесшумный'
|
|
'低': 'Низкий'
|
|
'中': 'Средний'
|
|
'高': 'Высокий'
|
|
'Sweep': 'Пылесос'
|
|
'Sweep And Mop': 'Пылесос и влажная уборка'
|
|
'Mop': 'Влажная уборка'
|
|
'Global': 'Авто'
|
|
'Edge': 'Очистка углов'
|
|
'Point': 'Точечная'
|
|
'Remote': 'Дистанционная'
|
|
'Mi Robot Vacuum-Mop 2 Lite Robot Cleaner Режим': 'Режим уборки'
|
|
'Mi Robot Vacuum-Mop 2 Lite Robot Cleaner Sweep Type': 'Вид уборки'
|
|
'Mi Robot Vacuum-Mop 2 Lite sweep water_state': 'Уровень воды'
|
|
'starting': 'Начало уборки'
|
|
'charger disconnected': 'Зарядное устройство отключено'
|
|
'idle': 'Ожидание'
|
|
'remote control active': 'Включено управление через пульт'
|
|
'cleaning': 'Уборка'
|
|
'returning home': 'Возвращение на базу'
|
|
'manual mode': 'Ручной режим'
|
|
'charging': 'Зарядка'
|
|
'charging problem': 'Проблема с зарядкой'
|
|
'paused': 'Пауза'
|
|
'spot cleaning': 'Уборка точки'
|
|
'error': 'Ошибка'
|
|
'shutting down': 'Выключение'
|
|
'updating': 'Обновление'
|
|
'docking': 'Остановка у базы'
|
|
'going to target': 'Направление до точки'
|
|
'zoned cleaning': 'Уборка зоны'
|
|
'segment cleaning': 'Уборка'
|
|
'emptying the bin': 'Очистка бака'
|
|
'charging complete': 'Зарядка завершена'
|
|
'device offline': 'Устройство не в сети'
|
|
'Sweeping and Mopping': 'Пылесосит и моет полы'
|
|
|
|
#======================================================================================================================
|
|
input_boolean:
|
|
|
|
room_vacuum:
|
|
name: "Комната уборка"
|
|
lobby_vacuum:
|
|
name: "Прихожая уборка"
|
|
hallway_vacuum:
|
|
name: "Коридор уборка"
|
|
bathroom_vacuum:
|
|
name: "Ванная уборка"
|
|
kitchen_vacuum:
|
|
name: "Кухня уборка"
|
|
|
|
#======================================================================================================================
|
|
group:
|
|
all_rooms_for_vac_clean:
|
|
name: All rooms for vacuum clean
|
|
entities:
|
|
- input_boolean.room_vacuum
|
|
- input_boolean.lobby_vacuum
|
|
- input_boolean.hallway_vacuum
|
|
- input_boolean.bathroom_vacuum
|
|
- input_boolean.kitchen_vacuum
|
|
|
|
#======================================================================================================================
|
|
|
|
template:
|
|
# Сенсор просматривает нашу группу на предмет включенных input boolean,
|
|
# затем забирает их названия, записывает их в строку, разделяя запятой,
|
|
# и, наконец, заменяет каждое имя в списке соотвестовующим набором цифр в квадратных скобках.
|
|
- sensor:
|
|
- default_entity_id: sensor.select_rooms_for_clean
|
|
icon: mdi:vacuum
|
|
name: Выбранные комнаты для пылесоса
|
|
state: "{% set room = expand('group.all_rooms_for_vac_clean') | selectattr('state',
|
|
'eq', 'on') | map(attribute='entity_id') | list | join(',') | replace('input_boolean.room_vacuum','[3,1,3,3,1]')
|
|
| replace('input_boolean.lobby_vacuum','[2,1,3,3,1]') | replace('input_boolean.hallway_vacuum','[5,1,3,3,1]')
|
|
| replace('input_boolean.bathroom_vacuum','[1,1,3,3,1]') | replace('input_boolean.kitchen_vacuum','[4,1,3,3,1]')
|
|
%}\n {\"selects\":[{{room}}]}"
|
|
|
|
# Сенсор выаода можности всасывания для обходя ограничения редактора карточки
|
|
- default_entity_id: sensor.select_vacuum_fan_speed
|
|
icon: mdi:vacuum
|
|
name: Выбранная мощность всасывания
|
|
state: '{{ state_attr(''vacuum.dreame_mc1808_044c_robot_cleaner_2'', ''fan_speed'')}}'
|
|
|
|
# Сенсор выаода уровня воды для обходя ограничения редактора карточки
|
|
- default_entity_id: sensor.select_water_vacum
|
|
icon: mdi:vacuum
|
|
name: Выбранный уровень воды
|
|
state: '{{ state_attr(''vacuum.stytj01zhm'', ''water_level'')}}'
|
|
|
|
# Сенсор состояния бака с водой
|
|
- default_entity_id: sensor.vacuum_water_box
|
|
icon: mdi:vacuum
|
|
name: Сенсор состояния бака с водой
|
|
state: '{{state_attr(''vacuum.dreame_mc1808_044c_robot_cleaner_2'',''clean.water_box'')}}'
|
|
|
|
#======================================================================================================================
|
|
#Скрипт запуска уборки
|
|
script:
|
|
clean_select_rooms:
|
|
alias: VCM|Убрать выбранные комнаты
|
|
sequence:
|
|
- service: xiaomi_miot.call_action
|
|
data_template:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
aiid: 1
|
|
params:
|
|
- piid: 1
|
|
value: 18
|
|
- "{{ {'piid':21, 'value': states('sensor.select_rooms_for_clean') } }}"
|
|
force_params: true
|
|
#Условия по кторым утсанавливается мощность всасывания и полива
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_vacuum_fan_speed
|
|
state: Турбо
|
|
sequence:
|
|
- service: script.set_fanspeed_vacum_turbo
|
|
metadata: {}
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_vacuum_fan_speed
|
|
state: Средний
|
|
sequence:
|
|
- service: script.set_fanspeed_vacum_strong
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_vacuum_fan_speed
|
|
state: Стандартный
|
|
sequence:
|
|
- service: script.set_fanspeed_vacum_standart
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_vacuum_fan_speed
|
|
state: Тихий
|
|
sequence:
|
|
- service: script.set_fanspeed_vacum_silent
|
|
data: {}
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_water_vacum
|
|
state: Low
|
|
sequence:
|
|
- service: script.set_water_vacum_low
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_water_vacum
|
|
state: Med
|
|
sequence:
|
|
- service: script.set_water_vacum_middle
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.select_water_vacum
|
|
state: High
|
|
sequence:
|
|
- service: script.set_water_vacum_hight
|
|
data: {}
|
|
|
|
# Смена уровня воды
|
|
set_water_vacum_hight:
|
|
alias: VCM|Смена уровня воды пылесос высокий
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 20
|
|
value: 3
|
|
|
|
set_water_vacum_middle:
|
|
alias: VCM|Смена уровня воды пылесос средний
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 20
|
|
value: 2
|
|
|
|
set_water_vacum_low:
|
|
alias: VCM|Смена уровня воды пылесос низкий
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 20
|
|
value: 1
|
|
|
|
# Смена мощности всасывания
|
|
|
|
set_fanspeed_vacum_silent:
|
|
alias: VCM|Смена мощности всасывания пылесос бесшумный
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 6
|
|
value: 0
|
|
|
|
set_fanspeed_vacum_standart:
|
|
alias: VCM|Смена мощности всасывания пылесос стандартный
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 6
|
|
value: 1
|
|
|
|
set_fanspeed_vacum_strong:
|
|
alias: VCM|Смена мощности всасывания пылесос интенсивный
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 6
|
|
value: 2
|
|
|
|
set_fanspeed_vacum_turbo:
|
|
alias: VCM|Смена мощности всасывания пылесос турбо
|
|
sequence:
|
|
- service: xiaomi_miot.set_miot_property
|
|
metadata: {}
|
|
data:
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
siid: 18
|
|
piid: 6
|
|
value: 3
|
|
|
|
#======================================================================================================================
|
|
# автоматизацию, которая сбрасывает булеаны после окончания уборки
|
|
automation:
|
|
- alias: 'VCM|reset_select_rooms'
|
|
id: Reset select rooms
|
|
trigger:
|
|
- platform: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
to: 'docked'
|
|
condition: []
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
entity_id:
|
|
- input_boolean.room_vacuum
|
|
- input_boolean.lobby_vacuum
|
|
- input_boolean.hallway_vacuum
|
|
- input_boolean.bathroom_vacuum
|
|
- input_boolean.kitchen_vacuum
|
|
|
|
- alias: VCM|button_start_clean
|
|
description: ""
|
|
trigger:
|
|
- platform: device
|
|
domain: mqtt
|
|
device_id: 975fb5853727f1fa4279bac09fd7fb6b
|
|
type: action
|
|
subtype: hold_right
|
|
discovery_id: 0x00158d0006c6bca8 action_hold_right
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
state: docked
|
|
- condition: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
state: idle
|
|
action:
|
|
- device_id: 885672257bd73c7492a4ba8b72b83699
|
|
domain: vacuum
|
|
entity_id: f9d147842b81972de04c1be4dfd368f3
|
|
type: clean
|
|
mode: single
|
|
|
|
- alias: VCM|button_stop_clean
|
|
description: ""
|
|
trigger:
|
|
- platform: device
|
|
domain: mqtt
|
|
device_id: 975fb5853727f1fa4279bac09fd7fb6b
|
|
type: action
|
|
subtype: hold_right
|
|
discovery_id: 0x00158d0006c6bca8 action_hold_right
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
state: cleaning
|
|
- condition: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
state: error
|
|
- condition: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
state: paused
|
|
action:
|
|
- device_id: 885672257bd73c7492a4ba8b72b83699
|
|
domain: vacuum
|
|
entity_id: f9d147842b81972de04c1be4dfd368f3
|
|
type: dock
|
|
mode: single
|
|
|
|
#======================================================================================================================
|
|
# Уведомления Telegram
|
|
#======================================================================================================================
|
|
- alias: "ntf|tg|VCM|clean_water_box_off"
|
|
id: telegram_ntf_vcm_water_box
|
|
description: "Напоминание о неснятом баке с водой"
|
|
mode: single
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.vacuum_water_box
|
|
to: "1"
|
|
for:
|
|
hours: 1
|
|
minutes: 0
|
|
seconds: 0
|
|
action:
|
|
- repeat:
|
|
sequence:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: -1002006010424
|
|
message: |
|
|
💧 ❗ Напоминание: Снимите бак с водой с пылесоса!
|
|
Он установлен уже более часа.
|
|
inline_keyboard:
|
|
- '🌀 Управление пылесосом:/vcm_control'
|
|
- '🔙 Главное меню:/menu_back, 🗑️ Прочитано:/menu_hide'
|
|
- delay:
|
|
hours: 3
|
|
while:
|
|
- condition: state
|
|
entity_id: sensor.vacuum_water_box
|
|
state: "1"
|
|
|
|
- alias: "ntf|tg|VCM|vacuum_clean_finish"
|
|
id: telegram_ntf_vcm_finish
|
|
description: "Уведомление об окончании уборки"
|
|
mode: single
|
|
trigger:
|
|
- platform: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
from: 'cleaning'
|
|
to: 'returning'
|
|
action:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: -1002006010424
|
|
message: |
|
|
✅ Пылесос завершил уборку
|
|
|
|
🕒 Завершена в: {{ states('sensor.time') }}
|
|
⏱️ Затрачено времени: {{ state_attr('vacuum.stytj01zhm', 'cleaning_time') | default(0) }} мин
|
|
🏠 Убрано: {{ state_attr('vacuum.stytj01zhm', 'cleaning_area') | default(0) }} м²
|
|
🔋 Заряд: {{ state_attr('vacuum.dreame_mc1808_044c_robot_cleaner_2', 'battery_level') | default(0) }}%
|
|
|
|
{% if state_attr('vacuum.dreame_mc1808_044c_robot_cleaner_2', 'clean.water_box') | int(0) == 1 %}
|
|
💧 ❗ Внимание: Бак с водой всё ещё установлен!
|
|
{% else %}
|
|
💧 Бак с водой: Снят
|
|
{% endif %}
|
|
inline_keyboard:
|
|
- '🌀 Управление пылесосом:/vcm_control, 🔙 Главное меню:/menu_back'
|
|
- '🗑️ Прочитано:/menu_hide'
|
|
|
|
- alias: "ntf|tg|VCM|vacuum_error"
|
|
id: telegram_ntf_vcm_error
|
|
description: "Уведомление об ошибке пылесоса"
|
|
mode: single
|
|
trigger:
|
|
- platform: state
|
|
entity_id: vacuum.dreame_mc1808_044c_robot_cleaner_2
|
|
to: 'error'
|
|
action:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: -1002006010424
|
|
message: |
|
|
{%- set raw = state_attr('vacuum.dreame_mc1808_044c_robot_cleaner_2', 'vacuum.fault') -%}
|
|
{%- set code = raw | int(0) if raw not in ['unknown', 'unavailable', None] else 0 -%}
|
|
{%- set errors = {
|
|
0: 'Нет ошибки',
|
|
1: 'Пылесос подняли (на весу)',
|
|
2: 'Щётка заблокирована',
|
|
3: 'Ошибка мотора щётки',
|
|
4: 'Колесо заблокировано',
|
|
5: 'Ошибка датчиков высоты',
|
|
6: 'Ошибка колеса',
|
|
7: 'Ошибка контейнера для пыли',
|
|
8: 'Ошибка лидара (вращение сенсора)',
|
|
9: 'Ошибка бампера (столкновение)',
|
|
10: 'Ошибка навигации',
|
|
11: 'Ошибка зарядки',
|
|
12: 'Что-то намоталось на основную щётку',
|
|
13: 'Ошибка батареи',
|
|
14: 'Ошибка Wi-Fi модуля',
|
|
15: 'Ошибка бака с водой',
|
|
16: 'Ошибка привода'
|
|
} -%}
|
|
|
|
{%- if code == 0 -%}
|
|
✅ Ошибка пылесоса устранена
|
|
{%- else -%}
|
|
❗ Ошибка пылесоса: {{ errors.get(code, 'Неизвестная ошибка (код ' ~ raw ~ ')') }}
|
|
{%- endif %}
|
|
inline_keyboard:
|
|
- '🌀 Управление пылесосом:/vcm_control, 🔙 Главное меню:/menu_back'
|
|
- '🗑️ Прочитано:/menu_hide'
|
|
|
|
|