죄송합니다. 브라우저가 JavaScript를 지원하지 않습니다!
로그인

Docker를 사용한 자체 호스팅 에너지 모니터링

Docker를 사용한 자체 호스팅 에너지 모니터링

자체 호스팅 에너지 모니터링 시스템은 모니터링 서버와 전기 데이터를 사용자가 직접 제어할 수 있도록 합니다. 모든 측정값을 퍼블릭 클라우드로 보내는 대신, 에너지 미터가 로컬 서버, NAS, Raspberry Pi 또는 호환 가능한 라우터에서 실행되는 Docker 컨테이너로 데이터를 업로드합니다.

IAMMETER-Docker는 전기 소비 및 태양광 PV 시스템을 위한 즉시 실행 가능한 로컬 에너지 모니터링 서버를 제공합니다. 측정값을 수집하고, 실시간 및 과거 데이터를 표시하며, API를 제공하고, 선택적으로 오프라인 데이터로거로 작동할 수 있습니다.

IAMMETER 에너지 미터
        │
        │ Wi-Fi / 로컬 네트워크
        ▼
IAMMETER-Docker
        │
        ├── 로컬 웹 대시보드
        ├── 과거 에너지 데이터
        ├── REST API
        ├── MQTT
        ├── CSV 데이터로거
        └── 선택적 포워딩

IAMMETER-Docker는 실용적인 자체 호스팅 옵션이지만, IAMMETER-Cloud의 모든 기능과 보고서를 완전히 재현하지는 않습니다. 아직 아키텍처를 선택 중이라면 자체 호스팅 에너지 모니터링 솔루션 페이지에서 옵션을 비교해보세요.

🎬 IAMMETER-Docker 비디오 튜토리얼 보기

1. 자체 호스팅 에너지 모니터링 시스템은 언제 사용해야 하나요?

IAMMETER-Docker는 다음 상황에 적합합니다:

  • 사용자가 관리하는 서버에 에너지 데이터를 보관하려는 경우
  • 인터넷 접속 없이 LAN에서 전기 사용량을 모니터링하려는 경우
  • 로컬 태양광 모니터링 대시보드를 배포하려는 경우
  • 오프라인 데이터로거를 사용하여 원격 사이트에서 데이터를 수집하려는 경우
  • 로컬 REST API 또는 MQTT를 통해 측정값에 접근하려는 경우
  • 선택한 데이터를 다른 플랫폼으로 전달하려는 경우
  • 저장된 에너지 데이터를 기반으로 개인 대시보드 또는 통합을 구축하려는 경우

일반적인 설치 사례:

  • 가정용 전기 및 태양광 PV 모니터링
  • 작업장, 사무실 및 소규모 상업 시설
  • 원격 태양광 시스템 및 장비실
  • 개발 및 테스트 환경
  • 로컬 데이터 경로가 필요한 프로젝트

Home Assistant, Node-RED, PLC 또는 사용자 정의 소프트웨어에 직접 미터 측정값만 필요한 경우, 전체 서버를 배포할 필요가 없을 수 있습니다. 선택 전에 로컬 및 자체 호스팅 통합 옵션을 참조하세요.

2. 필요한 사항

배포 전에 다음을 준비하세요:

  • Docker를 실행할 수 있는 장치 (Linux 서버, NAS, Raspberry Pi 또는 호환 라우터)
  • 애플리케이션 데이터베이스를 위한 영구 스토리지
  • 웹 애플리케이션 및 API용 TCP 포트 5050 사용 가능
  • 내장 MQTT 서비스를 사용할 경우 TCP 포트 1883 사용 가능
  • Docker 호스트의 고정 IP 주소 또는 DHCP 예약
  • 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 서버로 직접 업로드할 수 있습니다.

미터의 WebUI에서 타사 HTTP 업로드를 구성하고 Docker 호스트 주소를 사용합니다:

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

Docker 호스트 IP는 미터의 Wi-Fi 네트워크에서 연결 가능해야 합니다. IAMMETER-Docker에 추가된 미터와 동일한 SN을 사용하세요.

IAMMETER-Docker에 HTTP 업로드 구성

미터 구성을 저장한 후:

  1. 첫 번째 업로드를 기다립니다.
  2. IAMMETER-Docker에서 미터가 온라인으로 표시되는지 확인합니다.
  3. 전압, 전력 및 에너지 값을 미터의 로컬 데이터와 비교합니다.
  4. 태양광 또는 송전/수전 계산을 신뢰하기 전에 방향과 채널 할당을 확인합니다.

IAMMETER-Cloud를 동시에 사용하기

IAMMETER-Docker는 선택적으로 미터 데이터를 IAMMETER-Cloud로 전달할 수 있습니다. 로컬 스토리지와 IAMMETER-Cloud 서비스를 모두 원할 때만 포워딩을 활성화하세요.

로컬 데이터를 IAMMETER-Cloud로 전달

오프라인 또는 클라우드 독립 설치의 경우 클라우드 포워딩을 비활성화된 상태로 두세요.

6. 다른 장치 또는 애플리케이션에서 데이터 업로드

IAMMETER-Docker는 REST API를 통해 지원되는 에너지 데이터를 수신할 수도 있습니다. 이는 IAMMETER 미터를 사용하지 않는 시뮬레이터, 게이트웨이 또는 고객 애플리케이션에 유용합니다.

