[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-api.md
This commit is contained in:
+137
-3
@@ -3,7 +3,9 @@ aliases:
|
||||
- ZONT API
|
||||
- zont-online API
|
||||
- ZONT cloud API
|
||||
- ZONT update_device
|
||||
- ZONT local UI
|
||||
- ZONT WebSocket
|
||||
- ZONT firmware
|
||||
created: '2026-09-17'
|
||||
namespace: family
|
||||
related:
|
||||
@@ -19,7 +21,7 @@ tags:
|
||||
- reference
|
||||
title: "\U0001F310 ZONT Cloud API — что умеет и чего в нём нет"
|
||||
type: reference
|
||||
updated: '2026-09-17'
|
||||
updated: 2026-09-17b
|
||||
---
|
||||
|
||||
# 🌐 ZONT Cloud API — что умеет и чего в нём нет
|
||||
@@ -350,7 +352,139 @@ node zont-ws-probe.js ws://192.168.0.50/ws admin 1316261
|
||||
|
||||
---
|
||||
|
||||
## 8. Связанные заметки
|
||||
## 9. 🔧 Локальный интерфейс: WebSocket-протокол и утечка конфига
|
||||
|
||||
**Исследовано 2026-09-17** на живом контроллере `192.168.0.50` (H2000+ PRO, `#S7 = H2000_PRO 723 678`).
|
||||
|
||||
### 9.1. Вход в локальный UI
|
||||
|
||||
| Поле | Значение |
|
||||
|---|---|
|
||||
| URL | `http://192.168.0.50` (или `zont.local` в домашней сети) |
|
||||
| Логин | `admin` |
|
||||
| Пароль | сервисный, лежит в конфиге: объект `#Z8192=4,'admin',…,'1316261',0` |
|
||||
| Транспорт | WebSocket `ws://192.168.0.50/ws` (страница — только UI, вся логика в WS) |
|
||||
|
||||
> 🔴 **Логин/пароль локального UI ≠ аккаунт `my.zont.online`.** Это «Имя пользователя» и «Пароль для управления с другого телефонного номера» из `Настройки → Пользователи` контроллера ([дока](https://support.microline.ru/index.php/Локальное_управление_приборами_ZONT)).
|
||||
> Симптом неверного пароля — **бесконечный повтор запроса login/password**. Это не баг страницы: UI берёт пару из `localStorage` браузера, получает `{"auth":401}` и спрашивает снова.
|
||||
|
||||
### 9.2. Протокол WebSocket
|
||||
|
||||
```text
|
||||
{"user":"admin","pass":"1316261"} → {"auth":200} | {"auth":401}
|
||||
{"req_ids":16} → {"ids":[…] } список id объектов класса
|
||||
{"id":<n>,"req_state":0} → {"s":…,"t":…,"id":…,"type":…,"stype":…,"name":…}
|
||||
{"scmd":"#S217?"} → {"scmdres":"#S217:…"} чтение системной настройки
|
||||
{"scmd":"#S217=<val>"} → запись системной настройки
|
||||
{"scmd":"#S15=1"} → 💾 СОХРАНИТЬ настройки на прибор
|
||||
{"scmd":"SDATE?"} → {"scmdres":"SDATE=17 9 26 7 39 10"}
|
||||
```
|
||||
|
||||
Классы объектов для `req_ids` (из JS страницы): `16, 20, 1, 27, 0, 8, 10, 6`.
|
||||
`#S`-команды, которые использует сам UI: `#S7?`, `#S54?`, `#S213?`, `#S224?`, `#S4?`, `#S208?`, `#S198?`, `#S205?`, `SDATE?`.
|
||||
|
||||
> 💡 `#S15=1` — неявная кнопка «применить». В UI она вызывается только после смены Wi-Fi (`#S208='ssid','pass'`), вручную не нажать. Без неё запись не сохранится на прибор.
|
||||
|
||||
### 9.3. 🔴 `http://192.168.0.50/config.txt` — весь конфиг БЕЗ авторизации
|
||||
|
||||
```bash
|
||||
curl -s http://192.168.0.50/config.txt # 623 строки, text/plain
|
||||
```
|
||||
|
||||
Формат — **ровно тот, который парсит `config-to-yml.py`** (см. [[family/how-to/zont-config-compiler]]). Одна команда снимает полный конфиг контроллера, включая:
|
||||
|
||||
| Ключ | Что утекает |
|
||||
|---|---|
|
||||
| `#S202` | серийник + **пароль облака ZONT** |
|
||||
| `#S217` | MQTT-брокер **с паролем** (`mqtt://zont:…@192.168.0.10:1883`) |
|
||||
| `#S218` | MQTT логин/пароль |
|
||||
| `#Z8192` | **сервисный пароль локального UI** в открытом виде |
|
||||
|
||||
> ⚠️ Любой, кто дотянется до порта 80 на `192.168.0.50`, получает все секреты без входа. Учитывать при любом пробросе/VPK-доступе к этому сегменту.
|
||||
|
||||
### 9.4. Полный список `#S`-настроек (25 шт., из живого конфига)
|
||||
|
||||
UI показывает ~9. Скрыты от пользователя: `#S36`, `#S206`, `#S209`, `#S210`, `#S211`, `#S212`, `#S214`, `#S219`, `#S222`, `#S223`, `#S225`, `#S226`, `#S124`, `#S201`, `#S203`.
|
||||
|
||||
Значения важных:
|
||||
|
||||
```text
|
||||
#S124=1,9600,0,0 параметры Modbus-шины (slave, baud, …)
|
||||
#S201=52200 порт облака
|
||||
#S203=auto режим связи
|
||||
#S12=*100# 0 USSD-код проверки баланса
|
||||
#S210=2147483647,2147483647,2147483647,2147483647 лимиты
|
||||
#S221=homeassistant префикс discovery
|
||||
```
|
||||
|
||||
### 9.5. Прошивка: локально через web — НЕВОЗМОЖНО
|
||||
|
||||
| Проверено | Результат |
|
||||
|---|---|
|
||||
| `/firmware`, `/update`, `/upgrade`, `/fw.bin`, `/ota`, `/flash`, `/fw` | **404** (все HTTP-пути кроме `/` и `/config.txt`) |
|
||||
| Кнопка «Обновить интерфейс» в UI | перезагрузка веб-страницы, **не** прошивка |
|
||||
| Реальный путь | облако ZONT (веб-сервис) **или** настроечная утилита по USB |
|
||||
|
||||
---
|
||||
|
||||
## 10. 🔧 Настроечная утилита H1000/H2000 (добыта 2026-09-17)
|
||||
|
||||
### 10.1. Что это и где лежит
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Название | `H1000 Programmator` (Windows, Delphi/Borland) |
|
||||
| Версия | **2.8.5** |
|
||||
| exe | `prgm.2.8.5.exe` (2.9 MB) |
|
||||
| Официальный источник | `https://lk.zont-online.ru/download/simple/h1000_utility_beta` (метка **beta**) |
|
||||
| Интерфейс | USB (serial-over-USB) — драйвер `usbser.sys` + `Hxxxx.inf` |
|
||||
| Архив | `~/rasputin-tmp/zont-util/h1000_utility_beta.bin` (4.5 MB) |
|
||||
| Распаковано | `~/rasputin-tmp/zont-util/util_beta/H1000 Programmator/` |
|
||||
|
||||
> 🔴 **Питфолл распаковки.** macOS `unzip` падает на кириллических именах файлов внутри архива (`write error (disk full?)` — на самом деле не disk full). Имена в CP866. Решение — Python `zipfile` с перекодировкой `cp437 → cp866`, скрипт: `~/rasputin-tmp/zont-util/extract.py`.
|
||||
|
||||
### 10.2. Содержимое архива
|
||||
|
||||
| Файл | Размер | Что это |
|
||||
|---|---|---|
|
||||
| `prgm.2.8.5.exe` | 2.9 MB | основная программа |
|
||||
| `Configs/{403,406,412,414,415}.set` | 31 KB ×5 | **словари интерфейса** (UTF-8 JSON: `{"Value":0,"Edit":"Пользователь 1"}`), НЕ конфиги устройства |
|
||||
| `Interface/interface.h` | 55 KB | дерево интерфейса + шаблоны `ComboSameList` по версиям HW |
|
||||
| `Interface/*.rtf` | 32–70 KB | хелпы: `выходы`, `Отопление`, `пользователи`, `смс управление`, `DTMF управление` |
|
||||
| `Interface/*.bmp` | 2–3 KB | иконки вкладок |
|
||||
| `msvcr120.dll`, `rtl150.bpl`, `vcl150.bpl`, `vclimg150.bpl`, `xmlparser.bpl`, `mypngimg.bpl` | — | Runtime Delphi/C++Builder |
|
||||
|
||||
> ⚠️ `.set` — **не** формат `config.txt`. Это словарь подписей для выпадающих списков утилиты. Не путать с [[family/tech/zont-config-object-types]].
|
||||
|
||||
### 10.3. Прошивка — формат подтверждён
|
||||
|
||||
Строки в exe: `firmware_.enc`, `*.enc`, `.enc|*.enc`, `Program started`, `Program CLOSED`.
|
||||
|
||||
Прошивка скачана и разобрана:
|
||||
|
||||
| Файл | Размер | Энтропия | Что это |
|
||||
|---|---|---|---|
|
||||
| `STM_MEGA_400_.enc` | 145 177 B | **7.9986** бит/байт | зашифрованный образ прошивки (STM32, серия MEGA 400) |
|
||||
| `main_c.evc` | 49 610 B | 5.6487 бит/байт | вторичный образ (частично структурированный, видны строки `Mega-CX`, `=0 25 0 0`) |
|
||||
|
||||
Источник: `https://lk.zont-online.ru/download/firmwares/H2000_515__330_290.zip` (**200 OK, отдаётся без авторизации**).
|
||||
Распаковано в `~/rasputin-tmp/zont-util/fw/`.
|
||||
|
||||
> 🔴 `.enc` — энтропия 7.9986 = **шифрование, не простое сжатие**. Просто так не распакуется; расшифровка — задача отдельного исследования и, скорее всего, требует ключа из exe или подписи облака.
|
||||
|
||||
### 10.4. Что это даёт для наших задач
|
||||
|
||||
| Задача | Путь |
|
||||
|---|---|
|
||||
| Снять текущий конфиг | ✅ `curl http://192.168.0.50/config.txt` (без авторизации) |
|
||||
| Правка сценариев | по-прежнему конвертер `.txt ⇄ .yml` + заливка через UI/утилиту |
|
||||
| Мониторинг в реальном времени | ✅ WebSocket `ws://192.168.0.50/ws` (`req_ids`, `req_state`) |
|
||||
| Обновление прошивки | облако ZONT или утилита по USB (Windows) |
|
||||
| Автоматизация без UI | возможна — WS-протокол простой, читается `config.txt` |
|
||||
|
||||
---
|
||||
|
||||
## 11. Связанные заметки
|
||||
|
||||
- [[family/how-to/zont-config-compiler]] — конвертеры `.txt ⇄ .yml`; §5c — план переработки YAML
|
||||
- [[family/tech/zont-scenario-logic-11109]] — структура сценариев 11/46/49/45
|
||||
|
||||
Reference in New Issue
Block a user