Всем привет. У меня накопилось несколько интересных решений для HomeAssistant, которыми я хочу поделиться. Сегодня я хочу сделать одометр для пылесоса.

Зачем?

Первоначально один мой приятель попросил помочь ему с автоматизацией - сделать уведомление, когда заканчивается вода в пылесосе. Но как сделать подобное если пылесос никак не отслеживает уровень воды? Но каждый же может примерно оценить на сколько ему хватает бака?

У меня и моего товарища пылесос Xiaomi, а точнее его очередной дочки - Xiaomi Mijia Robot Vacuum Mop P STYJ02YM. На самом деле для дальнейшего повествования это не суть важно. Я хочу описать принцип работы, а полученные знания можно применить к кучу других пылесосов.

И так у меня есть устройство пылесос. У устройства есть атрибуты:

Нас будет интересовать два из них - box_type и cleaned_area. Из cleaned_area мы создадим одометр, а с помощью изменения box_type будем его сбрасывать.

И так начнем с одометра. Создадим виртуальный сенсор пробега:

Я использую packages, это очень удобно для некоторых устройств. Например для своего домашнего пылесоса я создал vacuum.yaml, куда пишу все что касается конкретно этого пылесоса. Настройки интеграции, виртуальные датчики, автоматизации и т.п.

    template:

      sensor:

        - name: home_vacuum_box_type
          icon: mdi:boombox
          state: >
            {{ state_attr('vacuum.home_vacuum', 'box_type') }}

        - name: home_vacuum_cleaned_area_now
          icon: mdi:counter
          state: >
            {{ state_attr('vacuum.home_vacuum', 'cleaned_area') }}
          unit_of_measurement: 'm²'

Где home_vacuum_box_type - название виртуального сенсора, а {{ state_attr('vacuum.home_vacuum', 'box_type') }} - его показание, которое будем брать из атрибута box_type, у устройства vacuum.home_vacuum.

Таким образом мы создаем два сенсора:
sensor.home_vacuum_box_type - показывающий текущий тип контейнера
sensor.home_vacuum_cleaned_area_now - показывающий текущий пробег

Теперь создадим сам одометр:

    utility_meter:
      home_vacuum:
        source: sensor.home_vacuum_cleaned_area_now
        name: home_vacuum_cleaned_area

Так как показания sensor.home_vacuum_cleaned_area_now будут отображаться как - сколько убрано площади в данный момент - то есть, 2 метра, через пару минут - 5 метров и т.д, а при извлечении контейнера вообще обнуляться, нам надо использовать utility_meter. Короче говоря мы получим sensor.home_vacuum_cleaned_area который уже будет работать как настоящий одометр.

Далее нам надо как-то сбрасывать одометр при вытряхивании/замене контейнера. Именно для этого мы будем использовать sensor.home_vacuum_box_type.

В моем пылесосе:

sensor.home_vacuum_box_type '1' - контейнер для пыли
sensor.home_vacuum_box_type '3' - контейнер комбинированный, для воды
sensor.home_vacuum_box_type '0' - контейнер отсутствует

Именно 0 то нас и интересует. Создадим простейшую автоматизацию:

        - alias: Дом - Пылесос - Сброс счетчика уборки при замене контейнера
          id: home_vacuum_automation_clean_count_reset
          mode: single
          trigger:
            - platform: state
              entity_id:
                - sensor.home_vacuum_box_type
              to: "0"
          action:
            - service: utility_meter.calibrate
              data:
                value: "0"
              target:
                entity_id: sensor.home_vacuum_cleaned_area

Где триггером будет выступать состояние 0 у sensor.home_vacuum_box_type. Это значит что контейнер я вынул - значит одометр нужно сбросить.

Таким нехитрым образом мы добавили к пылесосу одометр который сбрасывается при замене/очистке контейнера. Остается лишь дописать автоматизации вроде - если тип контейнера 3, а одометр больше 60 метров, тогда отправить сообщение на Алису/телеграм/куда вам удобно, сообщение - вода заканчивается!

P.S. Зачем это все?

Когда умный дом действительно умный, а не вся "интелектуальность" заключается в управлении лампочкой с мобилки, тогда оказывается, что нужно. Например:
Мой умный дом отслеживает дома ли я и дома ли мои домочадцы. Если время суток подходящие, а нас нет дома значит умный дом запускает уборку квартиры. Включает пылесос, пылесосит. Таким образом я не вижу, как работает робот-пылесос и просто забываю про его существование. Умный дом, к сожалению, не может вынуть контейнер для пыли или долить воды, но может прислать уведомление в телегу что контейнер пора вытряхивать.

Комментарии (6)


  1. sof07
    11.01.2024 19:06

    А как у вас реализовано отслеживание персон? После одного из обновлений, в прошлом году, у меня перестал работать bluetooth_le_tracker и точность определения значительно упала. Раньше трекал персон по блютуз телефона и часов плюс вайфай телефона, теперь только по вайфай трекается.


    1. SantaClaus16 Автор
      11.01.2024 19:06

      Я как раз пишу об этом следующую статью)


    1. Kybb
      11.01.2024 19:06

      У себя реализовал через esp33 + ESPHome (ble), а так же wifi(как данные с роутера, так и данные с HA в телефоне, что отдает SSID) и географический адрес так же с приложения на смартфоне.



  1. Melias
    11.01.2024 19:06
    +5

    Умный дом, к сожалению, не может вынуть контейнер для пыли или долить воды, но может прислать уведомление в телегу что контейнер пора вытряхивать.

    Меняю уже 4е поколение роботов-пылесосов.

    Начианал с туповатой румбы, потом 3й и 5й roborock, и теперь вот Roborock Q Revo с доком и полноценным мытьем полов

    Моет он классно, вращающиеся щетки ИМХО заметно эффективнее и надежнее вибрирующих

    Пыль он разгружает сам в базу, пакета в базе хватает на несколько месяцев.

    Воду сам заливает из бункера в базе и выливает туда грязную воду. На китайском рынке уже появился sewage kit для подключения базы к водопроводу и канализации, но пока еще стоит дороговато (200 евро). Подешевеет чуток - куплю обязательно.

    При этом ценник у модели почти в 2 раза ниже других моделей с многофункциональными доками, типа S7 MaxV или S8 ProUltra (700 евро против 1300)

    Ну и, конечно, все roborock отлично интегрируются в Home Assistant. (ниже мой интерфейс)

    Наш самый частый юзкейс - послать в отдельные комнаты, предварительно собрав с пола всякие мешающие штуки. И это очень удобно делать или голосом, или из интерфейса с картой в ХА


    1. zhons8
      11.01.2024 19:06

      К большущему сожалению далеко не у всех есть возможность иметь home assistant ????