Сигналы¶
Приложение читает из DiPlus 137 сигналов (132 с CAN-маппингом + 5 синтетических). Полный каталог с китайскими/английскими названиями и ключами — в файле SIGNALS.md репозитория.
Структура сигнала¶
Каждый сигнал описан в signals.yaml (источник истины для кодогенерации):
| Поле | Описание |
|---|---|
key |
стабильный snake_case ключ (window_fl, soc, …) — используется в payload для HA |
name |
китайское имя для запроса к DiPlus API |
description |
английское имя |
type |
num (число) или enum (текст/перечисление) |
unit |
единица измерения для HA (%, °C, mm, …) |
icon |
иконка MDI |
state_class |
measurement для числовых (long-term statistics) |
labels |
переводы enum-значений |
Переводы значений¶
DiPlus отдаёт значения на китайском. Приложение переводит их через два словаря:
value_trans— точные соответствия (开启中 → opening,有车接近 → car approaching, …);ENUM_LABELS— индексные маппинги для enum-сигналов.
В HA уходят уже переведённые значения. Непереведённое значение не теряется — передаётся как есть, а в лог пишется предупреждение Untranslated value.
Синтетические сигналы¶
Не запрашиваются из DiPlus — формируются самим приложением:
app_version— версия приложения (с номером сборки);wifi_ssid,wifi_bssid,wifi_ip,wifi_signal— текущая Wi-Fi сеть ГУ;geo_<id>— виртуальные датчики геозон.
Неподдерживаемые сигналы¶
Если автомобиль не отвечает на какой-то сигнал (другая комплектация, прошивка), он помечается unsupported: показывается в таблице телеметрии без галочки, продолжает опрашиваться, но в HA не отправляется. Если после обновления ПО сигнал появится — он сам вернётся в выгрузку.
Добавление/изменение сигналов (для разработчиков)¶
- Правьте
signals.yamlв корне репозитория. - Запустите
python scripts/signals_tool.py regenerate— обновятсяCANDataReader.java,SignalTranslator.java,const.py,SIGNALS.md. - Прогоните тесты:
pytest tests/иDiPlus-to-hass/run_java_tests.sh.
Регенерация идемпотентна и сохраняет версию интеграции и служебные блоки (геозоны).