[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-api.md

This commit is contained in:
Alexey Martemyanov
2026-09-17 13:51:11 +06:00
parent 14d3622cbc
commit 3768e8c1d4
2 changed files with 69 additions and 77 deletions
+58 -1
View File
@@ -310,7 +310,7 @@ diff A.txt B.txt # пусто = round-trip чистый
| 5 | Неизвестный тип объекта → exit 2, файл не создаётся | Смотреть stderr — там причина |
| 6 | `validate_config()` → exit 4 | Печатает `❌ VALIDATION ERRORS` + список причин; файл намеренно **не выдан** (вывод пустой) |
| 7 | Регистр без своего устройства / аналоговый выход с битой ссылкой | WARNING в stderr, конвертация продолжается — проверить ссылки вручную |
| 8 | Загрузка конфига в контроллер — **руками**, скрипты только конвертируют | Конвертер не имеет доступа к ZONT. ⚠️ **Снятие конфига — уже не ручное:** `http://192.168.0.50/config.txt` отдаёт весь конфиг без авторизации (§5g) |
| 8 | Загрузка конфига в контроллер — **руками**, скрипты только конвертируют | Конвертер не имеет доступа к ZONT. ⚠️ **Снятие конфига — уже не ручное:** `http://192.168.0.50/config.txt` отдаёт весь конфиг без авторизации (§5g). Заливка — утилита по USB / облако / WS **только для `#S`** (§5g-2) |
| 9 | `INFRASTRUCTURE.md`, `docker-compose.yml`, `docker run.txt` в проекте — **исторический TrueNAS-стек** | Актуальный контур — [[family/how-to/home-automation]]. Не искать `modbus-bridge`/`mbusd` на NAS |
| 10 | Дополнительных зависимостей нет | Только `pyyaml``jsonschema`/`ruamel` не нужны |
| 11 | ✅ **ИСПРАВЛЕНО 2026-09-17** — Сценарий с >1 шагом падал (exit 2) | `config-to-yml.py` теперь цикл по всем шагам; `yml-to-config.py` пишет все `step_ids` |
@@ -520,6 +520,61 @@ curl -s http://192.168.0.50/config.txt -o zont_config/config_$(date +%Y-%m-%d_%H
---
## 5g-2. 🔼 ЗАЛИВКА конфига обратно — чем и как (добыто 2026-09-17)
Снятие конфига автоматизировано (§5g), но **заливка остаётся ручной** — идёт **не** через
`config.txt` (этот путь только на чтение). Доступные каналы:
| Канал | Что умеет | Ограничение |
|---|---|---|
| **Настроечная утилита по USB** | заливка конфига + **прошивки** | Windows-only, нужен USB-кабель и драйвер |
| Облако ZONT (`my.zont.online`) | правка сценариев/реле через веб-UI | руками, по одному объекту |
| Локальный WebSocket `ws://192.168.0.50/ws` | запись `#S`-настроек (`{"scmd":"#S<n>=<val>"}` + `#S15=1`) | **`#Z`-объекты не пишутся** — только `#S` |
> 🔴 Локальный WS даёт запись **только системных `#S`-настроек** (Wi-Fi, MQTT, номер). Сценарии,
> реле, шаги (`#Z11/14/46/49`) через него **не заливаются** — для них по-прежнему утилита или облако.
### Утилита `H1000 Programmator` 2.8.5 — добыта
```bash
# официальный источник, скачивается без авторизации
curl -sL -o h1000_utility_beta.bin https://lk.zont-online.ru/download/simple/h1000_utility_beta
```
| Параметр | Значение |
|---|---|
| Версия | **2.8.5** (`prgm.2.8.5.exe`, 2.9 MB, Delphi/Borland) |
| Интерфейс | USB serial-over-USB (`usbser.sys` + `Hxxxx.inf`) |
| Архив на Mac | `~/rasputin-tmp/zont-util/h1000_utility_beta.bin` (4.5 MB) |
| Распаковано | `~/rasputin-tmp/zont-util/util_beta/H1000 Programmator/` |
| Хелпы внутри | `выходы.rtf`, `Отопление.rtf`, `пользователи.rtf`, `смс управление.rtf`, `DTMF управление.rtf` |
> 🔴 **Питфолл распаковки.** macOS `unzip` падает на кириллических именах в архиве
> (`write error (disk full?)` — на самом деле **не** disk full). Имена в CP866.
> Решение — Python `zipfile` с перекодировкой `cp437 → cp866`: `~/rasputin-tmp/zont-util/extract.py`.
> ⚠️ Пятно на репутации формата: файлы `Configs/*.set` внутри архива — **НЕ конфиги устройства**.
> Это UTF-8 JSON-словари подписей интерфейса (`{"Value":0,"Edit":"Пользователь 1"}`).
> Не пытаться парсить их нашим конвертером.
### Прошивка — формат `.enc` (зашифрован)
```bash
curl -sL -o H2000_fw.zip https://lk.zont-online.ru/download/firmwares/H2000_515__330_290.zip
```
| Файл | Размер | Энтропия | Вывод |
|---|---|---|---|
| `STM_MEGA_400_.enc` | 145 177 B | **7.9986** / 8.0 | зашифрован, не сжат |
| `main_c.evc` | 49 610 B | 5.6487 | частично структурный (`Mega-CX`) |
Прошивка тоже отдаётся **без авторизации**. Утилита грузит именно `*.enc`
(строки `firmware_.enc`, `.enc|*.enc` найдены в exe). Расшифровка — отдельное исследование.
➡️ Полный разбор утилиты и прошивки — **[[family/tech/zont-api]] §10**
---
## 5h. 🌐 Облачный API ZONT — конфига не даёт
Исследовано 2026-09-17. Доки скачаны в проект: `zont_api_docs/`.
@@ -550,6 +605,8 @@ curl -s http://192.168.0.50/config.txt -o zont_config/config_$(date +%Y-%m-%d_%H
| `zont_config/archive/` | **не в git** (`untracked`) — лежит в `.gitignore`-нейтральном состоянии |
| `zont_config/H2000_PRO_config_actual-{2,3,4}.txt` / `.yml` | ✅ **перемещены в `archive/` и закоммичены** (`7ae0e32`) |
| `zont_api_docs/` | ✅ **новая папка** — локальная копия доки облачного API ZONT (`zont_api_docs.html` 250 KB, `zont_api_docs.txt` 99 KB, `convert.py`). **не в git**. Исследование — [[family/tech/zont-api]] |
| `~/rasputin-tmp/zont-util/` | ✅ **новая папка на Mac** (вне репо) — настроечная утилита `H1000 Programmator` 2.8.5, драйвер USB, прошивка `.enc`, скрипт распаковки `extract.py`. Разбор — §5g-2, [[family/tech/zont-api]] §10 |
| `~/rasputin-tmp/zont-{auth-probe,recon,recon2,ws-probe}.js` | ✅ скрипты разведки локального WS-интерфейса. **не в git** |
Не запушено: `origin/main..HEAD` = 3 коммита (`199f2b1`, `7ae0e32`, `12ba22b`).