Предисловие
Практически в каждом доме есть стиральная машина, и если вы изначально не приобрели себе "умную", но хотите такую - можно сделать небольшой апгрейд вашей домашней помощницы при помощи пары подручных средств, а именно, умной розетки и датчика открытия двери. Можно сэкономить и сделать "слегка умную" машину только при помощи умной розетки. Сам апгрейд позволяет отображать процесс стирки в 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 Ватт, то система может думать, что стирка идет до тех пор, пока вы вручную не выключите машинку. Смысла в этом особого нет и нужно отсечь "Ватты", не затрачивающиеся на саму стирку, и установить Параметр Б на значение повыше. При этом энергопотребление стиральной машины не постоянно и зависит от температуры воды, режима стирки, оборотов, загрузки, типа двигателя. При определенных условиях, энергопотребление может колебаться около значения Параметра Б, следовательно, мгновенной величиной энергопотребления нельзя гарантированно определить окончание стирки. Если прописать значение Параметра А нулевым или слишком маленьким, то бинарный сенсор может временами «дергаться» между состояниями "вкл" и "выкл" и не будет показывать настоящее положение дел. А если энергопотребление в течение достаточного времени меньше определенного значения, то завершение стирки можно определить однозначно. Вот, собственно, график энергопотребления из которого все выводится.
Следующая ступень эволюции
Для повышения 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 в течение всего процесса стирки (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 подсветку в зависимости от режима стирки (информативно и стильно). Для примера, приведу кейсы, в которых моя семья использует умную стиральную машину.
Окончание стирки (дома кто-то есть). По окончании стирки приходит сообщение «Стирка окончена, развесьте вещи!», затем включается таймер и каждые 5 минут система напоминает о том, что неплохо было бы развесить вещи и приводит время, как давно стирка была завершена. По открытию дверцы таймер останавливается.Окончание стирки (дома никого нет). Событие довольно редкое, но случается. По окончании стирки приходит сообщение «Стирка окончена, не забудьте развесить вещи, когда вернетесь домой!».Возвращение домой. Является логическим продолжением предыдущей автоматизации. Когда кто-то приходит домой, система сообщает о завершенной стирке с указанием прошедшего времени и каждые 5 минут напоминает об оставленных в машине вещах.Напоминание о завершенной стирке перед уходом из дома. По долгому нажатию выключателя около входной двери, система присылает сообщение «Не уходите! Стирка окончена! Развесьте вещи!» с указанием прошедшего времени после стирки, таймер останавливается.Напоминание об идущей стирке перед уходом из дома. Работает по аналогии с предыдущей автоматизацией – система предостерегает от долгих прогулок и указывает, как давно стирка была запущена.
Заключение
В данной статье я рассказал о своем способе интеграции стиральной машины в систему умного дома, на примере Home Assistant. Этот способ можно использовать в том случае, если вы хотите приобрести себе умную стиральную машину, но она не подходит вам по техническим характеристикам или не вписывается в бюджет, а может, вы недавно купили обычную и менять ее на новую – дурацкая идея. Для отслеживания начала и окончания стирки достаточно использовать лишь умную розетку, что может пригодиться еще и в том случае, если вам не слышны трели стиральной машины об окончании ее работы (например, тихий или вышедший из строя динамик, большая квартира или дом). Дооснащение вашей помощницы датчиком открытия дверцы позволяет еще больше расшить ее функционал и способы взаимодействия с элементами умного дома, а также настроить гибкую и удобную систему автоматизаций и оповещений.
Спасибо за внимание! Буду рад почитать о ваших идеях по использованию умных стиральных машин в системах умного дома!