Извините, ваш браузер не поддерживает JavaScript!
Войти

Локальный мониторинг энергопотребления с Docker

Локальный мониторинг энергопотребления с Docker

Локальная система мониторинга энергопотребления позволяет хранить сервер мониторинга и данные об электроэнергии под вашим контролем. Вместо отправки каждого показания в публичное облако, энергометр загружает данные в Docker-контейнер, работающий на локальном сервере, NAS, Raspberry Pi или совместимом маршрутизаторе.

IAMMETER-Docker предоставляет готовый к работе локальный сервер мониторинга энергопотребления для систем электропотребления и солнечных фотоэлектрических установок. Он может собирать измерения, отображать данные в реальном времени и исторические данные, предоставлять API и при необходимости работать как офлайн-регистратор данных.

Энергометр IAMMETER
        │
        │ Wi-Fi / локальная сеть
        ▼
IAMMETER-Docker
        │
        ├── Локальная веб-панель
        ├── Исторические данные об энергии
        ├── REST API
        ├── MQTT
        ├── CSV регистратор данных
        └── Опциональная пересылка

IAMMETER-Docker — это практичный вариант локального размещения, но он не воспроизводит все функции и отчёты IAMMETER-Cloud. Если вы всё ещё выбираете архитектуру, сравните варианты на странице решений для локального мониторинга энергопотребления.

🎬 Смотреть видеоурок по IAMMETER-Docker

1. Когда следует использовать локальную систему мониторинга энергопотребления?

IAMMETER-Docker подходит, если вы хотите:

  • хранить данные об энергии на сервере, которым вы управляете;
  • контролировать электропотребление в локальной сети без зависимости от доступа в Интернет;
  • развернуть локальную панель мониторинга солнечной энергии;
  • собирать данные на удалённом объекте с помощью офлайн-регистратора;
  • получать доступ к измерениям через локальный REST API или MQTT;
  • пересылать выбранные данные на другую платформу;
  • создать частную панель мониторинга или интеграцию на основе сохранённых данных об энергии.

Типичные области применения включают:

  • мониторинг домашнего электропотребления и солнечных фотоэлектрических систем;
  • мастерские, офисы и небольшие коммерческие объекты;
  • удалённые солнечные системы и серверные помещения;
  • среды разработки и тестирования;
  • проекты, требующие локального хранения данных.

Если вам нужны только прямые показания счётчика для Home Assistant, Node-RED, ПЛК или пользовательского ПО, развёртывание полного сервера может быть излишним. Перед выбором ознакомьтесь с вариантами локальной интеграции.

2. Что вам понадобится

Перед развёртыванием подготовьте:

  • устройство, способное запускать Docker, например Linux-сервер, NAS, Raspberry Pi или совместимый маршрутизатор;
  • постоянное хранилище для базы данных приложения;
  • свободный TCP-порт 5050 для веб-приложения и API;
  • TCP-порт 1883, если будет использоваться встроенный MQTT-сервис;
  • стабильный IP-адрес или DHCP-резервацию для Docker-хоста;
  • энергометр IAMMETER или другой источник данных, способный отправлять данные в поддерживаемом формате API.

Docker-хост и счётчик должны иметь возможность связываться друг с другом по локальной сети. Для офлайн-работы доступ в Интернет не требуется после установки образа и необходимого ПО.

3. Развёртывание IAMMETER-Docker

Текущий релиз на Docker Hub — IAMMETER-Docker V2.4.

3.1 Вариант A: Docker run

Создайте рабочий каталог и запустите контейнер с постоянным хранилищем:

docker run -d \
  --name myiammeter \
  --restart always \
  -p 5050:5050 \
  -p 1883:1883 \
  -e TZ=Etc/UTC \
  -v "$PWD/data:/app/data" \
  iammeter/iammeter

Измените TZ=Etc/UTC на правильный часовой пояс для объекта мониторинга. Отчёты об энергии зависят от местной даты и времени, поэтому установите это до начала сбора производственных данных.

3.2 Вариант B: Docker Compose

Создайте compose.yaml:

services:
  iammeter:
    image: iammeter/iammeter
    container_name: myiammeter
    restart: always
    ports:
      - "5050:5050"
      - "1883:1883"
    environment:
      TZ: Etc/UTC
    volumes:
      - ./data:/app/data

Запустите сервис:

docker compose up -d

Проверьте его статус:

docker compose ps
docker compose logs --tail=100 iammeter

3.3 Откройте локальную панель управления

Откройте следующий адрес в браузере в той же сети:

http://<docker-host-ip>:5050

Учётные данные по умолчанию:

Имя пользователя: testuser
Пароль: 123456

