Recent Changes - Search:

Главная страница

Проекты

Статьи

Домашний WiFi роутер

Архив проектов

Загрузки

GitHub

SourceForge

edit SideBar

HomeassistantBtMesh

Бэклог

Фичи

  • удаление интеграции
  • добавить термостат
  • сенсор Battery не может изменять Update Period
  • реализовать push сообщений от узлов в Home Assistant, чтобы изменение состояния отображалось как можно быстрее.

История

09.07.2025 Блокирование очереди при опросе узлов.

Из-за этого, ответы на get-запросы приходят большим опозданиям и меняют текущее состояние на устаревшее.

Выяснилось, что никакой блокировки нет. Установка логов на прием сообщений и их передачи в DBus сервером bluetooth-meshd, показало, что сообщения, переданные DBbus сразу же попадают в обработчики Home Assistant. Сообщения не задерживаются а полностью теряются: не то при отправке (что, скорее всего), не то при приеме.

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

В качестве проверки теории идет разработка нового сетевого контроллера на базе NRF52840, у которого имеется USB контроллер и он не нуждается в последовательном порте для передачи данных.

04.08.2025 Эксперименты с новым контроллером на NRF52840

На данный момент разработан прототип контроллера сети, который использует "честный" USB, вместо последовательного интерфейса. Были получены следующие неутешительные результаты:

  • Несмотря на то, что полностью исчезли ошибки при передачи пакетов (хост->контроллер), скорость все-равно оказалась низкой, и не дотягивает до 4Mbps.
  • Скорость приема пакетов (контроллер->хост) по прежнему выше скорости передачи.
  • Более того, скорость передачи сильно зависит от размера пакетов и достигает максимальной величины при размере пакета 32 байта (вместе с заголовком).
  • С другой стороны, даже эта низкая скорость является избыточной для BLE Mesh сети. Оказывается, в спецификации есть косвенное ограничение на скорость передачи пакетов 100pkts на одно устройство: минимальная пауза между отправками пакетов - 10мс. В стеке nRF Mesh это ограничение еще сильнее: 20мс на Packet Advertising. С учетом накладных расходов на шину USB, контроллер способен передавать пакеты с периодом 25-30мс, что соответствует максимальной скорости: 40pkts.

И тут всплывает недостаток текущей схемы реализации интеграции в HA, когда каждому устройству отправляется запрос GET, как только HA понадобятся от него данные: количество запросов в единицу времени сильно превышает возможности контроллера. Пакеты копятся в очереди, которая только растет и никогда не "рассасывается". Поэтому интеграция и meshd виснут.

Необходимо пересмотреть схему получения данных о состоянии узлов:

  1. Активные запросы делать как можно реже и использовать рандомизацию для расчета периодов, чтобы избегать большое количество пакетов в одно и то же время.
  2. Сделать ставку на пассивное получение статуса от узлов, что сильно усложнить процедуру настройки сети. Скорее всего, придется разработать утилиту, которая поможет автоматизировать этот процесс.

Ссылки:

Edit - History - Print - Recent Changes - Search
Page last modified on August 04, 2025, at 07:59 am