Claude Code로 실시간 태양광 및 전력망 에너지 모니터링 시스템 구축하기
Built a real-time solar + grid energy monitor using Claude Code — tapped my Enphase Envoy and Rainforest EAGLE-200, built a caching API, and it lives in my Mac menu bar
핵심 요약
Claude Code를 활용해 Enphase와 EAGLE-200 데이터를 수집하고 Mac 메뉴바에 실시간으로 표시하는 모니터링 시스템을 구축함.
- 기술 스택 — PHP, SQLite, Apache, SwiftBar를 조합해 실시간 에너지 데이터를 처리함.
- Claude Code 활용 — Enphase JWT 인증 흐름 설계와 SQLite 스키마 구축, SwiftBar 플러그인 개발에 도움을 받음.
- 문제 해결 — 느린 로컬 API를 직접 호출하는 대신 5분마다 데이터를 캐싱하여 응답 속도를 개선함.
- 실시간 모니터링 — 태양광 발전량, 전력망 사용량, 가정 소비량을 Mac 메뉴바에서 즉시 확인 가능함.
최근 홈랩 구축에 빠져 있는데, 이게 제가 만든 것 중 가장 마음에 드는 결과물입니다. 전체 스택은 다음과 같습니다.
하드웨어
- 22개 패널 Enphase 태양광 시스템(Envoy-S 게이트웨이 포함)
- Rainforest EAGLE-200 스마트 미터 브리지(PG&E 미터를 실시간으로 읽음)
- 코로케이션된 Debian 서버에 자체 호스팅
문제점
두 장치 모두 로컬 API를 제공하지만, 속도가 느리고 까다로우며 지속적인 폴링을 위해 설계되지 않았습니다. 웹 페이지에서 30초마다 직접 호출하면 응답이 느려지고 장치에 과부하를 줄 수 있습니다.
해결책
크론잡(cronjob)이 5분마다 두 API를 호출하여 결과를 서버의 SQLite 데이터베이스에 저장합니다. 웹 앱은 DB에서 데이터를 읽어오므로 응답 속도가 밀리초 단위로 매우 빠릅니다. Enphase 토큰 인증이 가장 까다로웠는데, Enlighten 클라우드를 통한 2단계 JWT 흐름이 핵심이었습니다.
표시 내용
- 실시간 태양광 발전량(개별 마이크로인버터 데이터를 포함한 패널별 분석)
- 실시간 전력망 수입/수출량
- 가정 소비량
- 태양광 상쇄 비율
- 태양광 및 전력망에 대한 24시간 막대 차트
- 누적 통계(지금까지 12.8 MWh를 생산하고 200.5 MWh를 소비함 😬)
SwiftBar 플러그인
이 부분이 가장 자랑스럽습니다. 서버에 현재 수치를 반환하는 가벼운 JSON API 엔드포인트를 만들었습니다. SwiftBar 플러그인이 30초마다 이를 폴링하여 Mac 메뉴바에 태양광 및 전력망 사용량을 바로 표시합니다. 한눈에 집의 에너지 상태를 정확히 파악할 수 있습니다.
Claude Code의 역할
제가 원하는 바를 설명하자 Claude Code가 Enphase JWT 인증 흐름을 탐색하고, SQLite 스키마를 설계하며, 캐싱 레이어를 작성하고, SwiftBar 플러그인을 빌드하도록 도와주었습니다. 전체 과정은 몇 번의 세션 만에 완성되었습니다.
스택
PHP · SQLite · Apache · SwiftBar · bash · Enphase API · Rainforest EAGLE-200 XML API


