pvvx / THB2

Custom firmware for Tuya devices on the PHY622x2 chipset
Other
229 stars 19 forks source link

Feature Request: RTC calibration #72

Open Deoptim opened 4 weeks ago

Deoptim commented 4 weeks ago

Здравствуйте. У меня два датчика BTH01, один Outside (на улице) диапазон +40 до -10 , другой в Freezer chamber (в морозилке) от -19 до -28. Вроде бы кварц или сама микросхема должны показывать разное время отставания, но в принципе они примерно на одном уровне. На скриншотах ниже оно показывает отставание за месяц.

[![Screenshot_2024-10-24-13-53-55-933_com android chrome][1]][1] [![Screenshot_2024-10-24-13-55-43-711_com android chrome][2]][2] [1]: https://github.com/user-attachments/assets/a9359e98-15dc-49a1-b627-78283fd2aadc [2]: https://github.com/user-attachments/assets/56fbc66f-60a6-4250-92c2-2cf7f89321b9

Хотелось бы чтобы появилась функция ввода коэффициента калибровки RTC (даже желательно сделать чтобы можно было ввести три коэффициента калибровки RTC в зависимости от текущей температуры датчика).

pvvx commented 4 weeks ago

В программе применен плавающий коэффициент поправки счета времени. У чипов PHY622x2 существует проблема - сверх большая нестабильность счета RC генератора от напряжения питания. Некоторые партии PHY62222 невозможно заставить работать от напряжения питания более 2.5В. Возникает уход счета RC генератора несовместимый с параметрами спецификаций BLE для соединения. Стандартный SDK от производителя не справлялся с коррекцией - не работало соединение. По этим причинам пришлось патчить стандартный SDK от производителя и вписывать другой алгоритм динамической поправки счета RC генератора. Этот алгоритм плавающий - поправка меняется каждый цикл по мере набора счетчика и в таком варианте говорить о каких-то статических коэффициентах нет смысла.

У меня более десятка устройств на PHY622x2 - работают для теста прошивок с момента первых публикаций альтернативных прошивок. Везде уход часов разный. На некоторых меняется со временем то в плюс, то в минус.

Единственный метод коррекции - периодическое соединение и ввод текущего времени в датчик. Для этого необходимо написать какой скрипт или изменить https://esphome.io/components/display/pvvx_mithermometer.html#only-synchronize-the-time-once-a-day на соединение с другим UUID.