• Система автоматизации с открытым исходным кодом на базе 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 ...
 
Сверху Снизу