Умный дом на Home Assistant и 3D печать.
 
Telegram-канал FoxJoy
Почта: dm@foxjoy.ru
Умная стиральная машина 2.0 с WashData Integration

Умная стиральная машина 2.0 с WashData Integration

В предыдущей статье мы рассмотрели самый простой способ уведомления об окончании стирки с помощью умной розетки и базовых автоматизаций Home Assistant. Этот подход имеет право на жизнь, но хочется большего!

Позже я наткнулся на более продвинутый вариант — отличная интеграция WashData Integration, которую я установил, настроил и активно использую. Эта интеграция не просто определяет "стирает/не стирает", а изучает профили мощности вашей машины, распознаёт конкретные программы и даже предсказывает время окончания стирки.

Возможности этой интеграции не заканчиваются с использованием обычной стиралки, это применимо к комбинированной стиральной машине с сушкой, просто с сушильной машиной, а также будет работать с посудомоечной машиной, фритюрницей, хлебопечкой, различными насосами и в общем много ещё с чем, что работает с различными циклами.

Кратко о WashData — это пользовательский компонент Home Assistant, который:

- Автоматически определяет начало и конец цикла по анализу потребления энергии
- Распознаёт программы стирки (быстрая, хлопок, деликатная и т.д.) по форме кривой мощности
- Показывает достаточно точное время до окончания с учётом фазы стирки
- Рассчитывает стоимость каждой стирки с учётом тарифов
- Работает с множеством устройств

Главное преимущество — система учится на ваших циклах стирки и со временем становится всё точнее.
Установить интеграцию проще всего через HACS, но можно и вручную.

Первоначальная настройка

После установки и перезапуска HA:
1. Перейдите в Настройки → Устройства и службы
2. Нажмите "Добавить интеграцию"
3. Найдите "WashData"
4. Заполните четыре простых поля:

Название - например: "Стиральная машина" или "Енот Геннадий" :)
В выпадающем меню выбираем тип устройства "Стиральная машина"
Сенсор мощности - выбираем вашу розетку или реле с мониторингом (например: sensor.rozetka_wifi_2_moshchnost)
Минимальная мощность - порог ожидания (по умолчанию 2 Вт). Оставьте как есть, если ваша розетка не показывает ложное потребление в режиме ожидания.
Сохраняем — интеграция создана!

Обратите внимание, что виды стирок "синтетика" и "хлопок" например на нашей машинке, производятся с взвешиванием белья и из-за этого циклы при обучении могут записываться по разному и конечно длительность стирки тоже может изменяться. Остальные виды стирок производятся без взвешивания и по этому обучаются гораздо проще и точнее. 

Панель управления WashData

После настройки в боковой панели Home Assistant появится пункт "WashData".
Основные разделы панели:

1. Обзор
- Живой график потребления мощности
- Текущее состояние машины
- Оставшееся время
- Текущая программа
- Кнопки управления циклом

2. Циклы
- История всех стирок
- Стоимость каждой стирки
- Возможность пометить цикл как "неизвестный" для обучения системы

3. Профили
- Здесь хранятся изученные программы стирки
- Графики потребления для каждой программы
- Статистика по использованию

4. Настройки
- Тонкая настройка порогов
- Параметры уведомлений
- Оптимизация под вашу машину

Обучение системы распознаванию программ

Это самый важный этап — без него система не будет работать корректно. WashData не знает заранее, какие у вас программы, поэтому её нужно обучить.

Способ 1: Режим записи (рекомендуется)
Это более точный способ:

1. В разделе Обзор найдите "Ручная запись"
2. Нажмите "Начать запись"
3. Запустите конкретную программу стирки (например, "Быстрая 30°C")
4. Дождитесь полного окончания цикла
5. Нажмите "Остановить запись"
6. Система предложит создать профиль из этой записи
7. Назовите его (например: "Быстрая стирка")

Повторите для 2-3 наиболее часто используемых программ.

Пример:

Способ 2: Пометка после стирки
Если вы уже начали пользоваться машиной:

1. Запустите стирку как обычно
2. После окончания откройте раздел Циклы
3. Найдите последний цикл (он будет помечен как "Неизвестный")
4. Откройте его и нажмите "Назначить профиль"
5. Создайте новый профиль или выберите существующий

