• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE SoC PHY6202

cool2000

Member
Логично, напряжение меньше, соответственно и токи утечки уменьшились.
 

pvvx

Активный участник сообщества
@cool2000 - какие-то проблемы с таймером в gcc.
osal_start_reload_timer()
osal_start_timerEx()
При соединении идут совсем неправильно. Если в nRFconnect поменять интервалы соединения, то вообще всё вылетает, т.е. сплошной вызов события таймера.
 

pvvx

Активный участник сообщества
В keil нормально?
Да. В Keil таймер работает как надо.
В последней версии:
При соединении для считывания замеров с датчика используется таймер с шагом 10 сек. И через 6 замеров опрос батарейки (т.е. каждые 60 сек).
В nRFConnect надо включить notify у температуры и влажности - они будут в логе с шагом 10 сек. Но в варианте GCC - бардачный вызов событий таймера...
 

cool2000

Member
osal_start_reload_timer() это трамплин в ROM, поэтому возможно портится simpleBLEPeripheral_TaskID. Остальные параметры - константы. Из-за чего osalAddTimer() внутри osal_start_reload_timer не находит таймер и создаёт новый.
C:
uint8_t osal_start_reload_timer(uint8_t taskID,uint16_t event_id,uint32_t timeout_value)

{
  uint32_t *puVar1;

  _rom_drv_disable_irq();
  puVar1 = osalAddTimer(taskID,event_id,timeout_value);
  if (puVar1 != (uint32_t *)0x0) {
    puVar1[3] = timeout_value;
    _rom_drv_enable_irq();
    return 0;
  }
  _rom_drv_enable_irq();
  return 8;
}
 

pvvx

Активный участник сообщества
Почему-то влажность не измеряется
Меняется в BTHome каждые 10 секунд.
1704988303237.png

MAC можно прописать в PhyPlusKit, чтобы в HA всё не закакало новыми THB2 после каждой прошивки.


osal_start_reload_timer() вызывается один раз в начале соединения.
Проблемы похоже глубже - в прерываниях или восстановлении после сна...
 

pvvx

Активный участник сообщества
Серийный номер теперь показывает тип Flash - id датчика - дальше может будет серийный номер из OTP flash
1704988918735.png
 

pvvx

Активный участник сообщества
Может добавить функцию в rdwr_phy62x2.py?
А зачем? Это можно сделать один раз.
Запускаете rdwr_phy62x2.py -p COMxx i и далее термометр в режиме программирования и вперед в PhyPlusKit.
Иначе считайте область hal_fs_init(0x1103C000, 2); и перезаписывайте после очистки. Там пока хранится MAC...
А как-то можно без плясок с бубнами удалить этот рой THB2 из HA Passive BLE monitor?
Нет. Невозможно. Такие писатели - им уже неоднократно писали.
В BTHome ещё хуже (писатель тот-же) - удаление не кладет в удаленные, а куда-то исчезают. Но потом как птица Феникс из пепла начинают пакостить в опознанный новый данными от прошлого. Надо перегружать всё, буквально - путем стирания всех кешей и во всех устройствах типа роутеров и т.д. (и потом желательно отключить питание района, чтобы точно всё перезагрузилось :)).
 

pvvx

Активный участник сообщества
Год назад passive monitor был вылечен путем того, что в термометры был вставлен по умолчанию вариант передачи рекламы во всех форматах (по очереди каждый интервал). А BTHome вылез в HA после отключения этой опции. Надо опять напрограммировать такую опцию и лемминги пробьют дорогу для правильной работы в BTHome. На каждый термометр повылазит несколько икон в HA... :)
 

pvvx

Активный участник сообщества
Скопируйте или назначьте в nRFConnect рекламирование в BTHome формате и оставьте телефон на пару часиков... HA bluetooth переполнится, т.к. телефон гонит рекламу с рандом MAC и периодически его меняет :)
Видимо какая-то проблема с сенсором. Уже перепробовал все версии hex с github. В поле влажности всегда 0. Один раз за всё время мигнуло правильное значение.
Меняйте скорость I2C.
У меня пока всё как и было - пониженная влажность, да он под рукой на столе и на него типа дыхание влияет:
1704993188672.png
Если закрыть в коробку - будет ровная линия...
 

cool2000

Member
Добавление задержки между чтением температуры и влажности и чтение сначала влажности тоже не помогло.
 

pvvx

Активный участник сообщества
python3 rdwr_phy62x2.py -p COMxx -b 1000000 wf 0x11000900 0x11000900_24.bin - Будет MAC 38:1F:8D:31:BD:BC пока не сотрете командой полной очистки.
 

Вложения

pvvx

Активный участник сообщества
Добавление задержки между чтением температуры и влажности и чтение сначала влажности тоже не помогло.
Дайте дополнительную команду сброса датчику в init_sensor() send_i2c_wreg(CHT8310_I2C_ADDR0, CHT8310_REG_RST, 0x01);
И какой у него ID ?

PS: Qingping вообще ставит бракованные датчики и не стесняется. Читаются по адресу I2C = 0x00, а команды по правильным адресам....
 

cool2000

Member
OK. Пока я добавил в class phyflasher функцию:
Python:
    def InitFlashFS(self, hp):
        fs = bytearray(b'\xFF')*(0x20)

        # 00 C0 03 11 │ 02 10 00 FF │ FF FF FF FF │ FF FF FF FF
        # AD AC 6E 00 │ 84 AD 4B 8D │ 1F 38 FF FF │ FF FF FF FF
        fs[ 0: 4] = uint2bytes(0x1103C000)
        fs[ 4: 8] = uint2bytes(0xFF001002)
        fs[16:20] = uint2bytes(0x006EACAD)
        fs[20:24] = uint2bytes(0x8D4BAD84)
        fs[24:28] = uint2bytes(0xFFFF381F)

        hp.append([0x1103C000, fs, 0x3C000])
MAC 38:1F:8D:4B:AD:84

pvvx написал(а):
Дайте дополнительную команду сброса датчику в init_sensor() send_i2c_wreg(CHT8310_I2C_ADDR0, CHT8310_REG_RST, 0x01);
ОК!
pvvx написал(а):
Как у вас на изображении C864 ...
 
Сверху Снизу