IKEA VINDRIKTNING Zigbee

Приветствую всех читателей Habr. Сегодня хочу поделиться с вами своим очередным проектом по доработке датчика качества воздуха ИКЕА ВИНДРИКТНИНГ. Хаков этого датчика на основе esp на просторах интернета достаточно много, мой проект по модернизации датчика ИКЕА работает на протоколе Zigbee.
gcl22q8nzrarvofqbwbq2liyayo.png

Я спроектировал небольшой адаптер zigbee, который подключается к питанию 5в, от самого датчика ИКЕА ВИНДРИКТНИНГ, и одной ножкой подключившись к serial слушает линию tx. Получив данные, отправляет их в сеть zigbee.
xnrf57gx5mwu2cqiadwabxxgkai.png

В начале статьи хочу сразу объявить о розыгрыше в моей телеграм группе DIYDEV пяти готовых zigbee адаптеров.
Добавляйтесь в мою группу, через неделю, 20 ноября будет проведен розыгрыш между новыми участниками, случайным образом будут выбраны 5 победителей, которым будут высланы zigbee адаптеры для ИКЕА ВИНДРИКТНИНГ.

История с этим проектом началась неожиданно в конце октября 2023 года, на Яндекс Маркете были замечены датчики ИКЕА ВИНДРИКТНИНГ по очень привлекательной цене, что-то в районе 500рублей.
tnt8eeqvm-kosjd43l7y2zgapfw.png

Мысль его модернизировать появилась сразу, в памяти всплыли старые статьи о хаках этого датчика на ESP.

Пока датчик ехал, я собрал немного информации в интернете, статьи, даташиты на сенсор PM, посмотрел проекты на гитхаб. Так что когда мне доставили датчик, я уже хорошо представлял, что находится внутри корпуса и что мне нужно делать.

Начал проект с софта, так как разнообразных платок от своих проектов на cc2530 у меня много, то решил разработку платы оставить на потом. С zigbee частью особых проблем не было, разве что пришлось под данные pm1 и pm10 добавить пользовательские атрибуты 0×00C8 и 0×00C9 в кластер PM2.5 measurement.

Что касается данных pm1 и pm10, то их наличие для меня оказалось полной неожиданностью. Во время сбора информации о сенсоре используемом в датчике ИКЕА ВИНДРИКТНИНГ нигде из доступных источников не упоминалось об этом, да и в даташите который я нашел так же не было информации об этом.

Подключив сенсор к логическому анализатору я сразу обратил внимание, что есть еще 2 группы байтов значения которых изменяется.
z0pnoeg8qpmwxj36djy2spvh9zk.png

После этого я пошел в интернет и начал снова искать документацию на этот сенсор PM1006. На сайте производителя нашел версию даташита четвертой ревизии, и там уже я нашел информацию о данных pm1 и pm 10.
4teephza_druqbeo-nfaodvr41o.png

Скачать даташит на сайте производителя нельзя, они отдают документацию только по запросу от компании. Пришлось сохранить каждую страничку даташита и через онлайн-сервис конвертации в pdf собрать их все в единый файлик, он выложен на моем github, в репо проекта. И еще мне показалось странным, что ни в одном проекте которые я смотрел ни pm1 ни pm10 не реализовывались.

Подключение к материнской плате датчика очень простое. Нужно под паяться к контактным площадкам 5в, GND и Rest (линия tx). После этого весьма простого действия нужно просто собрать корпус и подключить кабель usb.
xqra54k9aawgmbz6n_nj5motule.png

Датчик не имеет кнопок, поэтому реализацию входа в сеть и выхода из сети, я сделал как в лампочках или любых других устройствах с установкой в трудно обслуживаемых местах. Для джойна необходимо открыть сеть для приема новых устройств и подать питание на датчик. Он сделает сканированеи всех zigbee каналов и найдя открытую для входа сеть сделает попытку входа. Для выхода из сети нужно 4 раза сбросить питание у датчика (отключить от кабеля) с интерваломи между отключениями в 8 секунд.

Из дополнительного функционала решил добавить работу с кластером OnOff и биндингом. На основе этого добавил датчику функционал контроллера уровня PM (не знаю как назвать коротко, то же самое что и термостат, только опирается на данные об уровне PM2.5). Датчик можно привязать к абсолютно любому реле, розетке или любому другому исполнительному устройству работающем с кластером OnOff. После привязки установить верхний и нижние уровни PM. После привязки и настройки уровней датчик начнет управлять реле, оправляя на реле команды включения и отключения. Этот функционал будет работать даже без координатора сети и сервера умного дома, так как команды отправляются напрямую.
1tyludjqiqvpb6-npyo79xion3o.png

После того как с софтом было всё сделано, сел за разводку платы для этого проекта. Плата получилась совсем маленькая, радиомодуль, стабилизатор напряжения на 3.3в и светодиод. Гербер файлы для заказа плат доступны на моем github. Платы хотелось получить быстро, поэтому заказ на производство плат разместил в Резоните суперпрочным заказом, через 3 дня курьер доставил посылку с заказом. Плат пришлось заказать больше чем мне нужно, так как цена что на 5, что на 20 плат практически одинаковая. На плате дополнительно вывел i2c и 3в на будущее.
zi3wc6fz7yqouboiikj-hsoxkkm.png

crspd6jyafr7rso7kqhzqojtwl8.jpeg

Впрочем, будущее наступило примерно через 2 недели после того как я собрал себе этот датчик. Решил добавить в проект сенсор VOC. Кандидатом стал сенсор sgp40. Так через 2 недели появилась вторая версия с pm2.5, pm1, pm10 и VOC.
j5_vzyugsuezac1jpduehunih_g.png

Прошивки для обеих версий доступны на моем github. Собраны прошивки для энддевайса, для энд девайса с усилителем, для роутера и для роутера с усилителем.

pwdeugwznkknqgllpwvg5g_mekw.png

Для прошивки платы необходимо подключить ее к SmartRF04EB и прошить через программу SmartRF Flash Programmer.
op38baf7bqbyavw-wty-q3euiry.png

На данный момент проект поддерживается в zigbee2mqtt, zha, spruthub (на гитхаб готовый темблейт, но фидбека пока нет), вероятно будет в sls и homed. C яндекс хабом всё печально.

Еще не знаю закончен ли этот проект или будет продолжение.

04km7ueear0bmlg6k49us9m0e_k.jpeg

vumgepkv_kc6xo5nvtfby_yjmbk.jpeg

Спасибо за внимание, всем добра!

© Habrahabr.ru