Апгрейд стиральной машины или как не забыть развесить вещи

12 июня 2020, 13:17

Предисловие

Практически в каждом доме есть стиральная машина, и если вы изначально не приобрели себе "умную", но хотите такую - можно сделать небольшой апгрейд вашей домашней помощницы при помощи пары подручных средств, а именно, умной розетки и датчика открытия двери. Можно сэкономить и сделать "слегка умную" машину только при помощи умной розетки. Сам апгрейд позволяет отображать процесс стирки в Home Assistant и использовать его при настройке автоматизаций и оповещений. Дальше мы разберем эволюцию стиральной машины от "заурядной" к "умной" через промежуточное звено.
Заранее отмечу, что использование этих инструментов - не единственный и не претендующий на истину вариант. В сети, например, можно найти идею с применением датчика вибрации. А если у вас есть свое оригинальное решение - интересно будет почитать о нем в комментариях.

Устройства

Для апгрейда потребуются:
  • Умная розетка. В виде "адаптера" или встроенная - не принципиально. Главное требование - мониторинг энергопотребления. Я использую Xiaomi ZNCZ04LM.
  • Датчик открытия двери/окна. Любой на ваш вкус и цвет, я использую Xiaomi Aqara MCCGQ11LM. Одну часть датчика клеим на корпус машины, другую - на дверцу или ручку. Конкретно куда - решит ваш дизайнерский Гений :)
Ниже фото того, как это выглядит у меня. Изначально думал, что будет "лютый колхоз", но получилось вполне приемлемо и не мешает загрузке\выгрузке вещей.

Промежуточное звено

Сначала поработаем с умной розеткой - из сенсора энергопотребления нужно сделать индикатор (бинарный сенсор) работы машины. Данный этап является самым долгим из-за необходимости настройки и калибровки сенсора. У всех стиральные машины разные и по-разному потребляют электричество, что требует подбора значений некоторых параметров, разбор которых приведен ниже.

В общем виде описание индикатора работы стиральной машины выглядит следующим образом:

#configuration.yaml
binary_sensor:
  - platform: template
    sensors:
      wm_status:
        friendly_name: "Стиральная машина"
        delay_off:
          minutes: (Параметр А)
        value_template: >-
          {{ states('sensor.wash_machine_power')|float > (Параметр Б) }}

Смысл этого бинарного сенсора следующий: когда энергопотребление, считываемое с sensor.wash_machine_power (умная розетка), становится выше Параметра Б, то binary_sensor.wm_status показывает, что идет процесс стирки (on). Когда энергопотребление ниже Параметра Б в течение определенного времени (Параметр А) - бинарный сенсор переходит в состояние выключено. Для создания этого сенсора необходимо несколько раз запустить стирку, проанализировать графики энергопотребления и выбрать оптимальные значения Параметров А и Б, которые будут гарантированно свидетельствовать об окончании стирки. В моем случае, значения этих параметров следующие:

  • Параметр А - 1 минута. Изначально я выставил 3 минуты, но после - снизил. Лаг в 1 минуту не вызывает никакого дискомфорта.
  • Параметр Б - 6 Ватт. У стиральных машин есть "мозги", экраны и световые индикаторы, которые всегда потребляют электроэнергию вне зависимости от режима стирки. Этот параметр определяется из графика энергопотребления и в общем случае может иметь любое другое значение.
Тут же ожидаю вопрос: "А зачем вообще нужны эти параметры? Потребляет энергию - стирает, не потребляет - не стирает".
Отвечу. Если выставить значение Параметра Б на 0 Ватт, то система может думать, что стирка идет до тех пор, пока вы вручную не выключите машинку. Смысла в этом особого нет и нужно отсечь "Ватты", не затрачивающиеся на саму стирку, и установить Параметр Б на значение повыше. При этом энергопотребление стиральной машины не постоянно и зависит от температуры воды, режима стирки, оборотов, загрузки, типа двигателя. При определенных условиях, энергопотребление может колебаться около значения Параметра Б, следовательно, мгновенной величиной энергопотребления нельзя гарантированно определить окончание стирки. Если прописать значение Параметра А нулевым или слишком маленьким, то бинарный сенсор может временами «дергаться» между состояниями "вкл" и "выкл" и не будет показывать настоящее положение дел. А если энергопотребление в течение достаточного времени меньше определенного значения, то завершение стирки можно определить однозначно. Вот, собственно, график энергопотребления из которого все выводится.

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

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

