Умный дом на колес… Алисах. Часть 2. ZIGBEE

    Продолжение эпопеи с голосовым управлением


    В предыдущей части через Алису голосом управляли контроллерами MiLight. Но такие контроллеры стоят совсем не в каждом доме, что сильно ограничивает наши возможности. Поэтому я задался целью расширить голосовое управление на обычные лампы, светильники, люстры и так далее, но с минимальной переделкой стандартной системы освещения. Все что будет нужно для такой системы — это замена обычных выключателей на смарт-выключатели, работающие по протоколу ZigBee и установка USB ZigBee-координатора СС2531. Естественно, из предыдущей статьи у нас уже есть умная колонка Яндекса и настроенный распбери.

    По затратам CC2531 обошелся рублей в 250, программатор для него CC-Debugger Texas Instrument — 500 руб. Дороже всего обошлись сенсорные смарт-выключатели Livolo VL-C701Z-11 — около 2000 руб за штуку, а чуть позже добавился кнопочный выключатель Aqara Wall Switch Zigbee тоже около 2000.

    Изначально я планировал управлять выключателями через фирменный ZigBee шлюз-маршрутизатор Livolo C700ZW-12, подключить его к опенхабу и рулить с помощью Алисы через yandex2mqtt. Подключил железки к электричеству, настроил приложение от Livolo на телефоне. Шлюз выключатели увидел, соединился и с телефона все прекрасно работало. Но опенхаб с маршрутизатором срастить не удалось из-за отсутствия необходимого функционала в опенхабе.

    Пришлось отказаться от шлюза и сращивать выключатели напрямую с донглом CC2531. И вот в этом помог проект zigbee2mqtt от товарища Koenkk. В результате удалось соединиться ZigBee-координатором со смарт-выключателями, проверить сначала их работу через запросы в mqtt-топик на распбери, а потом и настроить управление с помощью Алисы.

    Итак, как происходила настройка:

    1. Прошиваем сниффер CC2531 прошивкой координатора и втыкаем его в юсб-порт распбери. Для того, чтобы не было сообщений о нехватке питания, распбери лучше подключать к 5В источнику питания не меньше 2А. Проверяем, что стик в системе правильно определился: ls -l /dev/serial/by-id покажет что-то вроде usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0458ED3DDF-if00 -> ../../ttyACM0. Наличие последнего куска вывода "-> ../../ttyACM0" очень важно если что. Стик может определиться и без этой части и работать ничего не будет. Мне при такой проблеме помогла перепрошивка стика.

    2. Устанавливаем Zigbee2mqtt, но не запускаем.

    3. Здесь важно правильно настроить /opt/zigbee2mqtt/data/configuration.yaml. Дело в том, что смарт-выключатели Livolo работают на 26-м канале, поэтому этот канал нужно явно задать в файле. И еще важно обратить внимание на количество пробелов в начале строк файла. Для проверки синтаксиса конфигурационного файла можно использовать YAML-валидатор.

    4. После того, как конфигурационный файл прописан правильно и донгл воткнут, запускаем zigbee2mqtt. Потом топаем к выключателям, запускаем сопряжение и смотрим на вывод консоли. Появятся строки обмена данными, взаимные расшаркивания между устройствами и наконец что-то вроде этого: MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Это значит, что выключатель подключен и прислал свой статус. Если запустить еще пару консолей, то можно через mqtt-топик поуправлять светом: выключить - mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P ***** и включить — mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****, а также можно проконтролировать команды в топике: mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. Кстати, для Livolo и Aqara топики различаются не только идентификаторами 0x0..., но и структурой. Структуру топиков для поддерживаемых устройств можно посмотреть тут.

    5. После того, как проверили, что мы можем управлять устройствами через mqtt, будем сопрягать все с Яндексом. Здесь появился некоторый нюанс. Команды для управления устройствами через zigbee2mqtt в топики приходили в виде ON/OFF, а yandex2mqtt как оказалось выдает 1/0. Решением этой неувязочки была правка в yandex2mqtt файла /mnt/data/root/yandex2mqtt/device.js. Нужно в switch в кейсе «on» заменить значения int = val? на 'on': 'off' вместо '1': '0'. Естественно, пришлось команды переключения также поправить в опенхабе в соответствующих топиках. Без этого свет на Milight перестал бы работать. И самое интересное выявилось тут же — так как yandex2mqtt и zigbee2mqtt публикуют все на локальный сервер mqtt, то для управления устройствами zigbee оказался вроде и не нужен опенхаб. Связка работает напрямую — yandex(Алиса)-yandex2mqtt-mqtt-zigbee2mqtt-устройство zigbee. Даже неожиданно как-то. Но продолжим. Топик управления устройством запиливаем в конфигурационный файл /mnt/data/root/yandex2mqtt/config.js в новое виртуальное устройство, обновляем список устройств в системе диалогов яндекса и можно пинать Алису, чтобы включила лампочку.

    6. Также удалось подключить к системе пару датчиков Xiaomi, датчик протечки и датчик температуры/влажности/давления. Работают на батарейках 2032. Они естественно не управляются, а просто периодически в топики скидывают информацию типа #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:12:21: MQTT publish: topic 'zigbee2mqtt/0x0015************', payload '{"battery":91,"voltage":2985,"temperature":26.2,"humidity":28.65,"pressure":1006.9,"linkquality":52}' - это датчик #всегочтоестьнасвете или #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:21:07: MQTT publish: topic 'zigbee2mqtt/0x001************7', payload '{"battery":100,"voltage":3025,"linkquality":0,"water_leak":true}' — датчик протечки в стакане с водой. Пока никакой особой пользы нет, но если все это отпарсить и сделать что-то реагирующее типа отправки смс или циферок в какую-нибудь вебморду, то будет очень хорошо.

    И немного видео:


    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 19

      0

      Какой-то сложный и дрогой путь вы выбрали, куда проще взять тот же sonoff и управлять ими локально через wifi с нужными интеграциями (home assistant, openhub и тд)
      Или вообще перешить их в tasmota и получить mqtt.
      Бонусом идёт отсутствие необходимости менять проводку ибо работают без нуля.

        0
        Недопонял немного вопроса. Алиса распознает речь, лампочки включаются. Проводку менять не надо, выключатели без нулевого провода. Разверните, плиз, что вы имели ввиду
          0
          вопрос только архитектурного характера так сказать :) почему именно такое оборудование, что было решающим фактором? именно zigbee для выключателей. получается дороже в 2 раза просто чет те которые по wifi.
            0
            Есть выключатели, работающие вообще на 433 мегагерцах. Они еще дешевле, чем зигби и вайфай. Есть очень большая, просто огромная разница. Лучше, если вы сами прочитаете в инете.
            0
            Sonoff в своей линейке имеет выключатели которые не требуют нулевого провода в месте установки выключателя. Минус один — некоторые светодиодные лампы начинают мигать. И с недавнего времени Sonoff может управляться Алисой. Достаточно добавить аккаунт.
              0
              Аккаунты можно добавить на кучу разных устройств и пользоваться ими, это стандартная фишка производителей. И зависеть от работоспособности той же кучи посторонних серверов, потому что ваше устройство будет зависеть не только от яндекса, но и от работы сервера производителя.
                0
                Ваша правда. Пока готов мириться с тем, что Алиса не всегда сможет свет выключить. На что-то более критичное я такие устройства не ставлю. И в планах заменить прошивку выключателей на поддерживающую работу с локальным сервером «умного дома».
          0
          Возможно вопрос не по теме, но как используются голосовые помощники (алиса, алекса и т.д.) в умных домах, помимо распознавания конкретно голоса? Имеет ли смысл вообще покупать их? Или обойтись на триггерах, чисто автоматизация?
            0
            Нууу, хз. Основная от них польза в умном доме — это как раз распознавание голоса. Следовательно, свободные руки и ноги. А автоматизация это совсем другое направление. Голосовое управление это как раз ближе к ручному управлению. Но как и автоматизация, позволяет не бегать за кнопками
              0
              Да если честно, я особо не могу представить сценария их использования.
              «Завари кофе»-но нужно, чтобы в кофемашине стояла чистая чашка и были зерна с водою.
              «Постирай одежду» нужно предварительно загрузить оджеду, а значит нажать кнопку будет чем произносить команду.
              Единственное (для меня, во всяком случае) использование умного дома, это кормление животинок и поливка растений. Во всех остальных случаев, быстрее нажать выключатель или кнопку на пульте.
                0
                тут скорее голосовая активация сцен (конфигурации света в комнате, переключения каналов на телеке, или выключение всего света когда спать идешь) остальное да. быстрее нажать на выключатель
                  0
                  Нету у нас пока роботов. Вот и приходится все ручками делать
                    0
                    Много чего можно упростить. Запустить робот-пылесос не по расписанию, включить свет, телевизор, кондиционер, какой-нибудь освежитель. Чтобы не бегать с десятком пультов и не искать, где они валяются
                      0
                      «Алиса, включи пылесос». И управление светом, как сказали ранее. Иногда чайник включаю, но редко. Потому что потом приходится налить в него воду и снова включить…
                    0
                    Использую в квартире выключатели SonOff + Алиса. Очень удобно голосом включать и выключать свет. Особенно когда руки заняты/испачканы или уже лег в кровать и вспомнил что не выключил свет. «Алиса, выключи весь свет» или «Алиса, включи свет в кабинете» дискомфорта не вызывает.

                    Из триггеров подсветка «огорода» и лампа имитирующая рассвет. В планах вентиляция в ванной по превышению порога влажности. А больше и нечего. Кондиционера или бризера в квартире нет. Возможно для них триггеры были бы актуальны
                    0
                    Без интернета работать будет?
                      0
                      Без интернета будет работать только если поднять распознавание голоса непосредственно на распбери. Это в планах
                      0

                      Где приобретали стик и дебаггер, на Али таких цен не нашел, порядка 1400 за комплект

                        0
                        по отдельности брал.
                        aliexpress.ru/item/4000292560834.html отладчик 400 руб
                        aliexpress.ru/item/32853531081.html кабель 80 руб
                        aliexpress.ru/item/4000059514865.html снифер 2531 250 руб

                        Only users with full accounts can post comments. Log in, please.