Немедленно измените пароль по умолчанию. Не открывайте порты 5050 или 1883 напрямую в публичный Интернет без соответствующего файрвола, аутентификации и безопасной сетевой конфигурации.

Вход в IAMMETER-Docker

4. Первоначальная настройка

После входа в систему:

  1. Создайте Place (Помещение) для дома, солнечной станции или контролируемого объекта.
  2. Добавьте Meter (Счётчик).
  3. Введите серийный номер (SN) счётчика.
  4. Выберите правильный тип однофазного или трёхфазного счётчика.
  5. Назначьте каждую фазу или канал как Grid (Сеть), Inverter (Инвертор) или Load (Нагрузка).
  6. Подтвердите часовой пояс объекта и структуру измерений перед оценкой отчётов.

Настройка счётчика в IAMMETER-Docker

Правильное назначение каналов особенно важно для мониторинга солнечной энергии. Системе необходимо знать, какое измерение представляет сеть, инвертор или нагрузку, прежде чем она сможет отображать значимые результаты энергопотока.

5. Подключение энергометра IAMMETER

Счётчики IAMMETER могут загружать данные напрямую на локальный Docker-сервер.

В веб-интерфейсе счётчика настройте HTTP-загрузку сторонних данных и укажите адрес Docker-хоста:

<docker-host-ip>:5050/api/v1/sensor/uploadsensor

IP-адрес Docker-хоста должен быть доступен из Wi-Fi сети счётчика. Используйте тот же SN счётчика, который был добавлен в IAMMETER-Docker.

Настройка HTTP-загрузки в IAMMETER-Docker

После сохранения конфигурации счётчика:

  1. дождитесь первой загрузки;
  2. подтвердите, что счётчик отображается как онлайн в IAMMETER-Docker;
  3. сравните значения напряжения, мощности и энергии с локальными данными счётчика;
  4. проверьте направление и назначение каналов, прежде чем полагаться на расчёты солнечной энергии или импорта/экспорта.

Одновременное использование IAMMETER-Cloud

IAMMETER-Docker может опционально пересылать данные счётчика в IAMMETER-Cloud. Включайте пересылку только если вам нужны как локальное хранение, так и сервисы IAMMETER-Cloud.

Пересылка локальных данных в IAMMETER-Cloud

Для автономной установки, не зависящей от облака, оставьте пересылку в облако отключённой.

6. Загрузка данных с другого устройства или приложения

IAMMETER-Docker также может получать данные об энергии через REST API. Это полезно для симуляторов, шлюзов или пользовательских приложений, не использующих счётчик IAMMETER.

Создайте счётчик с произвольным SN, затем используйте тот же SN в каждом API-запросе.

Интерактивная документация API доступна на локальном сервере:

http://<docker-host-ip>:5050/docs

Документация API IAMMETER-Docker

Тестирование API-запроса IAMMETER-Docker

Сначала тестируйте API на непроизводственном счётчике. Соблюдайте согласованность SN, количества фаз, порядка полей и единиц измерения, чтобы исторические данные оставались полезными.

7. Запуск офлайн-регистратора данных

IAMMETER-Docker V2.4 может сохранять данные в CSV при подключении каталога регистратора. Это полезно для удалённых солнечных станций, заводов или серверных помещений без надёжного подключения к Интернету.

Запуск Docker с хранилищем регистратора

docker run -d \
  --name myiammeter \
  --restart always \
  -p 5050:5050 \
  -p 1883:1883 \
  -e TZ=Etc/UTC \
  -v "$PWD/data:/app/data" \
  -v "$PWD/datalogger:/app/datalogger" \
  iammeter/iammeter

Для Docker Compose добавьте этот том:

volumes:
  - ./data:/app/data
  - ./datalogger:/app/datalogger

Откройте страницу регистратора по адресу:

http://<docker-host-ip>:5050/datalogger

Страница регистратора изначально использует:

Имя пользователя: admin
Пароль: admin

Измените этот пароль в рамках развёртывания. Полный рабочий процесс на основе маршрутизатора и экспорта CSV см. в разделе Офлайн-регистратор данных с IAMMETER-Docker.

8. MQTT и другие расширенные функции

Порт 1883 используется MQTT-сервисом IAMMETER-Docker. Счётчик или другое приложение может публиковать поддерживаемые данные измерений в IAMMETER-Docker, а MQTT-клиенты могут подписываться на значения в реальном времени.

IAMMETER-Docker также поддерживает такие функции, как:

  • MySQL вместо локальной базы данных по умолчанию для больших наборов данных;
  • публикация и подписка MQTT;
  • пересылка в PVOutput;
  • совместимые данные энергии Tasmota;
  • сигналы тревоги в реальном времени и сценарии регистратора с интервалом в одну секунду.

Эти функции намеренно вынесены за пределы базового процесса развёртывания. Сначала настройте и протестируйте основной контейнер, затем переходите к расширенному руководству по IAMMETER-Docker.

9. Резервное копирование данных об энергии

Том /app/data содержит постоянные данные приложения. Регулярно создавайте резервные копии соответствующего каталога на хосте.

Безопасный базовый процесс:

  1. остановите или приостановите запись в контейнер;
  2. скопируйте полный смонтированный каталог data в резервное хранилище;
  3. включите каталог datalogger, если ведётся CSV-логирование;
  4. сохраняйте более одного поколения резервных копий;
  5. протестируйте восстановление на отдельном контейнере, прежде чем полагаться на план резервного копирования.

Не рассматривайте файловую систему контейнера как постоянное хранилище. Если /app/data не смонтирован, удаление контейнера может привести к удалению базы данных мониторинга вместе с ним.

10. Обновление IAMMETER-Docker

Перед обновлением сделайте резервную копию каталога с постоянными данными.

Для Docker Compose:

docker compose pull
docker compose up -d
docker compose logs --tail=100 iammeter

Для контейнера, созданного с помощью docker run:

  1. запишите существующие порты, часовой пояс и монтирования томов;
  2. загрузите новый образ;
  3. остановите и удалите старый контейнер;
  4. создайте контейнер заново с тем же постоянным томом;
  5. проверьте вход в систему, статус счётчика и исторические данные.
docker pull iammeter/iammeter
docker stop myiammeter
docker rm myiammeter

Затем повторите исходную команду docker run. Удаление контейнера безопасно только в том случае, если данные приложения сохранены в правильно смонтированном и резервированном каталоге хоста.

11. Устранение неполадок

Веб-страница не открывается

  • Убедитесь, что контейнер запущен с помощью docker ps или docker compose ps.
  • Проверьте, не занят ли порт 5050 на хосте.
  • Просмотрите журналы контейнера.
  • Убедитесь, что файрвол разрешает доступ из локальной сети.

Счётчик не отображается как онлайн

  • Убедитесь, что счётчик может связаться с IP-адресом Docker-хоста.
  • Проверьте URL загрузки и порт.
  • Убедитесь, что SN в IAMMETER-Docker соответствует SN счётчика.
  • Избегайте использования localhost в качестве адреса сервера в счётчике; он ссылается на сам счётчик, а не на Docker-хост.
  • Убедитесь, что изоляция клиентов или гостевая Wi-Fi сеть не блокирует LAN-трафик.

Данные солнечной энергии выглядят некорректно

  • Проверьте направление CT и подключение.
  • Подтвердите, какой канал назначен для сети, а какой — для инвертора.
  • Проверьте знак активной мощности при импорте и экспорте.
  • Подтвердите часовой пояс перед сравнением суточных сумм энергии.

Данные исчезают после воссоздания контейнера

  • Убедитесь, что /app/data был смонтирован в постоянный каталог хоста.
  • Проверьте права доступа к каталогу.
  • Восстановите последнюю проверенную резервную копию, если исходный том недоступен.

12. IAMMETER-Docker, IAMMETER-Cloud или пользовательская система?

Вариант Для кого подходит Расположение данных Сложность настройки Основной компромисс
IAMMETER-Docker Готовый локальный сервер мониторинга Ваш Docker-хост Низкая–средняя Меньше управляемых облачных функций
IAMMETER-Cloud Готовый мониторинг, отчёты и удалённый доступ IAMMETER-Cloud Низкая Использует облачный сервис
Home Assistant / Node-RED Сущности умного дома и пользовательская автоматизация Ваша собственная платформа Средняя Вы проектируете панель и рабочие процессы
Пользовательский сервер Продукт, EMS или специализированный конвейер данных Ваша инфраструктура Высокая Вы разрабатываете и поддерживаете систему

Продолжите с:

13. Контрольный список развёртывания

  • Docker-хост имеет стабильный LAN-адрес.
  • /app/data смонтирован в постоянное хранилище.
  • Часовой пояс соответствует объекту мониторинга.
  • Пароли по умолчанию изменены.
  • Порты 5050 и 1883 не открыты в Интернет без необходимости.
  • SN счётчика и назначение каналов верны.
  • Локальная загрузка проверена с реальными измерениями.
  • Облачная пересылка включена только при необходимости.
  • Процедуры резервного копирования и обновления протестированы.
  • Том регистратора смонтирован, если требуется экспорт CSV.

Последнее обновление: 17 июля 2026 г.

Наверх