Разработчик заставил умные весы передавать данные в Home Assistant, минуя облако производителя

Разработчик Дидак Сабатес (Dídac Sabatés) заставил умные весы Withings Body+ передавать данные напрямую в Home Assistant, минуя серверы производителя. Для этого ему потребовалась плата ESP32 и собственный компонент для ESPHome, который он написал с помощью Codex.

У весов Withings уже есть официальная интеграция с Home Assistant, но работает она через облако производителя. Устройство сначала отправляет результаты измерений на серверы Withings, после чего система управления умным домом получает их через API. Компания указывает в документации своего SDK, что синхронизация данных сторонними приложениями не предусмотрена: данные в любом случае должны сначала попасть в облако.

Разработчик решил избавиться от промежуточного звена с помощью платы ESP32. После взвешивания микроконтроллер получает данные от весов по Bluetooth, а затем ESPHome отправляет их по локальной сети в Home Assistant. Основная сложность заключалась в закрытом протоколе обмена данными весов: в официальной документации не было нужной информации для замены проприетарного приложения Withings.

Для реверс‑инжиниринга разработчик использовал OpenCode с Codex. AI‑агент изучал старую версию Android‑приложения для управления умными весами, сопоставлял декомпилированный код с уже известной информацией о протоколе и на его основе писал компонент ESPHome на C++. После каждой версии прошивки Сабатес заново подключал ESP32, переводил весы в режим настройки, проводил измерение и передавал логи Codex.

После подключения система получает не только вес. Для каждого пользователя разработчик вывел в Home Assistant показатели жировой массы, процента жира, мышечной и костной массы, воды и безжировой массы. При этом не пришлось реализовывать собственную функцию распознавания пользователя. Весы используют встроенные функции идентификации и передают ID пользователя вместе с результатом взвешивания.

Для хранения показателей Сабатес настроил шаблонные датчики Home Assistant. Благодаря этому последний вес не исчезает из интерфейса, если отключить ESP32. Микроконтроллер также сохраняет полученные значения и восстанавливает их после перезагрузки.

Автор проекта ещё не открыл код проекта. Он отмечает, что успел протестировать джейлбрейк с конкретной моделью весов. В других случаях проект может работать с ошибками или не работать вовсе. 

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев