Для штатного обновления: котельная → OTA-прошивка.
Загрузите новый .ino.bin либо выберите ранее сохранённый файл для отката.
Выбор не запускает прошивку. Нажимайте Запустить OTA только когда ESP онлайн.
Не отключайте питание до завершения обновления.
Если ESP не выходит в сеть, используйте USB-прошивку по инструкции ниже.
🖥 Termius: полезные команды сервера
Команды выполняются от root. Они не меняют настройки, если прямо не указано «перезапуск» или «редактирование».
Статус и перезапуск
# Веб-панель
systemctl status boiler-web.service --no-pager
systemctl restart boiler-web.service
# Основной Telegram-бот операторов
systemctl status boiler-bot.service --no-pager
systemctl restart boiler-bot.service
# Найти точное имя службы админ-бота
systemctl list-units --type=service --all | grep -Ei 'boiler|admin'
После перезапуска проверьте, что в статусе указано active (running).
Последние ошибки и журналы
# Последние 100 записей журналов
journalctl -u boiler-web.service -n 100 --no-pager
journalctl -u boiler-bot.service -n 100 --no-pager
# Смотреть новые записи в реальном времени; остановить Ctrl+C
journalctl -u boiler-bot.service -f
Проверка конфигурации без паролей
# Какие службы сейчас работают
systemctl is-active boiler-web.service boiler-bot.service
# Версия Python-файлов перед перезапуском
python3 -m py_compile /opt/boiler-web/app.py
python3 -m py_compile /opt/boiler/server_bot_current.py
# Безопасная сводка аккаунтов: без паролей, хешей и Telegram ID
python3 - <<'PY'
import json
from pathlib import Path
data=json.loads(Path('/opt/boiler-web/users.json').read_text(encoding='utf-8'))
for login, user in data.get('users', {}).items():
if isinstance(user, dict):
print(login, user.get('role'), user.get('devices', []),
'disabled='+str(user.get('disabled') is True),
'alerts='+str(user.get('alert_devices', [])))
PY
Смена токена Telegram
В @BotFather откройте нужного бота и при необходимости выполните Revoke current token.
Сохраните новый токен только в конфигурации соответствующего бота на сервере. Не вставляйте его в чат, заметки, скриншоты и команды shell.
Перезапустите только соответствующую службу и проверьте у бота /start.
# Основной бот: откройте файл в редакторе, замените только значение BOT_TOKEN
nano /opt/boiler/server_bot_current.py
systemctl restart boiler-bot.service
systemctl status boiler-bot.service --no-pager
# Для админ-бота сначала узнайте его службу и файл конфигурации:
systemctl list-units --type=service --all | grep -Ei 'boiler|admin'
systemctl show ИМЯ_СЛУЖБЫ -p FragmentPath -p EnvironmentFiles
Перед заменой токенов дождитесь окончания всех текущих доработок. Старый токен сразу перестаёт работать после revoke.
Осторожно
Не используйте rm -rf, systemctl daemon-reload и перезагрузку сервера без отдельной необходимости. Для обычного обновления кода достаточно проверить файл и перезапустить нужную службу.
📘 Инструкция по прошивке ESP32
1. Подключение платы
Подключить ESP32 исправным USB-кабелем с передачей данных.
Открыть Arduino IDE.
Выбрать плату ESP32 Dev Module.
Выбрать появившийся COM-порт.
2. Настройки Arduino IDE
BoardESP32 Dev Module
CPU Frequency240 MHz (WiFi/BT)
Flash Frequency80 MHz
Flash ModeQIO
Flash Size4MB (32Mb)
Partition Scheme
Minimal SPIFFS (1.9MB APP with OTA/128KB SPIFFS)
Получатели аварийных звонков и SMS. Изменения применяются после сохранения.
Не сохранено
Оператор и APN определяются автоматически по SIM-карте. При замене SIM-карты необходима перезагрузка диспетчеризации.
Аварии и логи
История алертов и команд
Загрузка...
Датчики
Температурные, давления, аналоговые и дискретные входы
Пороги
Мин/макс значения для оповещений
Не сохранено
Температурный график
Управление температурой двух контуров по наружной температуре
Загрузка...
Графики
Статистика за период
Нет включённых датчиков для построения графиков.
Сервер
VPS и состояние сервера
Загрузка...
Заметки
Общие записи по текущей котельной
Вы можете читать записи. Добавлять, изменять и удалять их могут администратор и оператор с полным доступом — только свои записи.
0/1000
Инструкции
Работа с диспетчеризацией · текущая котельная
1. Быстрый старт
Проверьте индикатор связи в верхней части панели.
Откройте «Дашборд» и убедитесь, что показания обновляются.
Проверьте красный баннер аварий и значения датчиков.
Для управления оборудованием откройте раздел «Управление».
Перед изменением порогов или автоматики запишите исходные значения.
Диспетчеризация дополняет штатную автоматику котельной, но не заменяет
механические защиты, аварийные термостаты и контроль персонала.
2. Дашборд и состояния
На дашборде находятся текущие температуры, давления, ток насоса и другие подключённые датчики.
Норма — значение находится в разрешённом диапазоне.
Предупреждение — достигнут нижний или предупредительный порог.
Авария — превышен аварийный порог либо обнаружен обрыв.
Оффлайн — сервер давно не получал телеметрию от контроллера.
Строка «Последние данные» показывает, когда получен последний пакет от ESP32.
3. Управление реле
Команда «Включить» включает выбранное реле.
Команда «Выключить» может установить ручную блокировку повторного автоматического включения.
«Перезапуск насоса» кратковременно выключает и затем включает реле насоса.
Постоянное правило снова выполнит действие, когда его условие станет истинным.
Реле, закреплённое за температурным графиком, нельзя одновременно использовать в конфликтующем правиле.
Перед дистанционным включением убедитесь, что запуск оборудования безопасен
и рядом с механизмом не проводятся работы.
4. Температурный график
Температурный график управляет оборудованием по зависимости требуемой температуры от температуры управляющего датчика.
Выберите контур и включите его.
Укажите управляющий и контролируемый датчики.
Назначьте реле включения и выключения.
Задайте точки графика — между ними значение рассчитывается автоматически.
Настройте гистерезис, длительность импульса и время ожидания реакции.
Сохраните параметры и проверьте текущее состояние контура.
В разделе «Система» такие реле помечаются надписью «температурный график».
5. Пороги и расписание контроля
Всегда — порог контролируется круглосуточно.
По времени — контроль работает только в заданном интервале.
Выключено — порог не создаёт аварий и местной сигнализации.
Минимум и максимум задаются отдельно для каждого датчика.
После изменения обязательно нажмите кнопку сохранения.
Скрытый датчик не отображается на веб-панели и не должен создавать веб-аварию.
6. Графики, аварии и журнал
В «Графиках» выбирается период просмотра истории показаний.
Под графиками отображаются минимум, максимум и среднее значение.
В «Авариях и логах» находятся зарегистрированные события и тревоги.
Оффлайн-уведомление отправляется один раз при потере связи.
После восстановления система определяет по идентификатору запуска, был ли перезапущен контроллер.
7. GSM и Wi‑Fi
Основной канал связи отображается как Wi‑Fi или GSM.
При недоступности Wi‑Fi контроллер может перейти на мобильную сеть.
Для GSM проверяются SIM-карта, оператор, APN и баланс.
После изменения Wi‑Fi дождитесь повторного подключения контроллера.
История переключения каналов отображается в системных событиях.
8. Датчики и калибровка
В разделе «Датчики» проверяются найденные DS18B20 и их адреса.
Привязка адреса закрепляет физический DS18B20 за нужным слотом T1–T8.
Отрицательное значение P1 или P2 означает отсутствие сигнала либо обрыв цепи 4–20 мА.
Калибровку нуля давления выполняйте только при гарантированно нулевом давлении.
После переподключения датчика убедитесь, что его адрес и показания появились в системе.
9. Настройки и заметки
Можно изменить названия датчиков и выбрать их видимость.
Категории оповещений можно временно отключать.
Телефонные номера для аварийных звонков и SMS настраиваются в разделе «GSM и WiFi».
Заметки привязаны к текущему пользователю и выбранной котельной.
Тема оформления сохраняется в браузере.
10. Web- и Telegram-уведомления
Web Push требует разрешения браузера на показ уведомлений.
Telegram сообщает аварии, потерю и восстановление связи.
«Контроллер не перезапускался» означает перерыв передачи данных.
«Контроллер перезапустился» означает изменение идентификатора запуска ESP32.
Точная аппаратная причина перезапуска определяется только при поддержке соответствующего поля прошивкой.
11. Telegram-бот
Основные команды:
/start
Открыть главное меню бота.
/status
Текущее состояние котельной.
/sensors
Показания и список датчиков.
/thresholds
Просмотр и настройка порогов.
/reboot_pump
Перезапуск основного насоса.
/wifi_setup
Настройка подключения Wi‑Fi.
/gsm
Состояние GSM, SIM и баланса.
/calibration
Калибровка датчиков давления.
/help
Справка по доступным командам.
Перед выполнением команды проверьте, какая котельная выбрана в боте. Переключение объекта выполняется через меню Telegram.
12. Если что-то не работает
Проверьте статус «Онлайн» и время последних данных.
Откройте «Система» и посмотрите канал, RSSI, uptime и последние события.
Проверьте питание контроллера, роутер, SIM-карту и доступность мобильной сети.
При проблеме датчика проверьте его адрес, питание и проводку.
При проблеме реле проверьте ручную блокировку, постоянные правила и температурный график.
Не выполняйте многократные команды подряд — дождитесь обновления состояния.
Настройки
Универсальные аналоговые входы 0–3,3 В
Два свободных аналоговых входа на плате: Ток и Пл. По умолчанию выключены.
⌄
Дискретные датчики
Цифровые входы D5/D12. Подключаются только сухими контактами к GND. По умолчанию выключены. Нельзя подавать на D5/D12 3,3 В, 5 В, 12 В или 24 В.
⌄
Уровень
Поплавки MIN/MAX, один 2-проводный или один 3-проводный перекидной датчик.
Универсальные сухие контакты
Концевик, реле контроля, датчик протока, давления, тяги, пламени или другой контакт без внешнего напряжения.
Импульсные и специальные датчики
Расходомеры с импульсным выходом, счётчики и специальные профили будут добавляться отдельной функцией.
Пока D5/D12 работают как дискретные входы сухого контакта. Импульсный режим не включается автоматически, чтобы не использовать вход в неподходящем сценарии.
Имена датчиков
⌄
Не сохранено
Видимость на веб-панели
Не влияет на бот
⌄
Не сохранено
Получать уведомления
Каналы задаются отдельно для этой котельной
⌄
Веб — всплывающие сообщения внутри открытой панели. Push Android приходит на телефон, даже когда панель закрыта, если уведомления разрешены в браузере.
Не сохранено
Оповещения по категориям
Какие типы аварий контролировать
⌄
Не сохранено
Привязка датчиков DS18B20
⌄
Не сохранено
Применится на устройстве в течение ~10 сек
Калибровка датчиков давления
⌄
P1
—бар
Смещение: 0
P2
—бар
Смещение: 0
Тема оформления
⌄
Данные оператора
Пароль показывается только один раз
Подтверждение
Автоматизация реле
Ручное включение или выключение выполняется сразу, но не отменяет постоянное правило.
Если условие снова выполняется, автоматика применит его повторно.
Расписание реле
Время Крыма. Вне временного окна реле выключено.
Допускаются интервалы через полночь, например 20:00–08:00.
Условия датчиков применяются только внутри этого окна. Реле температурного графика всегда управляются только графиком.