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

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