• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

TLSR8251 + LCD + термометр = LYWSD03MMC XIAOMI Bluetooth термометр

pvvx

Активный участник сообщества
Bluez при активном сканировании постоянно переписывает файлы с найденными устройствами и если у вас много BLE датчиков, то этот поток непрерывен и все SD в RPi умрут :)
А опция пассивного сканирования пока "экспериментальная", и встроена в HA bluetooth то после долгих указаний на это безобразие.
Но с эти связаны ещё некотjрые фичи. Проявятся опсоля...
Ка-же долго, уже с 2016 года, Linux не может поддерживать BLE... :cry:
Интересно - уже избавились от детсадовского кода в ядре по поводу блокировки BT адаптера на время сканирования?
И так и продолжают при соединении ожидать минимум 2 рекламных события (пару adv интервалов)?
С первого получения-обнаружения рекламы от нужного устройства адаптер BT соединяется влет. Но не в linux.
 

pvvx

Активный участник сообщества
Бедные обманутые пользователи Home Assistant.

Чтобы адаптер был помечен как High Performance, должны быть выполнены следующие требования:

  • Установить соединение примерно за 1 с или меньше
  • Обрабатывать не менее одной рекламы в секунду с устройства без потери данных
  • 95% попыток подключения успешны в течение двух попыток
  • Соответствует вышеуказанным требованиям с Home Assistant Core 2022.11.1 или более поздней версии и операционной системой Home Assistant 9.3 или более поздней версии.
  • Должен быть в состоянии удерживать пять (5) соединений одновременно

Время соединения зависит от интервала рекламы. Смотреть, что там делает Bluez. А так-же смотреть какое соединение у вас выйдет если интервал рекламы установлен на максимум стандарта BLE в 10 секунд и отработает ли ваш адаптер это когда либо. Пользователи Apple плачут...

Количество принятых реклам на нормальном адаптере может достигать более сотни в секунду. И определяется тупым кодом его прошивки и шиной соединения.
Минимально нормальная скорость USB2.0 – это HiSpeed. Никаких FS, как это имеют большинство описанных на странице адаптеров.
Из них только CSR A10 имеет USB2.0 HS. Но он всего BT4.2. И на нем успевают пролезать по шине заголовки HCI составляющие большую часть трафика.
Ограничение скорости PHY у BLE с HCI интерфейсами учитывать нет смысла – там данные зажаты заголовками и прочим превосходящим мусором.
И если у вас рой BLE, то коллизии обеспечены - следовательно потери приема будут обязательно.

PS: в данной статейке только недавно убрали пометку "LongRange" у адаптеров с внешней антенной :)
 

pvvx

Активный участник сообщества
Нужны другие платформы, какие одноплатники имеют чипы ble 5.x не только квалифицированные как ble 5, но и реально поддерживающие это - мне пока не понятно.
Вот в описанных в рекомендации от Home Assistant адаптеры принимают всего штук до 5-ти реклам в сек, все имеющие USB2.0 FS. Точно не проверял, но с моим роем BLE они не справляются, кроме SCR A10.
Постоянные дыры в приеме, рваные графики...
И смысл в них искать варианты с поддержкой "Long Range", если они и с одним форматом PHY не справляются, а фреймы в Coded PHY ещё и дольше по времени передачи и займут всё, исключив прием обычных на 1M PHY?
И в RPi шум от SSD и USB3.0 забивает всё в округе (интересно как они получили сертификацию от радио-контроля...). Так что забудьте про RPi - с BLE оно не дружит.
 

sL0n1k

Member
Здрасьте.
Могу выслать какие-то скрины.
Да, я совсем забыл, что надо хоть какой-то бэкграунд дать, чтобы понимать специфику.
Мы занимаемся разработкой термоштанг (в том числе и BLE) для контроля t и h хранения зерна (в основном).
Эти штанги многозонные (по высоте до 16 датчиков) разной высоты, в складе обычно одновременно установлено не менее 30 штанг. Поэтому приложение заточено на работу с большим количеством датчиков по BLE, также с коллектором данных (на малинах и апельсинах) по MQTT. Понятно, что наши разработки с pvvx во многом схожи, поэтому его продукт легко идеологически интегрируется в приложение, а также в коллектор, который на малине. Основной функционал коллектора - отправлять pdf-отчеты и аналитику на указанные e-mail несколько раз в день. Пользоваться приложением при большом количестве штанг, лучше настроив предварительно группы и лучше, конечно, чтобы данные были в адверте. Это кратко.
Андроид приложение у нас бесплатное. Есть такое же виндновое, тоже бесплатное (но оно без BLE)
Я при необходимости (и при желании) добавляю в него какие-то новые девайсы сейчас это Xiaimi, pvvx, элекро счетчики Энергомеры. (Немного еще потестирую, дам ссылку, если надо.)
 