Для начала достаточно обучить систему на 2-3 основных программах. Со временем она научится различать и остальные.

Так же есть напоминания по обслуживанию стиральной машины: удаление накипи, очистка фильтра, очистка барабана. По умолчанию это предлагается делать соответственно через 30, 50 и 100 циклов.

Настройка уведомлений

WashData предоставляет готовые автоматизации для уведомлений, которые легко настроить.

Включение автоматических уведомлений

1. В настройках найдите раздел Уведомления
2. Нажмите "Автоматизации"
3. Вы увидите список готовых триггеров:
   - Цикл начат
   - Цикл завершён
   - Предупреждение об окончании

Для каждого можно создать автоматизацию в один клик.

Создание расширенной автоматизации с TTS и Telegram

Ну а далее можно настроить уведомление на колонки и если нужно отправлять в Telegram — как в первой статье, но с использованием WashData.

Настройки → Автоматизации и сцены → Создать автоматизацию. Ниже пример, где работа уведомлений в дневное время с 5 утра, др 21 вечера:

alias: Стиральная машина закончила стирку 

description: Оповещение на колонки и отправка в Telegram, когда стирка завершена
triggers:
  - event_type: ha_washdata_cycle_ended
    event_data:
      entry_id: ВАШ ID 
    trigger: event
  - entity_id:
      - sensor.rozetka_wifi_2_moshchnost
      - switch.rozetka_wifi_2
    below: 15
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: numeric_state
    enabled: false
conditions:
  - condition: time
    after: '05:00:00'
    before: '21:00:00'
actions:
  - action: media_player.volume_set
    target:
      entity_id:
        - media_player.esp32_s3_esphome_pcm5102a_media_player
        - media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
    data:
      volume_level: 0.6
  - action: media_player.play_media
    target:
      entity_id:
        - media_player.esp32_s3_esphome_pcm5102a_media_player
    data:
      media:
        media_content_id: media-source://media_source/local/mpd/media/airport-bell.mp3
        media_content_type: audio/mpeg
        metadata:
          title: airport-bell.mp3
          thumbnail: null
          media_class: music
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://media_source
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd/media
  - action: media_player.play_media
    target:
      entity_id: media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
    data:
      media:
        media_content_id: media-source://media_source/local/mpd/media/airport-bell.mp3
        media_content_type: audio/mpeg
        metadata:
          title: airport-bell.mp3
          thumbnail: null
          media_class: music
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://media_source
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd/media
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.esp32_s3_esphome_pcm5102a_media_player
      message: Енот Геннадий работу закончил. Можно вытаскивать и сортировать бельё 
    target:
      device_id: ВАШ ID
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
      message: Енот Геннадий работу закончил. Можно вытаскивать и сортировать бельё
    target:
      device_id: DFI ШВ
  - action: tts.google_translate_say
    metadata: {}
    data:
      entity_id: media_player.yandex_station_ВАШ ID Яндекс колонки
      message: Енот Геннадий работу закончил. Можно вытаскивать и сортировать бельё
      cache: false
  - action: notify.send_message
    data:
      message: Енот Геннадий работу закончил
    target:
      entity_id:
        - notify.telegram_bot_ВАШ ID
mode: single

Почему именно "Енот Геннадий"? Не спрашивайте. Это вопрос к жене :)

Как узнать ID устройства WashData?

1. Откройте панель WashData
2. Перейдите в Дополнительно → Диагностика
3. Найдите device_id — это длинная строка, которую нужно вставить в автоматизацию

Предупреждение за 10 минут до окончания

Одна из полезных функций WashData — возможность предупредить о скором окончании стирки:

alias: Голосовое оповещение за 10 минут до конца стирки 

description: Голосовое оповещение за 10 минут до конца стирки
triggers:
  - trigger: numeric_state
    entity_id: sensor.washing_machine_time_remaining
    below: 10
conditions:
  - condition: state
    entity_id: sensor.washing_machine_state
    state:
      - running
      - ending
  - condition: template
    value_template: '{{ trigger.from_state.state | float(0) >= 10 }}'
  - condition: time
    after: '05:00:00'
    before: '21:00:00'