Следующая ступень эволюции

Для повышения IQ стиральной машины нужно связать работу описанного выше откалиброванного бинарного сенсора индикации процесса стирки с датчиком открытия дверцы. В этом хорошо поможет такая сущность Home Assistant, как insput_select, в которую я записал следующие три возможных состояния стиральной машины (названия могут быть произвольными):

  • Stopped - машина выключена;
  • Washing - идет процесс стирки;
  • Drying - стирка завершена, но вещи еще не выгружены.

#configuration.yaml
input_select:
  wm_state:
    name: Washing machine
    options:
      - Stopped
      - Washing
      - Drying
    initial: Stopped
    icon: mdi:washing-machine

Сущность input_select в чистом виде не является сенсором (хотя именно в виде сенсора я его и использую), поэтому для реализации переходов между состояниями необходимо использовать автоматизации. Но для начала самое интересное - нужно разработать логику этих переходов.

Отдельно нужно отметить, что в Lovelace сущность input_select отображается как кнопка с выпадающим окном выбора, что, конечно, не очень удобно - можно случайно переключить состояние и все сломать. Можно прописать отдельный сенсор (сенсоров много не бывает), который на основании значения input_select будет выводить его состояние и отображаться в Lovelace в привычном для всех виде. Я поступил иначе - прописал показания input_select в раздел custom_fields уже существующей для ванной комнаты custom:button-card, где и сделал русификацию состояний. Скорее всего, всю логику умной стиральной машины можно положить в один "большой" сенсор без создания "промежуточных", но я решил сделать по-понятному и по-простому (по крайней мере для себя). Как это выглядит в веб-интерфейсе:

input_select в Lovelace

custom:button-card

Логика

Для начала представлю логику определения состояния стиральной машины в виде блок-схемы:

  • Основной цикл. Вращаем по кругу состояния input_select в течение всего процесса стирки (Stopped – Washing – Drying - Stopped). Триггером для перехода в состояние Washing служит включение сенсора wm_state (учитывать закрытую дверцу тут не принципиально, ведь сама машина не даст запустить стирку с открытой дверцей). По выключению сенсора wm_status и при условии закрытой дверцы, input_select переключается в состояние Drying – стирка окончена, но вещи еще внутри машины. По открытию дверцы, input_select возвращается в состояние Stopped – вещи отправились на сушилку.
  • Досрочное извлечение. Из-за того, что при описании бинарного сенсора wm_status используется временная задержка (привет Параметр А), существует момент времени, в котором стирка уже закончена, но система ее еще не зафиксировала. Если именно в это время вы оказались рядом с машиной и решили открыть дверцу чтобы развесить вещи, то система вас все равно поймет и input_select перейдет из состояния Washing в Stopped, минуя состояние Drying.
  • Дозагрузка вещей. Еще одно следствие временной задержки. Допустим, вы решили докинуть вещи в машину во время стирки (при наличии такой функции у самой машины). Вы нажимаете соответствующую кнопку на панели, открываете дверцу (срабатывает предыдущая автоматизация), закидываете вещи, закрываете дверцу, продолжаете стирку. Если время между открытием дверцы и повторным запуском превысит значение Параметра А, то все будет в порядке – wm_status успеет перейти в состояние «выкл», а потом обратно в «вкл» и сработает автоматизация из основного цикла. Если же дозагрузка происходит быстрее, то необходима эта отдельная автоматизация, в которой триггером будет закрытие дверцы машины при условии состояния "вкл" сенсора wm_status.
А теперь объясним эту логику системе на ее языке.

