Снимок с работающего прибора: плашка «Подача есть», лампы датчиков и выходов, раскрытый блок настроек. Вставлен в README (раздел 7) и в MANUAL (раздел 5). На снимке нет чувствительных данных: адрес уведомлений показан только именем хоста и это заглушка, IP приватный. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
329 lines
23 KiB
Markdown
329 lines
23 KiB
Markdown
# Контроллер насосов v8.2 — руководство пользователя
|
||
|
||
Документ для монтажника и обслуживающего персонала.
|
||
Техническое описание кода — в [README.md](README.md).
|
||
|
||
---
|
||
|
||
## 1. Что делает прибор
|
||
|
||
Контроллер следит за тремя насосами:
|
||
|
||
* **Насос 1** и **Насос 2** — основные;
|
||
* **Резерв** — аварийный (экстренный) насос.
|
||
|
||
Прибор:
|
||
|
||
1. показывает состояние на экране;
|
||
2. включает выход «Авария», если **оба** основных насоса остановлены;
|
||
3. включает выход «Резерв», когда запускается резервный насос;
|
||
4. отправляет уведомления на сервер (webhook) через интернет;
|
||
5. показывает панель мониторинга в браузере в локальной сети.
|
||
|
||
---
|
||
|
||
## 2. Подключение
|
||
|
||
### 2.1 Питание
|
||
|
||
5 В через microUSB (блок питания не менее 500 мА).
|
||
|
||
### 2.2 Датчики насосов
|
||
|
||
К каждому входу подключается **сухой контакт** — свободный контакт пускателя
|
||
насоса или датчика потока.
|
||
|
||
| Клемма платы | Что подключить |
|
||
|---|---|
|
||
| `D5` и `GND` | Контакт насоса 1 |
|
||
| `D6` и `GND` | Контакт насоса 2 |
|
||
| `D7` и `GND` | Контакт резервного насоса |
|
||
|
||
**Контакт замкнут = насос работает.** Полярность не важна, внешние резисторы
|
||
и питание на контакты подавать не нужно.
|
||
|
||
### 2.3 Выходы на реле
|
||
|
||
Прибор рассчитан на **релейные модули с активным LOW** — те, у которых реле
|
||
включается замыканием входа на GND. Это самый распространённый тип модулей для
|
||
Arduino.
|
||
|
||
| Клемма платы | Куда | Реле включается когда |
|
||
|---|---|---|
|
||
| `D3` | вход `IN` модуля «Авария» | оба основных насоса стоят |
|
||
| `D4` | вход `IN` модуля «Резерв» | работает резервный насос |
|
||
|
||
Питание модулей — от `5V` и `GND` платы (или от отдельного источника с общим
|
||
GND). **Сирену, лампу или пускатель напрямую к `D3`/`D4` подключать нельзя** —
|
||
только через релейный модуль или транзисторный ключ.
|
||
|
||
> **Важно: тип модуля должен быть именно active-LOW.** Если поставить модуль с
|
||
> активным HIGH, реле будет включено в норме и отпускать при аварии — логика
|
||
> перевернётся. Пины `D3` и `D4` выбраны именно под active-LOW: они удерживают
|
||
> HIGH во время загрузки, поэтому реле не остаются включёнными на всё время
|
||
> старта.
|
||
|
||
Оговорки, которые лучше знать заранее:
|
||
|
||
* **Оба реле кратковременно моргают при каждой перезагрузке прибора** — и при
|
||
подаче питания, и при заливке прошивки. Так и есть, это нормально: выходы
|
||
сидят на служебных пинах платы, и пока прошивка не запустилась, уровнем на них
|
||
управляет не она. Автоматика в этот момент ещё не работает, ложных уведомлений
|
||
моргание не вызывает.
|
||
* Если моргание окажется недопустимым (например, сирена успевает пискнуть) —
|
||
ставится RC-цепочка на вход релейного модуля. Прошивку менять не нужно.
|
||
* Встроенный светодиод платы повторяет состояние реле «Резерв» — удобно для
|
||
проверки монтажа.
|
||
* Схема **не отказобезопасная**: если контроллер обесточен, сигнала аварии нет.
|
||
Если это критично — снимайте нагрузку с **нормально замкнутого (NC)** контакта
|
||
реле, тогда пропажа питания читается системой как авария.
|
||
|
||
### 2.4 Свободные клеммы
|
||
|
||
`D8`, `D0` и `A0` прошивкой не используются. Учтите, что `A0` — только
|
||
аналоговый вход и цифровым выходом стать не может.
|
||
|
||
### 2.5 Экран
|
||
|
||
OLED 128×64 (I2C): `SDA → D1`, `SCL → D2`, `VCC → 3V3`, `GND → GND`.
|
||
|
||
---
|
||
|
||
## 3. Первое включение
|
||
|
||
1. Подайте питание. На экране появится `PUMP CTRL v8 / Starting...`.
|
||
2. Прибор не найдёт сохранённой сети и поднимет свою точку доступа:
|
||
|
||
```
|
||
Имя сети: Pump_Control_Set
|
||
```
|
||
|
||
3. Подключитесь к ней с телефона или ноутбука (пароль не требуется).
|
||
4. Откройте в браузере `http://192.168.4.1` — откроется страница настройки.
|
||
5. Выберите вашу Wi-Fi-сеть, введите пароль, нажмите **Save**.
|
||
6. Прибор перезагрузится и покажет на экране полученный IP-адрес.
|
||
**Запишите этот адрес** — по нему открывается панель мониторинга.
|
||
|
||
Если за 2 минуты сеть не настроена, прибор переходит в автономный режим:
|
||
экран, выходы аварии и логика работают, webhook и веб-панель — нет.
|
||
|
||
---
|
||
|
||
## 4. Экран
|
||
|
||
```
|
||
SUPPLY OK
|
||
────────────────────────
|
||
P1:RUN P2:OFF BK:OFF
|
||
ALARM:OFF BACKUP:OFF
|
||
────────────────────────
|
||
192.168.1.128
|
||
```
|
||
|
||
**Верхняя строка — главный ответ**, набрана крупно и читается от двери:
|
||
|
||
| Надпись | Значение |
|
||
|---|---|
|
||
| `SUPPLY OK` | Норма, подача идёт |
|
||
| `BACKUP RUN` | Работает резерв, основные в порядке — обратите внимание |
|
||
| `NO SUPPLY` (мигает) | **Авария: оба основных стоят, подачи нет** |
|
||
| `BACKUP ON` (мигает) | **Авария: основные стоят, подачу держит резерв** |
|
||
| `STARTING` | Идёт запуск, первые ~4 секунды |
|
||
|
||
Вторая строка — датчики: `RUN` насос работает, `OFF` стоит. `P1` и `P2` —
|
||
основные, `BK` — резерв.
|
||
|
||
Третья строка — что подано на выходы: `ON` реле замкнуто, `OFF` разомкнуто.
|
||
Удобно при пусконаладке: видно, что прибор действительно выдал сигнал.
|
||
|
||
Нижняя строка — адрес в сети или `no network`, если связи нет.
|
||
|
||
Надписи латиницей: встроенный шрифт дисплея кириллицы не содержит.
|
||
|
||
---
|
||
|
||
## 5. Панель в браузере
|
||
|
||
Откройте `http://<IP-адрес прибора>` в любом браузере в той же сети.
|
||
|
||
Панель устроена как световое табло: **сверху крупно главный ответ**, ниже —
|
||
лампы датчиков и выходов, в самом низу свёрнутые настройки.
|
||
|
||