actions:
  - action: media_player.volume_set
    target:
      entity_id:
        - media_player.esp32_s3_esphome_pcm5102a_media_player
        - media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
    data:
      volume_level: 0.6
  - action: media_player.play_media
    target:
      entity_id:
        - media_player.esp32_s3_esphome_pcm5102a_media_player
    data:
      media:
        media_content_id: media-source://media_source/local/mpd/media/airport-bell.mp3
        media_content_type: audio/mpeg
        metadata:
          title: airport-bell.mp3
          thumbnail: null
          media_class: music
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://media_source
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd/media
  - action: media_player.play_media
    target:
      entity_id: media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
    data:
      media:
        media_content_id: media-source://media_source/local/mpd/media/airport-bell.mp3
        media_content_type: audio/mpeg
        metadata:
          title: airport-bell.mp3
          thumbnail: null
          media_class: music
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://media_source
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd
            - media_content_type: ''
              media_content_id: media-source://media_source/local/mpd/media
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.esp32_s3_esphome_pcm5102a_media_player
      message: Кажись до конца стирки осталось около десяти минут
    target:
      device_id: ВАШ ID
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.esp32_s3_3_esphome_pcm5102a_media_player_3
      message: Кажись до конца стирки осталось около десяти минут
    target:
      device_id: ВАШ ID 
  - action: tts.google_translate_say
    metadata: {}
    data:
      entity_id: media_player.yandex_station_ВАШ ID Яндекс колонки
      cache: false
      message: Кажись до конца стирки осталось около десяти минут
  - action: notify.send_message
    data:
      message: До конца стирки осталось примерно 10 минут
    target:
      entity_id:
        - notify.telegram_bot_ВАШ ID
mode: single

Отслеживание состояния через сенсоры

WashData создаёт множество полезных сенсоров:

sensor.stiralnaya_mashina_state - Состояние: idle, starting, running, paused, finished
sensor.stiralnaya_mashina_program - Текущая программа стирки
sensor.stiralnaya_mashina_time_remaining - Оставшееся время (в секундах)
sensor.stiralnaya_mashina_total_duration - Общее время цикла
sensor.stiralnaya_mashina_cycle_progress - Прогресс в процентах (0-100)
sensor.stiralnaya_mashina_energy_total - Общее потребление за всё время
sensor.stiralnaya_mashina_current_phase - Текущая фаза (например: "Полоскание", "Отжим")
sensor.stiralnaya_mashina_cycle_count - Количество стирок за всё время

Пример отображения на дашборде. На Гитхабе есть готовые примеры.


Анимированая карточка для Home Assistant

Есть ещё один хороший проект wm_animated_ha_card. Это Lovelace-карточка, которая может превратить все эти наши моечные девайсы на умной розетке в симпатичный анимированный виджет. Можно воспользоваться только этим, но я установил карточку и подкинул свои сущности из установленной WashData.
Вот как это можно выглядеть:

Голосовой ассистент

WashData поддерживает голосовые команды через Home Assistant Assist:

1. Скопируйте файл docs/custom_sentences/en/ha_washdata.yaml из репозитория
2. Поместите его в /custom_sentences/ru/ha_washdata.yaml (создайте папку, если её нет)
3. Перезапустите Home Assistant

Теперь вы можете спросить:
- "Стирает ли сейчас стиральная машина?"
- "Сколько осталось времени до окончания стирки?"
- "Какая программа сейчас работает?"

Я этим честно говоря не пользуюсь. Мне достаточно уведомлений.

WashData Integration превращает вашу стиральную машину из "чёрного ящика" в умное устройство с полным мониторингом. После первоначального обучения (3-5 циклов на каждую программу) система работает практически без вмешательства, точно определяя программы и предсказывая время окончания.

Что мы получили по сравнению с простым способом:
- ✅ Время до окончания стирки
- ✅ Распознавание конкретных программ
- ✅ Подсчёт стоимости каждой стирки
- ✅ Статистика потребления энергии
- ✅ Информация о текущей фазе стирки
- ✅ Предупреждения о скором окончании 
- ✅ Голосовые уведомления на колонки и в Телеграм

Теперь ваша стиральная машина действительно умная, и вы всегда точно знаете, когда можно выгружать бельё!