docs update

This commit is contained in:
2026-05-07 19:16:25 +03:00
parent 5cb9c87135
commit 641b314218
2 changed files with 46 additions and 40 deletions

View File

@@ -1,4 +1,5 @@
# Данный модуль реализует многозональную систему полива # LightHub: Модуль многоканальной системы полива (out_sprinkler)
Данный модуль реализует многозональную систему полива
## Система состоит из следующих компонент: ## Система состоит из следующих компонент:
@@ -45,21 +46,20 @@ DREN\_OPERATE|таймаут 1200 сек |FAULT_DREN||
"items": "items":
{ {
"sprinkler":[23, "sprinkler":[23,
{ {
"":{ "":{
"vIn:7, "vIn":3,
"wMax":15, "wMax":44,
"wMin:17, "wMin":46,
"rDren":6, "rDren":23,
"fbDren":12, "fbDren":63,
"rPump":5, "rPump":24,
"fbPump":11, "fbPump":62,
"wCtr":19 "wCtr":49
}, },
"garden":{"pin":13,"set":60,"val":15,"cmd":2}, "nord":{"pin":6,"set":60,"cmd":1},
"backyard":{"pin":14,"set":60,"val":15,"cmd":2}, "south":{"pin":7,"set":100,"cmd":1},
"trees":{"pin":15,"set":60,"val":15,"cmd":2} "trees":{"pin":10,"set":60,"cmd":2}
}] }]
} }

View File

@@ -37,7 +37,9 @@
**Агрегация команд** — управление центральной установкой на основе суммарного спроса от зон **Агрегация команд** — управление центральной установкой на основе суммарного спроса от зон
**Каскадное управление** — возможность передачи команд на внешние системы **Каскадное управление** — возможность передачи команд на внешние системы (например, отображение режимов на стеновых панеляж управления)
**Отслеживание прямого управления основным кондиционером** — система понимает, явились ли изменения режима работы основного кондиционера причиной ее управляющих воздействий. И если обнаруживает, что режим поменялся вручную, при помощи пульта управления центральной установкой, принимает это изменение как инструкцию к действию. А именно: при выключении основного блока с пульта - все виртуальные зоны выключаются. (чтобы предотвратить немедленное автоматическое обратное включение) При обратном включении - их состояние восстанавливается. Также, можно определить какую либо из виртуальных зон для управления с пульта главного кондиционера.
**Ограничения**: ? **Ограничения**: ?
@@ -105,13 +107,12 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
## 3. Структура JSON-конфигурации ## 3. Структура JSON-конфигурации
### 3.1 Формат item типа 14 (Multivent) ### 3.1 Формат item типа 18 (Multivent)
```json ```json
"item_name": [ "item_name": [
14, 18,
[ [
"device_name",
{ {
"zone_1": { ... }, "zone_1": { ... },
"zone_2": { ... }, "zone_2": { ... },
@@ -121,8 +122,7 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
] ]
``` ```
- `device_name` имя device-type в modbus (если используется внешнее AC) - Объект маршрутизации содержит **именованные зоны** + **пустую строку** `""` для центральной установки и общих настроек
- Объект маршрутизации содержит **именованные зоны** + **пустую строку** `""` для центральной установки
### 3.2 Структура зоны ### 3.2 Структура зоны
@@ -150,19 +150,19 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
| `cmd` | int | Текущая команда (OFF/ON/HEAT/COOL и т.д. в числовом виде) | | `cmd` | int | Текущая команда (OFF/ON/HEAT/COOL и т.д. в числовом виде) |
| `out` | int (0-255) | Финальный выходной сигнал задвижки (пересчитанный) | | `out` | int (0-255) | Финальный выходной сигнал задвижки (пересчитанный) |
| `V` | int | Номинальный объём воздуха для этой зоны (м³/ч) | | `V` | int | Номинальный объём воздуха для этой зоны (м³/ч) |
| `pid` | array[4] | Коэффициенты PID: [Kp, Ki, Kd, dT(сек)] | | `pid` | array[4-6] | Коэффициенты PID: [Kp, Ki, Kd, dT(сек)] |
| `set` | float | Требуемая температура (установка) | | `set` | float | Требуемая температура (установка) |
| `val` | float | Текущая температура зоны. Передается через суффикс /val данной зоны | | `val` | float | Текущая температура зоны. Передается через суффикс /val данной зоны |
| `cas` | object | Каскадирование полученной команды на другие обьекты. Полезно, если изменение статуса зоны надо, наример, отразить на климатической панели. Или если скорость вентилятора надо преобразовать в дискретный вид (LOW,MEDIUM,HIGH) и передать в отдельный топик (как в примере) для отображения в интерфейсе Home Assistant. У обьекта cas может быть три под-обьекта: fan, set, cmd которые могут отдельно транслировать скорость вентилятора, команду (режим) зоны и уставку температуры. Следует заметить, что даже без использования данной настройки, изменения зоны передаются в статусный топик зоны (для восстановления состояния при перезапуске и отражения в интерфейсе HA, так что дублировать это в данной настройке не требуется. Но данная настройка крайне полезна именно для дублирования состояния на внешние устройства а также на внутренние обьекты контроллера (отрабатывается весь синтаксис EXEC обьекта, включая возможность передачи по MQTT, CAN, локальные items) | | `cas` | object | Каскадирование полученной команды на другие обьекты. Полезно, если изменение статуса зоны надо, наример, отразить на климатической панели. Или если скорость вентилятора надо преобразовать в дискретный вид (LOW,MEDIUM,HIGH) и передать в отдельный топик (как в примере) для отображения в интерфейсе Home Assistant. У обьекта cas может быть три под-обьекта: fan, set, cmd которые могут отдельно транслировать скорость вентилятора, команду (режим) зоны и уставку температуры. Следует заметить, что даже без использования данной настройки, изменения зоны передаются в статусный топик зоны (для восстановления состояния при перезапуске и отражения в интерфейсе HA, так что дублировать это в данной настройке не требуется. Но данная настройка крайне полезна именно для дублирования состояния на внешние устройства а также на внутренние обьекты контроллера (отрабатывается весь синтаксис EXEC обьекта, включая возможность передачи по MQTT, CAN, локальные items) |
### 3.3 Центральная установка (пустая зона `""`) ### 3.3 Центральная установка (пустая зона `""`)
```json ```
"": { "":{"item":"ac_2",
"val": { "emit": "ac/temp" }, "turnbyfan":0,
"mode": { "emit": "ac/mode" }, "boost":200,
"@lastCmd": -1, "supress":7,
"roomtemp": 0.0 "onextcmd":{"emit":"${sout}/vac/extcmd","item":"vac/zal"}
} }
``` ```
@@ -170,13 +170,17 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
| Поле | Назначение | | Поле | Назначение |
|------|-----------| |------|-----------|
|`turnbyfan`||
|`boost`||
|`suppress`|
|`onextcmd`||
| `val` | Температура воздуха от AC (или текущее состояние) | | `val` | Температура воздуха от AC (или текущее состояние) |
| `mode` | Текущий режим AC (CMD_HEAT/CMD_COOL/CMD_FAN/CMD_OFF) | | `mode` | Текущий режим AC (CMD\_HEAT/CMD\_COOL/CMD\_FAN/CMD\_OFF) |
| `@lastCmd` | Последняя отправленная команда (служебное) | | `@lastCmd` | Последняя отправленная команда (служебное) |
| `roomtemp` | Дополнительный датчик комнатной температуры | | `roomtemp` | Дополнительный датчик комнатной температуры |
--- ---
\
## 4. Детальная конфигурация компонентов ## 4. Детальная конфигурация компонентов
### 4.1 PID-контроллер ### 4.1 PID-контроллер
@@ -184,14 +188,12 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
#### Включение PID #### Включение PID
```json ```json
"pid": [1.0, 0.1, 0.05, 5.0] "pid": [1.0, 0.1, 0.05, 5.0, 120, 128]
``` ```
**Формат**: `[Kp, Ki, Kd, dT]` **Формат**: `[Kp, Ki, Kd, dT, alarmTime, alarmValue]`
- **Kp** (пропорциональный коэффициент): 0.52.0 - **Kp** (пропорциональный коэффициент): 0.52.0
- Отрицательное значение включает **REVERSE-режим** (для охлаждения)
- Положительное значение DIRECT-режим (для нагрева)
- **Ki** (интегральный коэффициент): 0.00.2 - **Ki** (интегральный коэффициент): 0.00.2
- Устраняет постоянное отклонение - Устраняет постоянное отклонение
@@ -201,19 +203,20 @@ $$out = \frac{(V_{requested} \times 255) \times V_{max}}{V \times P_{max}}$$
- **dT** (период сэмплирования, сек): по умолчанию 5 сек - **dT** (период сэмплирования, сек): по умолчанию 5 сек
#### Пример для зоны с нагревом:
#### Пример для зоны, заданный в виде массива:
```json ```json
"pid": [1.0, 0.05, 0.02, 5.0] "pid": [1.0, 0.05, 0.02, 5.0]
``` ```
#### Пример для зоны с охлаждением: #### Пример для зоны, заданный в виде обьекта:
```json ```json
"pid": [-1.0, 0.05, 0.02, 5.0] "pid": {"kP":-1.0,"kI":0.05,"kD":0.02, "dT":50, "AlarmTime":240, "AlarmValue:128]
``` ```
### 4.2 Объём воздуха (V) ## 4.2 Объём воздуха (V)
Указывается в **относительных единицах** (не обязательно м³/ч): Указывается в **относительных единицах** (не обязательно м³/ч):
@@ -263,13 +266,14 @@ tbd
### 5.2 Режимы работы центральной установки ### 5.2 Режимы работы центральной установки
Модуль автоматически определяет режим AC по текущей температуре: Модуль автоматически определяет режим AC по текущей температуре воздуха в канале кондиционера, которую надо направить в /val:
``` ```
AC temp < 15°C → CMD_COOL (переоборудование в холод) AC temp < 15°C → CMD_COOL (переоборудование в холод)
15°C ≤ AC temp ≤ 30°C → CMD_FAN (вентиляция) 15°C ≤ AC temp ≤ 30°C → CMD_FAN (вентиляция)
AC temp > 30°C → CMD_HEAT (переоборудование в тепло) AC temp > 30°C → CMD_HEAT (переоборудование в тепло)
``` ```
Важно: при обнаружении холода или тепла автоматичесуки активируются PID регуляторы зон. Их выходы направляются на вход блока балансировки зон. Таким образом, система ререходит в режим нагрева или охлаждения зон с контролем температуры. А прямое управление по входу /fan зон блокируется, (но последее переданное в зону значение запоминается). После того как система обнаруживает переход установки из режима нагрева либо охлаждения в режим вентиляции, она использует последнее полученное на вход /fan зоны значение для балансировки воздушного потока в каждую зону. И система переходит в режим вентиляции. В этом режиме, используются поступающие извне на вход /fan сигналы запросов воздуха в каждую зону (например, от PID регулятора уровня CO2)
### 5.3 PID-режимы ### 5.3 PID-режимы
@@ -281,6 +285,8 @@ AC temp > 30°C → CMD_HEAT (переоборудование в тепло)
- Выход растёт при уменьшении отклонения (set < val) - Выход растёт при уменьшении отклонения (set < val)
- Используется для режима COOL - Используется для режима COOL
режим работы регуляторв переключается автоматически в зависимости от температуры воздуха в канале. При нагреве включается прямой режим. При охлаждении - обратный.
**Автоматическое переключение в режиме CMD_AUTO:** **Автоматическое переключение в режиме CMD_AUTO:**
``` ```
AC в HEAT → PID в DIRECT AC в HEAT → PID в DIRECT