#automations.yaml
### ОСНОВНОЙ ЦИКЛ ###
# Stopped - Washing
- alias: wm_washing
  trigger:
    platform: state
    entity_id: binary_sensor.wm_status
    to: 'on'
  condition:
    - condition: state
      entity_id: input_select.wm_state
      state: 'Stopped'
  action:
    service: input_select.select_option
    data:
      entity_id: input_select.wm_state
      option: Washing

# Washing - Drying
- alias: wm_drying
  trigger:
    platform: state
    entity_id: binary_sensor.wm_status
    to: 'off'
  condition:
    - condition: state
      entity_id: binary_sensor.wm_door_contact
      state: 'off'
    - condition: state
      entity_id: input_select.wm_state
      state: 'Washing'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.wm_state
        option: Drying

# Drying - Stopped
- alias: wm_stopped
  trigger:
    platform: state
    entity_id: binary_sensor.wm_door_contact
    to: 'on'
  condition:
    - condition: state
      entity_id: input_select.wm_state
      state: 'Drying'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.wm_state
        option: Stopped

### ДОСРОЧНОЕ ИЗВЛЕЧЕНИЕ ###
- alias: wm_extract
  trigger:
    platform: state
    entity_id: binary_sensor.wm_door_contact
    to: 'on'
  condition:
    - condition: state
      entity_id: input_select.wm_state
      state: 'Washing'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.wm_state
        option: Stopped

### ДОЗАГРУЗКА ВЕЩЕЙ ###
- alias: wm_add_load
  trigger:
    platform: state
    entity_id: binary_sensor.wm_door_contact
    to: 'off'
  condition:
    - condition: state
      entity_id: input_select.wm_state
      state: 'Stopped'
    - condition: state
      entity_id: binary_sensor.wm_status
      state: 'on'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.wm_state
        option: Washing 

Монологи от стиралки

Рассмотренные выше автоматизации позволяют обеспечить корректное переключение сущности input_select.wm_state и отображать в системе текущее состояние процесса стирки. В связке с другими различными компонентами Home Assistant можно настроить гибкую систему автоматизаций и оповещений. Я использую input_select в связке с девайс трекером, таймером и умным выключателем около входной двери, по длительному нажатию которого выключается весь свет в квартире, увлажнители и кондиционеры. До кучи сюда еще можно привязать tts с вашим любимым диктором домашних новостей и окрашивать любую rgb подсветку в зависимости от режима стирки (информативно и стильно). Для примера, приведу кейсы, в которых моя семья использует умную стиральную машину.
  1. Окончание стирки (дома кто-то есть). По окончании стирки приходит сообщение «Стирка окончена, развесьте вещи!», затем включается таймер и каждые 5 минут система напоминает о том, что неплохо было бы развесить вещи и приводит время, как давно стирка была завершена. По открытию дверцы таймер останавливается.
  2. Окончание стирки (дома никого нет). Событие довольно редкое, но случается. По окончании стирки приходит сообщение «Стирка окончена, не забудьте развесить вещи, когда вернетесь домой!».
  3. Возвращение домой. Является логическим продолжением предыдущей автоматизации. Когда кто-то приходит домой, система сообщает о завершенной стирке с указанием прошедшего времени и каждые 5 минут напоминает об оставленных в машине вещах.
  4. Напоминание о завершенной стирке перед уходом из дома. По долгому нажатию выключателя около входной двери, система присылает сообщение «Не уходите! Стирка окончена! Развесьте вещи!» с указанием прошедшего времени после стирки, таймер останавливается.
  5. Напоминание об идущей стирке перед уходом из дома. Работает по аналогии с предыдущей автоматизацией – система предостерегает от долгих прогулок и указывает, как давно стирка была запущена. 

Заключение

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

