pvvx / THB2

Custom firmware for Tuya devices on the PHY622x2 chipset
Other
92 stars 13 forks source link

Информация #10

Open pvvx opened 5 months ago

pvvx commented 5 months ago

Описание для программ версии от 1.0.

Распределение Flash 512 килобайт

Адрес Описание Размер
0x00000 Используется ROM 8 килобайт
0x02000 Boot Info для ROM 4 килобайта
0x03000 FW Boot с функцией OTA 52 килобайта
0x10000 FW APP 128 килобайт
0x30000 Запись истории 304 килобайт
0x7C000 Сохранение настроек (EEP) 16 килобайт

FW Boot и OTA

Поддерживаемые функции и сервисы описываются включенными битами в 32-х битном поле dev_id.services.

FW Boot запускается по старту, и если не нажата кнопка, проверяет есть или нет запись FW APP. Если есть – запускает FW APP. Если кнопка при старте нажата - запускается FW Boot.

При соединении указывается:

Software: Vx.x - значит работает FW APP Software: Bx.x - значит работает FW Boot

На термометрах с экраном, если не включено отображение времени, при первом старте показывает:

Принудительно перезагрузиться в FW Boot из FW APP возможно двумя способами:

  1. Отключить питание и удерживая кнопку включить питание.
  2. Подать команду 7233 в меню Service программы PHY62x2BTHome.html и отключить соединение.

Полная перезагрузка - Подать команду 7201 в меню Service программы PHY62x2BTHome.html и отключить соединение.


Через USB-UART адаптер App можно записать сразу после boot. Пример:

python3 rdwr_phy62x2.py -p COM11 -e wh ./bin/BOOT_TH05V13_v13.hex
python3 rdwr_phy62x2.py -p COM11 -r we 0x10000 ./bin/TH05V13_v13.bin
pvvx commented 4 months ago

Событие Open/Close и счет импульсов

С версии 1.2 поддерживается опрос вывода подключенного к геркону или контакту, замыкающемуся на GND. Максимальная частота переключения - 100 раз в секунду. Если контакт имеет дребезг, тогда желательно зашунтировать контакт конденсатором. При замыкании или размыкании передается блок из 5 BLE реклам следующих друг за другом через период в 50 мс. При каждом событии "Open" прибавляется счетчик. Значение счетчика передается совместно с каждым событием "Open/Close".

Входной контакт на плате термометра:

image

Вывод управления внешним устройством по температуре и/или влажности

Контакт на печатной плате с маркировкой "TX2" управляется с помощью уставок с гистерезисами по температуре и влажности. Имеется возможность переключения на инверсное управление выводом.

Настройка производится в PHY62x2BTHome.html.

Работа выхода назначается с помощью установки значения гистерезиса. Если значение гистерезиса равно нулю - переключений не будет. Если значение гистерезиса больше нуля - переключение (включение) произойдет при значении ниже уставка + гистерезис. Если значение гистерезиса меньше нуля - переключение (включение) произойдет при значении выше уставка + гистерезис.

CMY-Reader commented 4 months ago

А есть возможность запросить счетчик Открытий и состояние Контакта (геркона)? Или еще лучше историю открытий и закрытий (как история температуры и влажности).

pvvx commented 4 months ago

А есть возможность запросить счетчик Открытий и состояние Контакта (геркона)?

Показывает в PHY62x2BTHome.html.

image

Или еще лучше историю открытий и закрытий (как история температуры и влажности).

Ну-ну - если к контакту прикоснуться пальцем при питании термометра от БП, то имеем наводку в 50Гц. Это кол-во срабатываний 100 шт в секунду. И куда такая история влезет? На SSD в пару ТБайт?

https://youtu.be/v67zi4X5Sag

CMY-Reader commented 4 months ago

А есть возможность запросить счетчик Открытий и состояние Контакта (геркона)?

Показывает в PHY62x2BTHome.html.

Как я понимаю он счетчик получает вместе с беконами в "момент срабатывания".

Вопрос был про чтение счетчика "через час" после открытия.

Или еще лучше историю открытий и закрытий (как история температуры и влажности).

Ну-ну - если к контакту прикоснуться пальцем при питании термометра от БП, то имеем наводку в 50Гц. Это кол-во срабатываний 100 шт в секунду. И куда такая история влезет? На SSD в пару ТБайт?

https://youtu.be/v67zi4X5Sag

Тут вопрос к аппаратному методу борьбы с дребезгом. Но можно и на программном уровне. Например можно историю писать не чаще чем раз в секунду. Так сказать "усреднять" значение параметра. Добавить в историю время и значение счетчика если за этот период он изменился.

pvvx commented 4 months ago

Смысл этого всего, если тот-же HA ведет историю? А исполнительному устройству безразлично время и история. Тут необходима только скорость срабатывания. А она ныне до 10 мс уже на исполнительном устройстве c BLE приемником. Если и пропустит первую передачу BLE рекламы на 3-х каналах, то со второго через 50 мс сработает. И так дублируется 5 раз, если в это время не произойдет изменение уровня на пине - будет новая итерация.

На ESP32 это не будет работать - там пропуски приема к 90%.

CMY-Reader commented 4 months ago

Во-первых все радио можно заглушить. Во-вторых сервер можно выключить..перезагрузить. В-третьих. Один из xiaomi сенсоров вожу в сумке велосипеда. И данные температуры за поездку считываются по возвращению.

Тема с "герконом" очень неожиданная, но клевая. Пока не знаю как можно применить. Но история событий будет полезна в любом случае.

pvvx commented 4 months ago

И данные температуры за поездку считываются по возвращению.

Считать кол-во оборотов колеса :)

CMY-Reader commented 4 months ago

И данные температуры за поездку считываются по возвращению.

Считать кол-во оборотов колеса :)

Или ям на дороге :)

pvvx commented 4 months ago

История open/close возможно будет в https://pvvx.github.io/TS0207_TZ3000/ , https://pvvx.github.io/TS0202_TZ3000/ , https://pvvx.github.io/DS01_zbeacon/ , https://pvvx.github.io/iSearching/ , ... и в аналогичных

Во-первых все радио можно заглушить.

Нормальный адаптер (и сниффер) принимает до 300 рекламных пакетов в секунду. Типичное время передачи BLE рекламы последовательно на 3-х каналах составляет около 3 мс. И приемник выбирает сигнал с максимальным уровнем - удаленные не помешают. Самый скоростной из дешевых USB-BT адаптеров - это CSR8510 A10. Но он всего BT4.2. Все остальные = тормоз. Скорости USB2.0 FS не хватает для передачи по HCI 300 рекламных пакетов в секунду. И никаких BT адаптеров с UART интерфейсами не хватает. Требуется PCIe адаптер, т.к. с USB2.0 HS или с USB3.0 BT адаптеров нет.

Romno7 commented 3 months ago

Как обнулить (сбросить) счетчик?

pvvx commented 3 months ago

Питанием