사용자 정의 SN으로 미터를 생성한 후, 각 API 요청에서 동일한 SN을 사용하세요.

대화형 API 문서는 로컬 서버에서 확인할 수 있습니다:

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

IAMMETER-Docker API 문서

IAMMETER-Docker API 요청 테스트

비운영 미터에서 먼저 API를 테스트하세요. SN, 상 수, 필드 순서 및 단위를 일관되게 유지하여 과거 데이터를 계속 사용할 수 있도록 하세요.

7. 오프라인 에너지 데이터로거 실행

IAMMETER-Docker V2.4는 데이터로거 디렉토리가 마운트된 경우 CSV로 데이터를 저장할 수 있습니다. 이는 신뢰할 수 있는 인터넷 연결이 없는 원격 태양광 사이트, 공장 또는 장비실에 유용합니다.

데이터로거 스토리지가 있는 Docker run

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은 IAMMETER-Docker MQTT 서비스에서 사용됩니다. 미터 또는 다른 애플리케이션이 지원되는 측정 데이터를 IAMMETER-Docker에 게시할 수 있으며, MQTT 클라이언트는 실시간 값을 구독할 수 있습니다.

IAMMETER-Docker는 다음과 같은 기능도 지원합니다:

  • 더 큰 데이터셋을 위한 기본 로컬 데이터베이스 대신 MySQL
  • MQTT 게시 및 구독
  • PVOutput 포워딩
  • 호환되는 Tasmota 에너지 데이터
  • 실시간 알람 및 1초 데이터로거 시나리오

이러한 기능은 기본 배포 경로에서 의도적으로 제외되어 있습니다. 먼저 핵심 컨테이너를 구성하고 테스트한 후, 고급 IAMMETER-Docker 가이드를 계속 진행하세요.

9. 에너지 데이터 백업

/app/data 볼륨에는 영구 애플리케이션 데이터가 포함됩니다. 해당 호스트 디렉토리를 정기적으로 백업하세요.

안전한 기본 절차:

  1. 컨테이너에 대한 쓰기를 중지하거나 일시 중지합니다.
  2. 마운트된 전체 data 디렉토리를 백업 스토리지에 복사합니다.
  3. CSV 로깅이 활성화된 경우 datalogger 디렉토리도 포함합니다.
  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이 이미 사용 중인지 확인합니다.
  • 컨테이너 로그를 검토합니다.
  • 방화벽이 로컬 네트워크의 접근을 허용하는지 확인합니다.

미터가 온라인으로 표시되지 않음

  • 미터가 Docker 호스트 IP에 연결할 수 있는지 확인합니다.
  • 업로드 URL과 포트를 확인합니다.
  • IAMMETER-Docker의 SN이 미터 SN과 일치하는지 확인합니다.
  • 미터에서 서버 주소로 localhost를 사용하지 마세요. 이는 Docker 호스트가 아닌 미터 자체를 가리킵니다.
  • 클라이언트 격리 또는 게스트 Wi-Fi 네트워크가 LAN 트래픽을 차단하지 않는지 확인합니다.

태양광 데이터가 올바르지 않음

  • CT 방향과 배선을 확인합니다.
  • 어떤 채널이 Grid에 할당되고 어떤 채널이 Inverter에 할당되었는지 확인합니다.
  • 송전 및 수전 중 유효 전력의 부호를 확인합니다.
  • 일일 에너지 총합을 비교하기 전에 시간대를 확인합니다.

컨테이너 재생성 후 데이터 사라짐

  • /app/data가 영구 호스트 디렉토리에 마운트되었는지 확인합니다.
  • 디렉토리 권한을 확인합니다.
  • 원본 볼륨을 사용할 수 없는 경우 최신 확인된 백업을 복원합니다.

12. IAMMETER-Docker, IAMMETER-Cloud 또는 사용자 정의 시스템?

옵션 최적 대상 데이터 위치 설정 노력 주요 절충점
IAMMETER-Docker 즉시 사용 가능한 로컬 모니터링 서버 사용자 Docker 호스트 낮음~중간 관리형 클라우드 기능 적음
IAMMETER-Cloud 즉시 사용 가능한 모니터링, 보고서 및 원격 접속 IAMMETER-Cloud 낮음 호스팅된 클라우드 서비스 사용
Home Assistant / Node-RED 스마트홈 엔터티 및 사용자 정의 자동화 사용자 플랫폼 중간 대시보드 및 워크플로 직접 설계
사용자 정의 서버 제품, EMS 또는 전문 데이터 파이프라인 사용자 인프라 높음 시스템 직접 개발 및 유지보수

계속 진행:

13. 배포 체크리스트

  • Docker 호스트에 안정적인 LAN 주소가 있습니다.
  • /app/data가 영구 스토리지에 마운트되었습니다.
  • 시간대가 모니터링 사이트와 일치합니다.
  • 기본 비밀번호가 변경되었습니다.
  • 포트 50501883이 인터넷에 불필요하게 노출되지 않았습니다.
  • 미터 SN 및 채널 할당이 올바릅니다.
  • 로컬 업로드가 실시간 측정값으로 확인되었습니다.
  • 클라우드 포워딩은 필요한 경우에만 활성화되었습니다.
  • 백업 및 업그레이드 절차가 테스트되었습니다.
  • CSV 내보내기가 필요한 경우 데이터로거 볼륨이 마운트되었습니다.

마지막 업데이트: 2026년 7월 17일.

맨 위