Initial commit: контроллер насосов v8.2 + документация

Прошивка Wemos D1 Mini для мониторинга трёх насосов: OLED,
веб-панель, webhook-уведомления, сброс Wi-Fi кнопкой.

Адрес webhook задаётся через веб-панель и хранится в EEPROM;
в исходнике не хранится, так как содержит секретный токен.

Добавлены README.md (техдокументация) и MANUAL.md (руководство).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 13:51:22 +07:00
co-authored by Claude Opus 5
commit 75430a3732
4 changed files with 1105 additions and 0 deletions
+211
View File
@@ -0,0 +1,211 @@
# Контроллер насосов 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 Выходы аварии
| Клемма | Когда `HIGH` (3.3 В) |
|---|---|
| `D8` | Авария: оба основных насоса стоят |
| `D0` | Работает резервный насос |
Выходы логические, 3.3 В, ток до ~12 мА. **Реле, сирену или лампу напрямую
подключать нельзя** — только через транзисторный ключ или релейный модуль
с оптронной развязкой.
### 2.4 Кнопка сброса Wi-Fi
Обычная кнопка без фиксации между `D3` и `GND`.
> Кнопку нельзя держать нажатой в момент включения питания — плата уйдёт в
> служебный режим и не запустится.
### 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. Экран
```
PUMP CONTROLLER v8
────────────────────────
PUMP 1 : RUNNING
PUMP 2 : STOPPED
BACKUP : STANDBY
────────────────────────
192.168.1.42
STATUS: OK
```
| Надпись | Значение |
|---|---|
| `PUMP 1/2 : RUNNING` | Насос работает |
| `PUMP 1/2 : STOPPED` | Насос остановлен |
| `BACKUP : ACTIVE` | Резервный насос запущен |
| `BACKUP : STANDBY` | Резерв в ожидании |
| `WiFi: NO CONNECTION` | Нет связи с сетью |
| `INIT...` | Идёт запуск (первые ~4 секунды) |
| `STATUS: OK` | Норма |
| `WARN: BACKUP RUNNING` | Работает резерв — требуется внимание |
| `!! ALARM: NO PUMPS !!` (мигает) | **Авария: подача воды прекращена** |
---
## 5. Панель в браузере
Откройте `http://<IP-адрес прибора>` в любом браузере в той же сети.
На странице:
* три карточки насосов с индикаторами;
* панель состояния системы (`SYS_OK` или `CRITICAL`);
* кнопка **Сбросить Wi-Fi**;
* поле **Webhook URL** для смены адреса уведомлений.
Страница обновляется автоматически при изменении состояния насосов.
### Адрес уведомлений
**На новом приборе адрес не задан** — панель покажет
`не задан - уведомления отключены`, и сообщения на сервер отправляться не будут.
Введите адрес в поле под заголовком `Webhook URL` и нажмите **Сохранить**.
Адрес сохраняется в память прибора и переживает отключение питания и сброс
Wi-Fi. Максимальная длина — 220 символов.
---
## 6. Уведомления на сервер
При изменении ситуации прибор отправляет сообщение на настроенный адрес:
| Событие | Что означает |
|---|---|
| `MAIN PUMPS` / `ALARM` | Оба основных насоса стоят |
| `MAIN PUMPS` / `OK` | Работа восстановлена |
| `EMERGENCY PUMP` / `STARTED` | Запустился резервный насос |
| `EMERGENCY PUMP` / `STOPPED` | Резервный насос остановился |
Уведомления отправляются один раз на каждое изменение, а не повторяются.
Если в момент события связи не было — уведомление **не будет** отправлено
позже, оно теряется.
---
## 7. Сброс настроек Wi-Fi
Нужен при смене роутера или пароля сети.
**Способ 1 — кнопкой:**
нажмите и держите кнопку на `D3`. На экране появится полоса и обратный отсчёт
от 3 секунд. Дождитесь конца — прибор перезагрузится и снова поднимет точку
доступа `Pump_Control_Set`. Отпустите кнопку раньше — ничего не произойдёт.
**Способ 2 — через браузер:**
на панели мониторинга нажмите **Сбросить Wi-Fi**.
Webhook URL при сбросе Wi-Fi **не стирается**.
---
## 8. Задержки срабатывания
Задержки заданы намеренно, чтобы не срабатывать на кратковременные пуски и
остановки:
| Событие | Задержка |
|---|---|
| Фиксация нового состояния датчика | 3 секунды |
| Авария основных насосов (после фиксации) | ещё 5 секунд |
| **Итого до сигнала аварии** | **~8 секунд** |
| Реакция на резервный насос | ~3 секунды |
---
## 9. Диагностика
| Симптом | Причина / что делать |
|---|---|
| Экран не горит | Проверьте питание и провода SDA/SCL. Если адрес дисплея `0x3D`, требуется правка прошивки (константа `OLED_ADDR`) |
| Экран горит, но насосы всегда `STOPPED` | Контакты датчиков не замыкаются на `GND`; проверьте общий провод |
| Насосы всегда `RUNNING` | Вход замкнут на `GND` постоянно — проверьте контакт пускателя |
| `WiFi: NO CONNECTION` | Сеть недоступна или сменился пароль → выполните сброс Wi-Fi (раздел 7) |
| Панель в браузере не открывается | Проверьте, что компьютер в той же сети; уточните IP на экране прибора |
| Уведомления не приходят | Проверьте адрес webhook на панели и доступность сервера. Смотрите лог в мониторе порта (115200 бод), строка `[HTTP] Код:` |
| Прибор не стартует после включения | Была нажата кнопка `D3` при подаче питания либо `D8` притянут к плюсу нагрузкой |
Подробный лог работы выводится в USB-порт: скорость **115200 бод**
(Arduino IDE → Инструменты → Монитор порта).
---
## 10. Безопасность
Прибор не имеет пароля на веб-панель. Любой пользователь локальной сети может
открыть панель, сбросить Wi-Fi и изменить адрес уведомлений. Устанавливайте
прибор в закрытом технологическом сегменте сети, не в гостевом Wi-Fi.
Контроллер выполняет **функцию мониторинга и сигнализации**, а не защиты.
Он не заменяет штатную автоматику защиты насосной станции.