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

BLE SoC PHY6202

pvvx

Активный участник сообщества
Пока проводками.
C Tuya нужно слишком много - ключи регистрации с разными приколами от каждого производителя конкретного устройства...
 

almirus

New member
Ну тот кто решился на прошивку, без проблем у самой туи и могут получить ключи
а те кто имел дело с HA и Tuya тем более
 

almirus

New member
я имел виду персональный ключи устройств, а не корневые
их недостаточно?
 

pvvx

Активный участник сообщества
Запилил, отладил TH-05:
1706025892879.png
Жрет в спячке от 15 мкА. Менее не выудить. Прошивка Tuya - во сне 23 мкА!
Средний ток от 3.3В выходит 20..22 мкА. При 2.5В - 20 мкА.
Датчик AHT2x кошмарный - во время измерения кушает к 1 мА.
При 2.5В данный LCD c чипом драйвера BL55028 уже имеет контрастность для разглядывания специальным оборудованием...
 

cool2000

Member
По поводу LE Coded.
Покопался немного в исходниках SDK и в Гидре.
Надо прояснить некоторые моменты.
  • Правильно ли я понимаю, что рекламу в LE Coded можно передавать только на дополнительных каналах?
  • thb2_peripheral.c:gapExtAdvParameterInit()ставится режим рекламы на дополнительных каналах p->secondaryAdvPHY = 1; 1M (uncoded)? Для LE Coded 125K д.б. p->secondaryAdvPHY = 3;
  • Там же: Сначала обнуляют структуру, потом используют значение p->advHandle в качестве индекса.
  • Там же: p->advDataLen = 0;?
  • Там же: isPeriodic == FALSE, но не задаётся явно на каком канале передавать: поле auxChn.
thb2_peripheral.c
C:
static llStatus_t LL_InitialExtendedAdv(extAdvInfo_t* extAdvInfo,
                                        uint8 extAdvSetNumber,
                                        uint16 advSetMaxLen)
{
  int i;
 
  LL_InitExtendedAdv(extAdvInfo,extAdvSetNumber,advSetMaxLen);
  g_advSetMaximumLen = advSetMaxLen;
  g_extAdvNumber = extAdvSetNumber;
  g_pExtendedAdvInfo = (byte *)extAdvInfo;
  for (i = 0; i < g_extAdvNumber; i++) {
    g_pExtendedAdvInfo[i].data.dataComplete = 1;
  }
  return 0;
}
 

pvvx

Активный участник сообщества
  • Правильно ли я понимаю, что рекламу в LE Coded можно передавать только на дополнительных каналах?
yes. И заголовок на первичном канале (основных каналах рекламы) в LE Coded. В спецификации BT на основных каналах можно работать (гнать заголовки расширенной рекламы) только с 1M и LE Coded.
  • thb2_peripheral.c:gapExtAdvParameterInit()ставится режим рекламы на дополнительных каналах p->secondaryAdvPHY = 1; 1M (uncoded)? Для LE Coded 125K д.б. p->secondaryAdvPHY = 3;
  • Там же: Сначала обнуляют структуру, потом используют значение p->advHandle в качестве индекса.
  • Там же: p->advDataLen = 0;
вопросы не поняты. Там должно быть всё просто... Позже буду подключать рекламу на LE LR.
  • Там же: isPeriodic == FALSE, но не задаётся явно на каком канале передавать: поле auxChn.
Вторичный канал выбирается автоматически. Но можно и задать (обычно для отладки)... Я не глядел что там, в текущем SDK...
Знаю что надо буферов навалять, т.к. размерчики у расширенной рекламы большие и обычно SDK ждет буферы на килобайты ...
 

pvvx

