Метки
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
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. И насколько надёжно будет работать соединение через ретранслятор.
Метки: BLE, bthome, esp32, esphome, IoT
Своя прошивка для Ulanzi TC001
2023-02-20 18:52 | Автор: jekader | Filed under: FedoraMD
Пришло время обновить настольные часы в спальне. Основные требования - большой шрифт и точный ход. С нуля делать не имело смысла, поэтому были куплены 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 из коробки, включая шрифт часов, описанный в этой статье.
Метки: esp32, IoT, microcontroller



(3 votes, average: 3,67 out of 5)