Вложения

  • 244.6 KB Просмотры: 8
  • 246.5 KB Просмотры: 8
  • 143.7 KB Просмотры: 8
  • 240.3 KB Просмотры: 8
  • 303.5 KB Просмотры: 8
  • 334.1 KB Просмотры: 8
  • 163.3 KB Просмотры: 8
  • 163.3 KB Просмотры: 7
  • 190.9 KB Просмотры: 6

pvvx

Активный участник сообщества
@sL0n1k - на Adnroid на С++ или?
Я не пишу ПО на Android (пока, но не вижу преград - все языки и ОС давно для меня едины). Но интересует - возможно ли принять заголовки расширенной рекламы на Coded PHY на основных каналах?
Web Bluetooth API ( js c html) этого не позволяет.
 

pvvx

Активный участник сообщества
4 апреля 2022 г., 16:30
Это эхоВыпуск 148487283, и влияет на все телефоны Android.

Это происходит потому, что BluetoothLeScanner.startScan https://developer.android.com/reference/android/bluetooth/le/BluetoothLeScanner#startScan(java.util.List%3Candroid.bluetooth.le.ScanFilter%3E,%20android.bluetooth.le .ScanSettings,%20android.app.PendingIntent) никак не использовал getPhy() и весь стек вызовов сводится к вызову https://cs.android.com/android/platform/superproject/+/master:packages/modules /Bluetooth/system/stack/btm/btm_ble_gap.cc;l=1937;drc=c7b713eba636b891d4c9710555cf0b6cac65ec6c , которые вызывают btsnd_hcic_ble_set_extended_scan_params https://cs.android.com/android/platform/superproject/+/master:packages/system /стек/btm/btm_ble_gap.cc;l=1937;drc=c7b713eba636b891d4c9710555cf0b6cac65ec6c с жестко запрограммированным 1 Мб физ.
Поэтому невозможно сканировать в режиме Coded Phy.
 

pvvx

Активный участник сообщества
До этого события "писатели" отписывались 2 года. Тупо посылали всех лесом при словах Coded PHY. Сслыки тоже можно привести.
Это какая-то забастовка корпораций для допуска BLE Long Range в народ продолжающаяся c 2016 года .
 

sL0n1k

Member
@sL0n1k - на Adnroid на С++ или?
Я не пишу ПО на Android (пока, но не вижу преград - все языки и ОС давно для меня едины). Но интересует - возможно ли принять заголовки расширенной рекламы на Coded PHY на основных каналах?
Web Bluetooth API ( js c html) этого не позволяет.
Long range advert да, позволяет, это давно работает, а вот adv extention не знаю, я пока не придумал для чего его можно использовать, мне не нужно передавать много данных в адверта, пока не нужно, возможно это будет актуально для миниатюрных камер видеонаблюдения, мы такое планируем для контроля зараженности зерна, но когда это случится - не известно)
 

sL0n1k

Member
Да, при необходимости это можно сделать. Я Вам, как художник художнику ))
 

pvvx

Активный участник сообщества
Long range advert да, позволяет, это давно работает, а вот adv extention не знаю, я пока не придумал для чего его можно использовать
Для увеличения дальности работы BLE. И ничего другого.
adv extention единственный тип, где допустим Long range. На трех стандартных каналах передается заголовок, который указывает на каком канале будет основное тело рекламы и в каком формате PHY.
C BT5.0 заголовок на основных 3-х каналах может передаваться и на 1M или на Coded PHY. Второй вариант с Coded PHY все производители игнорируют с 2016 года и смысл Long range потерян.
 

pvvx

Активный участник сообщества
Да, при необходимости это можно сделать. Я Вам, как художник художнику ))
Угу - известно = raw rкоманды HCI в Linux прямо в адаптер BT. И работает это до первого переключения сторонним приложением. Т.е. можно сказать - не работает, т.к. смысла нет - ничего не удастся использовать, только своё.
Тут проще сниффер...
Переключение PHY в Bluez тоже начали править только недавно... и пока криво. Та и вооще команду переключения PHY в ядро Linux тоже только недавно внесли, не исправив остальные ошибки.
 

