IoT зоопарк: Bluetooth LE датчики

    2025-12-26 20:41 | Автор: jekader | Filed under: FedoraMD

    Датчики к умному дому традиционно подключаются по протоколу Zigbee, но на глаза попался Bluetooth LE термометр всего за 3 доллара. Заказал ради интереса. Пришло вот это:

    улыбается

    Сразу уточню, что Bluetooth LE имеет мало общего с классическим Bluetooth. Датчик просто отправляет показания с регулярными интервалами: никаких сопряжений и двухсторонней связи не требуется. К сожалению, данные могут иметь произвольный формат и как результат у каждой модели он свой, привязанный к подозрительному китайскому приложению на смартфон.

    Эту проблему призван решить протокол BTHome. На их сайте есть список поддерживаемых устройств - полезно его изучить перед покупкой. Я этого, конечно же, не сделал.

    К счастью, мой датчик оказался на базе микроконтроллера PHY6222, под который есть альтернативная прошивка с поддержкой BTHome. Так что припаиваюсь согласно инструкции и прошиваю по последней моде - прямо через браузер.

    Следующая задача - заставить Home Assistant видеть Bluetooth устройства. Учитывая, что у меня всё работает в rootless podman, попахивало танцами с бубном. Были также опасения, что Bluetooth это маломощный протокол и далеко от приёмника датчик не отодвинуть. Благо, и для этого придумали решение: Bluetooth Proxy посредством ESPhome. То есть: датчик отправляет BLE датаграммы, их получает плата ESP32 и уже по WiFi передаёт их в Home Assistant. Таких ретрансляторов может быть несколько, что позволяет существенно расширить зону покрытия.

    Если уже есть устройства ESPhome, можно на них активировать ретранслятор добавив пару строк к конфигурации:

    bluetooth_proxy:
      active: true

    Я пошёл другим путём и установил плату ESP32 в качестве исключительно ретранслятора. Всё максимально удобно и делается опять-же прямо через браузер. Подключаем ESP32 через UART, идём сюда, выбираем Bluetooth Proxy, прошиваем и подключаем к сети wifi.

    На стороне Home Assistant достаточно указать IP адрес платы ESP32 в плагине ESPhome. После этого, рядом расположенные BLE датчики определятся автоматически.

    Очень недурно, учитывая низкую цену датчика. Посмотрим, сколько выдержит батарейка CR2032. И насколько надёжно будет работать соединение через ретранслятор.



    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
    Loading...

    Метки: , , , ,

    Comments (0) »


    Своя прошивка для Ulanzi TC001

    2023-02-20 18:52 | Автор: jekader | Filed under: FedoraMD

    Пришло время обновить настольные часы в спальне. Основные требования - большой шрифт и точный ход. С нуля делать не имело смысла, поэтому были куплены Ulanzi TC001:

    Ulanzi TC001

    Устройство выполнено качественно. В наличии - цветная светодиодная панель 8x32, батарейка, три кнопки, датчик освещённости и пищалка. Это, собственно, не совсем часы, так как умеют из коробки отображать множество видов информации (погоду на Луне, число подписчиков на ютубе, и т.д, какие-то анимации). Функционал можно расширить, подключив устройство к софту по имени AWTRIX, позволяющему выводить на панель ещё больше всяких свистоперделок. Поигравшись вдоволь, я решил что мне всё же нужны лишь точные часы, и держать для этого Java приложение на отдельном компьютере - перебор. Поэтому решил изучить вопрос изменения прошивки, тем более в софте со всех сторон торчали уши платформы ESP32. Ещё хотелось иметь контроль над софтом, так как ботнет у себя в спальне иметь в планы не входило, а с китайскими прошивками такое часто бывает.

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

    К счастью, спустя всего пару дней всё поменялось: видимо, не мне одному пришла посылочка из Китая. Работа в сообществе закипела, произведя на свет форк проекта PixelIt:

    https://github.com/aptonline/PixelIt_Ulanzi

    Установил PlatformIO, склонировал репозиторий, после этого достаточно было нажать заветную кнопку Upload Filesystem Image, чтобы собралась прошивка и отправилась по USB проводу прямиком в часы. Заработала почти без нареканий, был в ней и крупный шрифт, правда не такой как мне хотелось бы.

    Не беда: у нас ведь все исходники под рукой! Набросал в GIMP новые циферки, перегнал их в нужный формат и вот уже всё тикает:

    Который час?

    Теперь всем доволен: часы работают автономно, в интернет лезут только сверить время по NTP, внешнего "мозга" для работы не требуют. При этом, при желании на них можно по сети выводить текст, картинки, и прочие глупости.

    Как вывод могу отметить, что поддержка OpenSource разработки ESP32 за последние годы вышла на качественно новый уровень. Инструменты, такие как PlatformIO, позволяют прямо из VScode вести разработку и отладку сложных проектов с множеством зависимостей, а количество имеющихся готовых библиотек для всяческой периферии сильно упрощает процесс.

    Это на руку и разработчикам устройств. Как уже упоминал, оригинальная прошивка была собрана абсолютно этими же инструментами, с использованием этих-же библиотек. Исходников не публиковалось, Столлман негодует, но к счастью они и не требуются, учитывая что более качественные прошивки появились за какие то пару недель с момента поступления устройства в продажу. Тем не менее надеюсь, что оригинальная прошивка благодаря OpenSource библиотекам получилась менее дырявая, чем если-б её писали с нуля на коленке.

    UPD: На данный момент, оригинальный PixelIt поддерживает TC001 из коробки, включая шрифт часов, описанный в этой статье.

    1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 3,67 out of 5)
    Loading...

    Метки: , ,

    3 комментария »