Спасибо за внимание! Буду рад почитать о ваших идеях по использованию умных стиральных машин в системах умного дома!


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Anton Stolov (soulassassino)
    Anton Stolov (soulassassino) 26 дней назад

    Отличный материал! Лойс улетел!

  2. Александр Пинчук (JensWeber)

    Потрясающе , эхх.. в ноде ред бы)

  3. Геннадий Куракин (Onag)

    8 лет служит машинка с сушкой хотпоинт аристон. Уже старенькая совсем. В основном, вещи, после сушки можно в ней забыть на несколько дней без проблем.

  4. (Jager)
    (Jager) 26 дней назад

    Моя версия, 2015 год ... https://modkam.ru/?p=8

  5. Евгений Бирюков (biryukov.e)

    Умно и просто. Давайте на СХ такое реализуем! 😁

  6. (uaaauaaa)
    (uaaauaaa) отредактировано 26 дней назад

    Отличная статья

    ХА правда ругается на конфиг: Invalid config for [sensor.template]: [delay_off] is an invalid option for [sensor.template]. Check: sensor.template->sensors->wm_status->delay_off.

    при записи в сенсорах (отдельный yaml фаил):

    1000x_image.png?1592023654

    • Александр Подосинников (alex.pod)

      Вы точно в секции бинарников его прописываете?

      Полное описание бинарного сенсора можно почитать тут.

      • (uaaauaaa)
        (uaaauaaa) 25 дней назад

        Да, ступил. В сенсорах разместил)

        Подскажите, правильно ли я понимаю, что в строке вместо binary_sensor.wm_door_contact указывается имя датчика дверей, а вот entity самой умной розетки не совсем понял куда вводить нужно, или она в принципе не нужна в данном контексте, достаточно только sensor.wash_machine_power?

        • Александр Подосинников (alex.pod)

          Все верно. Для автоматизаций нужен либо сенсор энергопотребления в чистом виде, либо в виде атрибута. Сущность розетки уже должна быть прописана, когда вы ее подключили к НА

  7. (kcinIvan)
    (kcinIvan) 26 дней назад

    https://m.habr.com/ru/post/409...

    вот тут более хардкорный вариант с собственным блоком управления. 

  8. Александр Шотиди (Grek)

    Супер! Как раз думал куда применить пару розеток, ещё можно 3д принтер мониторить.. да и много чего еще!

  9. (Xodes)
    (Xodes) 25 дней назад

    Колхоз, если честно. Просто вскрываешь машинку, подключаешь в debug port плату esp8266, пишешь код и получаешь полный доступ к машинке.

    • (AlexSZ)
      (AlexSZ) 16 дней назад

      Вятка-автомат 18. Покажи, где там debug port? ;-))) 

      А это решение работать будет. 

      • (Xodes)
        (Xodes) 14 дней назад
        1000x_image.jpg?1593019397
      • (Xodes)
        (Xodes) 14 дней назад

        Так видно ??

        • (AlexSZ)
          (AlexSZ) 14 дней назад

          А на Вятке? ;-) с механическим контроллером))))) у меня на работе по сих пор есть такая.

          Это решение вопроса не зависит от структуры машинки, розетку и датчик открытия хоть на активаторную лепи, работать будет. 

  10. Антон Киселёв (Whilser)
    Антон Киселёв (Whilser) 25 дней назад

    Просто... зачем? Она и так оповещает об окончании стирки и далее мигает индикаторами. Да и если забыть в машинке вещи на пару часов ничего страшного не случится 😐На изменения в автоматизациях состояние машинки никак не вызывает, в общем, бессмысленно. 

    • (AlexSZ)
      (AlexSZ) отредактировано 15 дней назад

      А если стиралка стоит на пару часов, и за это время контингент ент квартиры меняется, да и ещё "забыла сказать, уставшая была", и шмот пролежал пару дней? Уведомление прилетит каждому, кто дома - тот развесит. Есть смысл, есть, по жизни всякое бывает, а бэкап(ный канал связи) лишним не будет. 

  11. (anonimNO)
    (anonimNO) 20 дней назад

    Спасибо, не хватает только установки статуса при старте системы.

    Не придумал ничего лучше такого  https://paste.ofcode.org/P9j7gztYdhuyyGZ8BEfJeY Не все статусы конечно обрабатывает...

    В комментариях нужна возможность вставки кода


К списку статей

Устройства в материале

Door and Window Sensor

Производитель: Aqara
Заказать на:

Mi smart plug EU

Производитель: Xiaomi

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Тематические чаты

Похожие статьи

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.