• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу