mirror of
https://github.com/anklimov/lighthub
synced 2026-05-02 12:06:55 +00:00
MultiAC small fix + SPRINKLER chanell type (initial, unverivied)
This commit is contained in:
181
documentation/Sprinkler_module.md
Normal file
181
documentation/Sprinkler_module.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# Данный модуль реализует многозональную систему полива
|
||||
|
||||
## Система состоит из следующих компонент:
|
||||
|
||||
* Накопительный водяной бак. Снабжен двумя поплавками. Максимум воды и минимум воды. Заведены на входы wMax и wMin
|
||||
* Насос полива высокого давления. Запитан из бака. Включается реле, подключенным к выходу rPump. Датчик тока для контроля того, что насос включен, заведен на вход fbPump
|
||||
* Набор клапанов зон полива. Подключены через оптореле к выходам, заданным в параметре pin соответствующей зоны полива.
|
||||
* Клапан налива из водопровода. Подключен через оптореле к выходу vIn
|
||||
* Насос дренажного колодца. Приоритетный источник для наполнения бака полива. Когда система полива находится в ждущем или активном режиме, бак пытается максимально наполнится из дренажного колодца. Насос дренажа имеет поплавковый выключатель, отключающий насос при осушении дренажного колодца. Насос включается реле, которое подключено к выходу rDren. Для контроля того, что насос включен и момента осушения колодца, используется датчик тока, который подключен в входу fbDren
|
||||
* Опциональный водосчетчик. Контакты подключены к входу wCtr
|
||||
|
||||
## Система налива воды реализована при помощи конечного автомата со следующими состояниями:
|
||||
|
||||
* SP\_UNKNOWN
|
||||
* SP\_OFF
|
||||
* SP\_DREN\_ON - дренажный насос включен
|
||||
* SP\_DREN\_OPERATE - дренажный насос работает
|
||||
* SP\_DREN\_EMPTY - дренажный насос выключился встроенным поплавком - колодец пуст
|
||||
* SP\_VIN - включено наполнение из водопровода
|
||||
* SP\_FULL - бак наполнен
|
||||
|
||||
граф переходов конечного автомата системы налива воды
|
||||
|
||||
Состояние SP\_* | Условие перехода | перейти в состояние | выполнить при переходе |
|
||||
|------|--------|-------|---------|
|
||||
INIT | true | OFF | выключить клапана и насосы |
|
||||
OFF | vMax && !FREEZE | FULL | выключить vIN, rDren|
|
||||
OFF | ! vMax && !FREEZE | DREN\_ON|включить rDren|
|
||||
DREN\_ON|fbDren (насос дренажа реально работает)|DREN\_OPERATE|
|
||||
DREN\_ON|таймаут 10 сек|DREN\_EMPTY|
|
||||
DREN\_EMPTY|включен цикл полива и бак не полон|VIN|включить клапан vIN для набора бака из водопровода|
|
||||
DREN\_OPERATE|fbDren (насос дренажа более не работает)|DREN\_EMPTY||
|
||||
VIN|fbDren|DREN\_OPERATE|вылючить клапан vIN для набора бака из водопровода|
|
||||
VIN, DREN\_OPERATE|vMax|FULL | выключить vIN, rDren|
|
||||
VIN|таймаут 1200 сек | FAULT\_VIN| выключить vIN|
|
||||
DREN\_OPERATE|таймаут 1200 сек |FAULT_DREN||
|
||||
|
||||
|
||||
|
||||
## Конфигурирование:
|
||||
|
||||
|
||||
```
|
||||
|
||||
"items":
|
||||
{
|
||||
"sprinkler":[23,
|
||||
|
||||
{
|
||||
"":{
|
||||
"vIn:7,
|
||||
"wMax":15,
|
||||
"wMin:17,
|
||||
"rDren":6,
|
||||
"fbDren":12,
|
||||
"rPump":5,
|
||||
"fbPump":11,
|
||||
"wCtr":19
|
||||
},
|
||||
"garden":{"pin":13,"set":60,"val":15,"cmd":2},
|
||||
"backyard":{"pin":14,"set":60,"val":15,"cmd":2},
|
||||
"trees":{"pin":15,"set":60,"val":15,"cmd":2}
|
||||
|
||||
}]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Алгоритм работы
|
||||
в настройки зон полива задаем интенсивность для каждой зоны.
|
||||
|
||||
Это можно сделать как в конфиге так динамически, (стандартными механизмами управления по MQTT, HTTP, CAN)
|
||||
|
||||
Рассмотрим на примере MQTT:
|
||||
|
||||
**топик** ```root/name/sprinkler/garden/set -> 60```
|
||||
|
||||
Задаем обьем полива 60 отсчетов счетчика воды (если счетчик не сконфигурирован - 60 секунд)
|
||||
|
||||
Контроллер должен передать это значение в выходной топик ```root/name/s_out/sprinkrer/garden/set``` и оно будет восстановлено при перезагрузке контроллера
|
||||
|
||||
отработанный обьем воды или время будет сохраняться в параметре "val" каждой зоны (параметр будет автоматически увеличиваться при работе зоны, передаваться в соответствующий зоне топик для мониторинга и восстановления в случае перезагрузки контроллера)
|
||||
|
||||
**Пример топика:** ```root/s_out/sprinkler/garden/val```
|
||||
|
||||
Когда данный параметр достигнет значения, заданного в параметре "set" контроллер завершит полив данной зоны и перейдет к следующей.
|
||||
|
||||
Для сброса счетчиков можно использовать как непосредственную установку значения параметра "val" для каждой зоны так и команду RESET, отправленную в нужную зону или в объект sprinkler через суффикс /cmd.
|
||||
|
||||
В последнем случае, контроллер итерационно сбросит счетчики в значение 0 для каждой зоны полива.
|
||||
|
||||
**Пример:** ```root/name/sprinkler/cmd -> RESET```
|
||||
|
||||
|
||||
## Управление
|
||||
|
||||
### Включение/выключение полива конкретной зоны:
|
||||
|
||||
**Включить** ```root/name/sprinkler/garden/cmd -> ON```
|
||||
|
||||
**Выключить** ```root/name/sprinkler/garden/cmd -> OFF```
|
||||
|
||||
|
||||
|
||||
### Включение/выключение цикла полива:
|
||||
|
||||
**Включить** ```root/name/sprinkler/cmd -> ON```
|
||||
Система начнет или продолжит цикл полива, переходя от зоны к зоне по мере завершения работы с каждой предыдущей зоной. После завершения работы со всеми зонами, sprinkler перейдет в состояние OFF
|
||||
|
||||
Перед включением полива, система убедится что бак наполнен или до-наполнит его до максимума из водопровода.
|
||||
|
||||
|
||||
|
||||
**Выключить** ```root/name/sprinkler/cmd -> OFF```
|
||||
Система немедленно остановит текущий цикл полива (закроет клапаны зон, выключит насос полива)
|
||||
|
||||
|
||||
Аналогично, будут работать команды XON и XOFF, с одним исключением, что команда XON может быть запрещена и игнорироваться если активирован режим DISABLE. Это базовая функция контроллера и не относится к функционалу данного модуля. Но может быть использована, например, для запрета полива на определенное время после выпадения осадков
|
||||
|
||||
**Пример**
|
||||
|
||||
```
|
||||
root/name/sprinkler/ctrl -> DISABLE
|
||||
root/name/sprinkler/cmd -> XON //Будет проигнорировано
|
||||
|
||||
root/name/sprinkler/ctrl -> ENABLE
|
||||
root/name/sprinkler/cmd -> XON //А вот теперь сработает
|
||||
|
||||
```
|
||||
|
||||
Даже в выключенном состоянии (OFF) , система полива работает в дежурном режиме, поддерживая максимальный уровень воды в баке за счет немедленной перекачки из дренажного колодца
|
||||
|
||||
При попытке включения системы после завершения дневного задания по поливу всех зон (параметр val для всех зон достиг параметра set), система сразу перейдет в состояние OFF
|
||||
|
||||
|
||||
|
||||
### Полная блокировка системы полива (в зимнее время)
|
||||
Ддя перевода канала полива в полностью заблокированное состояние и обратно импользуется системная команда FREEZE/UNFREEZE соответственно
|
||||
|
||||
В режиме FREEZE полностью заблокирована обработка всех команд, кроме UNFREEZE, заблокирован автомат пополнения бака из дренажного насоса и выключены насосы и все клапана
|
||||
|
||||
Рекомендуется задать флаг FREEZE в конфигурации канала (см документ ...) , чтобы избежать разблокировки при утере значений топика /clrl и перезагрузки системы
|
||||
|
||||
Также, на вход /val обЪекта sprinkler можно подать значение уличной температуры. И если значения будут ниже нуля, система автоматически перейдет в режим FREEZE
|
||||
|
||||
**Пример**
|
||||
|
||||
```
|
||||
root/name/sprinkler/ctrl -> FREEZE
|
||||
root/name/sprinkrer/cmd -> ON //Будет проигнорировано
|
||||
|
||||
root/name/sprinkler/ctrl -> UNFREEZE
|
||||
root/name/sprinkrer/cmd -> ON //А вот теперь сработает
|
||||
|
||||
root/name/sprinkler/val -> -1 //система перейдет в режим FREEZE
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Передача статусных значений
|
||||
|
||||
|
||||
**Примеры выдачи в топики:**
|
||||
|
||||
```
|
||||
root/s_out/sprinkler/$fbPump - ON/OFF признак того, что включен основной насос (от датчика тока)
|
||||
root/s_out/sprinkler/$fbDren - ON/OFF признак того, что включен дренажный насос (от датчика тока)
|
||||
root/s_out/sprinkler/$state - состояние конечного автомата Системы налива воды
|
||||
root/s_out/sprinkler/$wMax - ON/OFF достигнут максимум воды в баке (от поплавкового датчика)
|
||||
root/s_out/sprinkler/$wMin - ON/OFF достигнут минимум воды в баке (от поплавкового датчика)
|
||||
root/s_out/sprinkler/$rDren - ON/OFF включено реле дренажного насоса
|
||||
root/s_out/sprinkler/$rPump - ON/OFF включено реле основного насоса
|
||||
root/s_out/sprinkler/set - значение счетчика воды (восстанавливается при перезагрузке из данного топика)
|
||||
root/s_out/sprinkler/$vIN - ON/OFF - признак открытия клапана налива бака из водопровода
|
||||
|
||||
root/s_out/sprinkler/garden/set - требуемый обьем (или время) полива зоны
|
||||
root/s_out/sprinkler/garden/cmd - ON или OFF - признак включения полива зоны
|
||||
root/s_out/sprinkler/garden/$state - ON или OFF - признак того что зона поливается в настоящее время
|
||||
root/s_out/sprinkler/garden/val - текущее время или обьем полива данной зоны
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user