sL0n1k

Member
Когда, я пишу adv extention, я имею ввиду доп. каналы, когда можно передать до 1.5 кбайта в адверте, мне это не надо, мне достаточно на прймери каналах s2 и s8, это для дальность только
 

sL0n1k

Member
Кстати, новый датчик на e-ink кое-что умеет из bt 5, но это слишком рудимент, он умеет повышать скорость до 2 Мбит, при установленном соединении и это к сожалению все, что китайцы из пятерки добавили в него
 

pvvx

Активный участник сообщества
Когда, я пишу adv extention, я имею ввиду доп. каналы, когда можно передать до 1.5 кбайта в адверте, мне это не надо, мне достаточно на прймери каналах s2 и s8, это для дальность только
А как приемник узнает какой у вас дополнительный канал, если заголовки не приняты, т.к. датчик далеко и передача на 1M уже не катит?
 

sL0n1k

Member
Так там ничего не изменилось, там только помехоустойчивое кодирование- это в спецификации есть
 

sL0n1k

Member
Да, теперь китайцы не пишут в флеш архив, только в оперативную, думаю разумно, запись флеша жрет батарею, очевидно. Вопрос такой возник: как выключить экран совсем у Вас?
 

pvvx

Активный участник сообщества
Так там ничего не изменилось, там только помехоустойчивое кодирование- это в спецификации есть
Ничего? :)
Понижение модуляции дает прибавку в дальности и в совокупности с доп. кодированием это дает теоретическое увеличение дальности связи в не менее 4 раза. Практика и все сторонние тесты устойчиво показывает что дальность свзяи увеличивается от 2-х раз. Читайте спецификации, тесты и сами проверьте.

И вот пример на английском, раз вы не понимаете по русски, что такое и как включить LongRange :
Я тестирую на двух телефонах: Pixel 4 с Android 10 и Sony Xperia L3.
Оба утверждают, что поддерживают Bluetooth LE PHY Coded (BluetoothAdapter#isCodedPhySupported).

Я использую nRF Connect для Android для тестирования. Приложение может сканировать пакеты только в том случае, если основной PHY имеет значение PHY LE 1M. Если и первичный, и вторичный PHY настроены на «Закодировано», эти телефоны ничего не найдут. Однако OnePlus 6 возвращает результат примерно через 10 секунд, что указывает на проблему с контроллером.
Протестировано с S=8. Я вижу пакеты с помощью Ellisys Bluetooth Analyzer. Когда основная реклама отправляется по PHY-коду, эти 2 телефона не возвращают ни одного устройства.
Это также можно проверить с двумя телефонами и nRF Connect, установленным на обоих. Используйте один для рекламы и один для сканирования. Если реклама настроена на использование закодированного физического уровня как для первичного, так и для вторичного физического уровня, пакеты будут видны на анализаторе Ellisys, но не на телефоне.
Кроме того, когда BluetoothLeScanner использует ScanSettings.Builder#setPhy(BluetoothDevice.PHY_LE_CODED), сканер также возвращает только 1M пакетов, и не выдается никаких ошибок, что закодированный phy не будет поддерживаться. В этом случае ожидаемым результатом будет как минимум отсутствие сообщений об устройствах.
 

pvvx

Активный участник сообщества
Да, теперь китайцы не пишут в флеш архив, только в оперативную, думаю разумно, запись флеша жрет батарею, очевидно. Вопрос такой возник: как выключить экран совсем у Вас?
Программно - никак - на большую часть чипов дисплеев в Xiaomi LYWSD03MMC нет документации. Паяльник рулит.
В XiaomiLYWSD03MMC вроде уже 4 или больше типов LCD контроллеров. И это зависит от версии HW: B1.4,B1.5,B1.6,B1.7,B1.8,B1.9,B2.0
По отключение дисплея даст вам от силы пару процентов жизни батарейки. А если чип вырвать - десятки %.
Но на некоторых HW его не выпаять - кристалл залит типа эпоксидкой прямо на плате :) Тут - резать дорожки платы. :)
 

sL0n1k

Member
Ну, как бы ничего))
Я не использую вторичные каналы никак ни на Андроиде ни внизу только первичные s2 8
 
Сверху Снизу