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

BLE SoC PHY6202

cool2000

Member
Скорее всего, но не хватает знаний, что именно :(.

Подкорректировал html, надо посоветоваться.
1707307537022.png
Поле флагов читается/пишется командой 0x55. При этом, желательно иметь возможность устанавливать флаги, относящиеся к выделенной группе параметров отдельно или чтобы можно было отправлять укороченную до размеров поля флагов команду . Они же относятся только к моделям с экраном? Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.
 

pvvx

Активный участник сообщества
Поле флагов читается/пишется командой 0x55. При этом, желательно иметь возможность устанавливать флаги, относящиеся к выделенной группе параметров отдельно или чтобы можно было отправлять укороченную до размеров поля флагов команду . Они же относятся только к моделям с экраном? Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.
По поступлению CMD_ID_DEVID (0x00) надо включать только те элементы, которые описаны в флагах devsrs.services.

Пример:

#define SERVICE_SCREEN 0x00000020 // есть экран
#define SERVICE_TH_TRG 0x00004000 // триггер по температуре и влажности

> Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.


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

pvvx

Активный участник сообщества
Позже слеплю опрос долгого нажатия кнопки (на более 15 сек) для сброса всех настроек на default.

Очень многие привыкли к ESP (- оно посылает значения раз в час) и возмущаются, что передача замеров идет так быстро :)
 

pvvx

Активный участник сообщества
Сильно раздражает, что постоянно рвётся соединение.
Попробовал на 5 разных USB-BT адаптерах на Windows, не считая встроенного на PCIe и смартфонов.

Взял BTH01Y_V1.2, т.к. у него самый большой уход счетчика RTC – более +400 сек за сутки.

Соединение не отваливается.

На адаптере с ATS2851 наглядно видно, что он полный тормоз. Данные считываются с ужасной задержкой. Но соединение держит.

Отваливание происходит в Linux? - тогды ой :) Поменяйте latency - вдруг поможет...
 

cool2000

Member
Отваливание происходит в Linux?
Неа, на планшете. Возможно тупит Samsung.
pvvx написал(а):
Поменяйте latency - вдруг поможет...
А какое значение поставить?

Залил обновление html. Стили и js для рисования графиков вынес в отдельные файлы. Пока флаги оставил как есть. Проверьте, что ещё добавить/поправить, чтобы можно было поставить версию 1.0 ;).
 

pvvx

Активный участник сообщества
А какое значение поставить?
Любое - оно в "интервалах соединения" (равных 30 мс) но в виде времени интервала "молчания" при соединении - сколько можно пропустить термометру "интервалов соединения" не выходя на связь. Меньшее значение - термометр будет больше потреблять, большее - адаптер будет долго ожидать когда термометр выйдет на связь для передачи команд.
Интервал соединения и latency сильно сказываются на стабильность соединения при расхождении часов. И чем меньше интервалы - тем меньше влияет расхождение часов...
 

pvvx

Активный участник сообщества
На Xiaomi термометрах, у которых пожадничали кондеров в питании, в начале соединения - пока не согласовали длинные интервалы, происходит удар на подсаженную батарейку и у чипа сбивается-уходит таймер. Но, если latency ставить до 1 сек, то это прокатывает, а большее значение latency - уже разрывает соединение, т.к. таймер бреданул при провале напряжения ниже минимума... Потом таймер идет нормально, отклонения в ppm в норме, питание не так жрет, т.к. уже согласовали интервалы соединения на длинные и батарейка успевает...
 

pvvx

Активный участник сообщества
Слепил передачу open/close со счетчиком. Вышел бешенный - принимает open/close 50 Гц (от прикосновения рукой до входа).
 

pvvx

Активный участник сообщества
Наводка от руки - 50Гц, а фиксирует оба фронта ( дверь/окно open/close :) ), т.е. сотня пробуждений-передачаBLEрекламы-засыпание в сек.
@cool2000 - как раз эта функция open/close создает частые прерывания с пробуждениями и при "соединении" происходит потеря синхронизации или ещё чего-то. Т.е. конкретно теряет связь - заканчивается пачкой передача-прием с шагом 30 мс до таймаута соединения... Это явный признак потери соединения со стороны PHY.
Основные возможные причины (по предполагаемым приоритетам):
1. Сбой при чтении RTC счетчика в wakeup функции.
2. Переполнение каких-то буферов передачи, т.к. пытается передать notify каждый фронт 50 Гц. Но должно отрабатывать с возвратом ошибки...
3. Кому-то не нравятся прерывания.
 

pvvx

Активный участник сообщества
Где-то на 2.1 секунде (2100 мс) потеря связи.
1707372132525.png
 

pvvx

Активный участник сообщества
Более наглядный:
1707374035650.png
Но если замыкать кнопкой не очень быстро, то не рвет. Похоже на "повторное вхождение в прерывание" (?)...
 

pvvx

Активный участник сообщества
У Telink тоже глючат прерывания по пинам во время соединения. Но там глючит PM менеджер - не врубает sleep раз-на раз - так и тянет до следующего события, но соединение не нарушает.
Там пришлось отключить опрос ног по прерываниям при соединении на некоторых моделях, т.к. зависит от в каком GPIO порта пин с irq... :(
 

pvvx

Активный участник сообщества
Это очень похоже.
Чип очень мало потребляет, поэтому любая наводка может вызывать проблемы.
Но в режиме рекламы проблем никаких - наверно отработает и 200Гц по два фронта (к 400 передачам реклам). Там тайминги пофигу.
 

pvvx

Активный участник сообщества
Интеграция BTHome в HA и пару Гц уже не тянет на прием. Возможно и вытянет пару, если сменить адаптер на CSR8510A10.
"Passive BLE Monitor" ещё как-то успевает на CSR8510A10 принимать события с частотой дцать раз в секунду :) И это в окружении к 60 орущих BLE...
 
Подскажите, а в TH-05 на Вашей прошивке, экран показывать что-то должен?
Так-то он работает, но экран пустой.
 
Правда я загрузил в него BOOT_TH05_v11.hex, может это влиять?
Через PHY62x2BTHome.html не получается загрузить полную версию, датчик находиться, но не подключается.
 

pvvx

Активный участник сообщества
TH05 есть в нескольких вариантах. На печатной плате есть номер варианта. Пока работает только "TH05_V1.4", т.к. других у меня ещё нет.
 

pvvx

Активный участник сообщества
Пишут, что работает и на
  • TH05_V1.5 2023-05-23 с BL55028 и ATH20
  • TH05_V1.6 2023-06-02 с BL55028 и ATH20
 
Сверху Снизу