|
||
|
||
Так панель выглядит в норме. Здесь блок настроек раскрыт; обычно он свёрнут
|
||
в одну строку и не отвлекает.
|
||
|
||
### 5.1 Главная плашка
|
||
|
||
| Плашка | Цвет | Что значит |
|
||
|---|---|---|
|
||
| **Подача есть** | зелёный | Норма, работает хотя бы один основной насос |
|
||
| **Работает резерв** | жёлтый | Резерв в работе, основные в порядке — обратите внимание |
|
||
| **Насосы стоят** | красный, пульсирует | **Авария: оба основных остановлены** |
|
||
| **Запуск** | серый | Первые ~4 секунды после включения |
|
||
|
||
Под заголовком — уточнение: какой именно насос работает, или «подачу держит
|
||
резерв», если основные стоят, а резерв качает.
|
||
|
||
Жёлтый у резерва выбран намеренно: работающий резерв — это предупреждение,
|
||
система ещё справляется. Красный оставлен для случая, когда основной подачи нет.
|
||
|
||
**Вкладка браузера тоже показывает состояние** — в её заголовке текущий статус,
|
||
а кружок-значок меняет цвет. Свёрнутую на телефоне вкладку видно, не открывая.
|
||
|
||
### 5.2 Лампы
|
||
|
||
Три лампы датчиков: **Насос 1**, **Насос 2**, **Резерв** — «работает», «стоит»
|
||
или «ожидание».
|
||
|
||
Две лампы выходов: **Выход «Авария»** и **Выход «Резерв»** — «замкнут» или
|
||
«разомкнут». Это то, что прибор реально подал на реле.
|
||
|
||
Полезно при пусконаладке: если выход показан замкнутым, а нагрузка не сработала,
|
||
проблема в монтаже или в типе релейного модуля, а не в прошивке.
|
||
|
||
### 5.3 Настройки
|
||
|
||
Раскрываются по нажатию на строку **Настройки** — в обычной работе они свёрнуты
|
||
и не отвлекают.
|
||
|
||
**Пустое поле означает «не менять»** — можно поправить одну задержку, не трогая
|
||
остальное. Неверное значение так же игнорируется, поэтому опечатка ничего не
|
||
испортит.
|
||
|
||
| Поле | Что задаёт | Допустимо | По умолчанию |
|
||
|---|---|---|---|
|
||
| **Адрес для уведомлений** | куда прибор шлёт сообщения | до 220 символов | не задан |
|
||
| **Имя прибора в уведомлениях** | по нему различают приборы на сервере | латиница, цифры, `_`, `-`; до 31 символа | `Wemos_D1_Pump` |
|
||
| **Задержка сигнала — аварии** | сколько оба основных должны стоять до сигнала | 0…3600 с | `5` |
|
||
| **Задержка сигнала — резерва** | сколько резерв должен работать до сигнала | 0…3600 с | `0` (сразу) |
|
||
|
||
Под полем адреса показано только **имя сервера**, а не весь адрес: он содержит
|
||
секретный ключ, и выводить его на экран, который видно всем в помещении, не
|
||
нужно. Чтобы сменить адрес — введите новый целиком.
|
||
|
||
Кнопка **Сменить сеть Wi-Fi** стирает сохранённую сеть и перезагружает прибор
|
||
(см. раздел 7).
|
||
|
||
Настройки сохраняются в файл во внутренней памяти прибора, переживают
|
||
отключение питания и смену сети Wi-Fi.
|
||
|
||
> Если панель показывает красное предупреждение «Память недоступна» или
|
||
> настройки пропадают после перезагрузки — причина в настройке `Flash Size`
|
||
> при прошивке. Она обязана совпадать с фактическим размером памяти платы:
|
||
> для этих приборов **`2MB (FS:64KB OTA:~992KB)`**. Вариант `4MB` на плате с
|
||
> 2 МБ приводит ровно к такому симптому.
|
||
|
||
> Русские буквы и пробелы в имени прибора **не сохранятся** — они будут
|
||
> отброшены. Это не ошибка: ограничение защищает формат уведомления от поломки.
|
||
> Пишите, например, `Nasosnaya_1` или `Pump_Station_A`.
|
||
|
||
**На новом приборе адрес уведомлений не задан** — панель покажет «Не задан —
|
||
уведомления отключены», сообщения отправляться не будут, всё остальное работает.
|
||
|
||
---
|
||
|
||
## 6. Уведомления на сервер
|
||
|
||
При изменении ситуации прибор отправляет сообщение на настроенный адрес:
|
||
|
||
В сообщении приходит **та же фраза, что показывает панель** — читать можно
|
||
без расшифровки кодов:
|
||
|
||
| Ситуация | Текст в сообщении |
|
||
|---|---|
|
||
| Оба основных стоят, резерв качает | «Насосы стоят, подачу держит резерв» |
|
||
| Оба основных стоят, резерва нет | «Насосы стоят, подачи нет» |
|
||
| Работает резерв, основные в порядке | «Работает резерв, основные насосы в работе» |
|
||
| Работа восстановлена | «Подача есть, работает насос 1» |
|
||
|
||
Рядом с текстом передаётся служебное поле для автоматики: `MAIN PUMPS` или
|
||
`EMERGENCY PUMP` и `ALARM` / `OK` / `STARTED` / `STOPPED`.
|
||
|
||
Уведомления отправляются один раз на каждое изменение, а не повторяются.
|
||
Если в момент события связи не было — уведомление **не будет** отправлено
|
||
позже, оно теряется.
|
||
|
||
На отправку отводится не больше **3 секунд**. Если сервер недоступен или
|
||
отвечает медленно, прибор прекращает попытку и продолжает работу: экран и
|
||
кнопка на это время замирают, но **выходы аварии срабатывают сразу**, не
|
||
дожидаясь сервера.
|
||
|
||
---
|
||
|
||
## 7. Сброс настроек Wi-Fi
|
||
|
||
Нужен при смене роутера или пароля сети. Физической кнопки сброса у прибора нет.
|
||
|
||
**Если сеть пропала или сменился пароль** — ничего делать не нужно: при
|
||
перезагрузке прибор не сможет подключиться и **сам** поднимет точку доступа
|
||
`Pump_Control_Set`. Подключитесь к ней и введите новые данные (раздел 3).
|
||
|
||
**Если надо перевести прибор в другую сеть, а текущая работает** — нажмите
|
||
**Сменить сеть Wi-Fi** в настройках панели. Прибор перезагрузится и поднимет точку
|
||
доступа.
|
||
|
||
**Если панель недоступна, а сеть работает** — выключите роутер и перезагрузите
|
||
прибор по питанию. Не найдя сеть, он откроет портал настройки.
|
||
|
||
Настройки из блока «Настройки» (адрес уведомлений, имя устройства, выдержки) при
|
||
сбросе Wi-Fi **не стираются**.
|
||
|
||
---
|
||
|
||
## 8. Задержки срабатывания
|
||
|
||
Задержки заданы намеренно, чтобы не срабатывать на кратковременные пуски и
|
||
остановки:
|
||
|
||
| Событие | Задержка |
|
||
|---|---|
|
||
| Фиксация нового состояния датчика | 3 секунды (не настраивается) |
|
||
| Авария основных насосов (после фиксации) | **Задержка сигнала аварии**, по умолчанию 5 с |
|
||
| Пуск резерва (после фиксации) | **Задержка сигнала резерва**, по умолчанию 0 с |
|
||
| Итого до сигнала аварии при значениях по умолчанию | **~8 секунд** |
|
||
| Итого до сигнала о резерве при значениях по умолчанию | ~3 секунды |
|
||
|
||
Обе задержки настраиваются в панели (раздел 5.3) и действуют **одновременно на
|
||
реле и на уведомление** — отдельно задержать только уведомление нельзя.
|
||
|
||
Задержка `0` означает «сразу после фиксации», то есть через те же 3 секунды
|
||
антидребезга.
|
||
|
||
---
|
||
|
||
## 9. Диагностика
|
||
|
||
| Симптом | Причина / что делать |
|
||
|---|---|
|
||
| Экран не горит | Проверьте питание и провода SDA/SCL. Если адрес дисплея `0x3D`, требуется правка прошивки (константа `OLED_ADDR`) |
|
||
| Экран горит, но насосы всегда `STOPPED` | Контакты датчиков не замыкаются на `GND`; проверьте общий провод |
|
||
| Насосы всегда `RUNNING` | Вход замкнут на `GND` постоянно — проверьте контакт пускателя |
|
||
| `WiFi: NO CONNECTION` | Сеть недоступна или сменился пароль → выполните сброс Wi-Fi (раздел 7) |
|
||
| Панель в браузере не открывается | Проверьте, что компьютер в той же сети; уточните IP на экране прибора |
|
||
| Уведомления не приходят | Проверьте адрес webhook на панели и доступность сервера. Смотрите лог в мониторе порта (115200 бод): `[HTTP] Код: 200` — доставлено; `[HTTP] DNS не ответил` — проблема с именем сервера или DNS роутера; `[HTTP] Ошибка:` — сервер не ответил вовремя |
|
||
| Экран замирает на 1-3 с в момент аварии | Так и задумано: отправка уведомления блокирует прибор не дольше 3 секунд. Реле при этом срабатывают сразу, без ожидания сервера |
|
||
| Панель пишет «Реле включено», но нагрузка не сработала | Проблема в монтаже или в типе модуля. Проверьте, что модуль **active-LOW**, что он питается, и что общий GND соединён |
|
||
| Реле сработали наоборот: включены в норме, отпускают при аварии | Стоит модуль с активным HIGH вместо active-LOW. Замените модуль либо потребуйте правку прошивки |
|
||
| Реле моргают при перезагрузке или заливке прошивки | Нормально, см. 2.3. Выходы на служебных пинах платы; пока прошивка не стартовала, уровнем управляет не она. Уведомления при этом не отправляются |
|
||
| Имя устройства не сохраняется | В нём есть русские буквы, пробелы или знаки препинания — они отбрасываются. Допустимы только латиница, цифры, `_` и `-` |
|
||
| Задержка не сохраняется | Значение вне диапазона 0…3600 или не целое число — поле игнорируется |
|
||
| Прибор не стартует после включения | На `D3` или `D4` висит нагрузка, тянущая пин к GND при старте — проверьте релейный модуль и его питание |
|
||
|
||
Подробный лог работы выводится в USB-порт: скорость **115200 бод**
|
||
(Arduino IDE → Инструменты → Монитор порта).
|
||
|
||
---
|
||
|
||
## 10. Безопасность
|
||
|
||
Прибор не имеет пароля на веб-панель. Любой пользователь локальной сети может
|
||
открыть панель, сбросить Wi-Fi, изменить адрес уведомлений и **увеличить
|
||
выдержки аварии**, то есть замедлить реакцию сигнализации. Устанавливайте прибор
|
||
в закрытом технологическом сегменте сети, не в гостевом Wi-Fi.
|
||
|
||
Контроллер выполняет **функцию мониторинга и сигнализации**, а не защиты.
|
||
Он не заменяет штатную автоматику защиты насосной станции. Кроме того, схема не
|
||
отказобезопасна: обесточенный контроллер сигнала аварии не подаёт (см. 2.3).
|