Активный участник сообщества
Короче - есть понятие "Extended Advertising". В неё входит и вариант периодической рекламы, а так-же и далее - PAwR
Все эти ext на основных каналах передают только заголовок и прочие настройки, указывающий где будет передано основное тело .
Эти заголовки передаются в PHY 1M или Coded PHY. А тело в любом PHY и на дополнительных каналах.
Тело может состоять из кусков по несколько кбайт. У них там есть и номер канала, но не радио, а типа id для приема блоков. Блоки имеют номерки... :)
По этому SDK обычно просит памяти, т.к. думает, что вы собрались передавать на несколько каналов и сотнями килобайт...
 

pvvx

Активный участник сообщества
Известная вам BLE реклама (BT4.2) ныне называется Legacy. В SDK у "драйвера ExtAdv" должен быть выбор ExtAdv или Legacy для поддержки совместимости устройства с устаревшей операционной системой Linux.
 

pvvx

Активный участник сообщества
У ExtAdv типов меньше - она не может быть одновременно с ответом на активное сканирование и соединение. Только раздельно.
Но это пофиг, т.к. размер передаваемого блока без труда вмещает и имя устройства, которое обычно запрашивают активным сканированием (и активное сканирование не нужно).
И одно устройство может гнать все типы реклам одновременно* - т.е. сколько влезет в антенну по времени, т.к. обычно передатчик один...
 

pvvx

Активный участник сообщества
Номерки каналов и блоков нужны чтобы приемник собрал их в последовательную кучку.... И только ввод PAwR решает задачу подтверждения приема и прочего, т.к. выходит почти MESH или Zigbee, но без всяких ненужностей...
Но временная диаграмма в BLE другая - окно приема после передачи малое - типа 500 us до приема синхро... А в MESH/Zigbee устройство тупит - ждет ответа тупого координатора или роутера...
 

pvvx

Активный участник сообщества
И всё дело в Zigbee происходит на одном канале и не может прыгнуть на более чистый, как у BLE.
И т.к. скорости ответов и прыжков по каналам быстрые, то устройству желательно иметь все заранее подготовленные данные на все запросы-ответы-ход дела.
По этому ESP и тупит в BLE - как оно может работать с выводом лога в UART или MQTT при ловле кусочков с переключениями за микросекунды на разных каналах...
 

pvvx

Активный участник сообщества
Соединение BLE чем-то похоже на USB. Если одна из сторон тупит и не успевает отрабатывать прерывания и подготавливать новый блок для передачи/подтверждения, то скорость катастрофически падает, т.к. следующий сеанс связи для передачи следующей порции (передача-подтверждение-передача-п...) будет только через интервал соединения...
OTA можно ускорить, набирая буфер. Ограничения блоков одной завязки в MTU, а у народа в основном адаптеры и Linuх десятилетней давности, которые не умеют ничего.
 

pvvx

Активный участник сообщества
Ограничения блоков одной завязки в MTU и сколько пакетов по времени влезет в "интервал соединения" (если адаптер не обкакается или ведет связь с несколькими, то ограничит), а у народа в основном адаптеры и Linuх десятилетней давности, которые не умеют ничего - по 20 байт за 1 интервал. Как в USB1.0.
 

pvvx

Активный участник сообщества
TH-05 у меня уже сутки "тестируется". А нужны тесты на работу с разными установками конфигураций и т.д., которые ещё не описаны для "пользователей" в HTML/js. :p
За 3 года поддержки альт.прошивок ATC_MiThermometer ни один "тестировщик" ничего внятного не дал, кроме претензий к внешнему интерфейсу.
 

pvvx

Активный участник сообщества
1706109314575.png
Так что "тестировщики" без знаний и копания в исходных кодах нафиг не нужны. Только тратить время и разгребать их негатив.
 

pvvx

Активный участник сообщества
Нормальных тестировщиков во много-много раз меньше чем “программистов”. И знаний у них должны быть более чем у хорошего системного программиста, плюс знания по всем ОС, имеющемуся на рынке оборудованию и по всей электротехнике. Плюс наличие полного комплекса измерительного оборудования. Всё остальное “тестирование” – это пустая трата времени и средств.
 
Сверху Снизу