⚡ Dad Complains About Electric Bill, So I Built Him an Energy Dashboard and Found the Panels Lied ⚡
아버지의 전기요금 대시보드를 만들었더니 태양광 패널 배치가 잘못돼 있었습니다
집의 전기요금과 태양광 발전량을 한눈에 보는 대시보드를 만들면서, 앱의 패널 배치도가 실제 지붕과 다르다는 사실을 발견했습니다. Enphase 게이트웨이와 Home Assistant 데이터를 모으고 로컬 Gemma 모델로 아버지에게 요금을 설명하는 구조와 구현 과정도 소개합니다.
- 주제
AI 요약
아버지가 전기요금이 많이 나왔다고 하자, 글쓴이는 자신만 원인이 아니라는 점을 확인하고 가족이 실제 사용량과 태양광 발전을 이해하도록 대시보드를 만들었습니다. 실시간 발전량만 보여주는 앱을 다시 꾸미는 데 그치지 않았습니다. 태양광 설비 상태, 전기요금, 집 안 기기별 사용량, 예상 발전량을 한데 모으고, 차트를 선호하지 않는 아버지를 위해 로컬 AI가 짧은 설명도 작성합니다.
데이터 수집과 대시보드
집 안 PC에서 Node.js 수집기가 60초마다 Enphase IQ Gateway의 로컬 API를 읽습니다. Home Assistant의 스마트 플러그 데이터도 가져오도록 구성했지만, 글을 쓸 당시에는 플러그를 아직 설치하지 않았습니다. 수집한 데이터는 Next.js 16 대시보드로 보내고 Upstash Redis에 저장합니다. 과거 발전 기록은 Enphase 클라우드 API에서 하루 약 세 번 가져옵니다. ComEd 전기요금은 Green Button 내보내기 자료를 사용하고, 미국 국립재생에너지연구소(NREL)의 PVWatts 데이터로 지붕의 예상 발전량을 계산해 월별 실적과 비교합니다.
대시보드는 고장 난 마이크로인버터, 주변 패널보다 발전량이 낮은 패널, 만료가 다가오는 토큰, 가정 사용량의 급격한 증가를 문제 목록으로 표시합니다. 글쓴이는 기존 설비에서 마이크로인버터 두 개가 이미 응답하지 않는다는 점을 알고 있었습니다. 대시보드가 추가로 네 개 패널의 발전량이 평소의 11~30%라고 표시하자, 연기나 먼지, 새 배설물 같은 원인을 의심했습니다.
지도와 실제 지붕이 달랐습니다
직접 지붕을 살펴본 결과 패널은 앱 지도처럼 가로 방향으로 놓이지 않았고, 실제 줄 배치도 지도와 달랐습니다. 지도에는 긴 줄 두 개와 짧은 줄 하나가 표시됐지만, 지붕에는 긴 줄, 짧은 줄, 긴 줄 순으로 설치돼 있었습니다. 2~3년 전 폭풍 피해로 지붕을 수리하면서 패널을 내렸다가 다시 설치했는데, 설치 후 시스템 지도를 갱신하지 않은 것으로 글쓴이는 판단했습니다. 나무 그늘이 실제로 닿는 패널도 앱이 표시한 저발전 패널과 일치하지 않았습니다.
패널 위치가 틀리면 수리 기사에게 잘못된 패널을 가리킬 수 있습니다. 기사가 엉뚱한 패널을 고치고 문제가 해결됐다고 해도, 실제 위치를 모르면 결과를 확인하기 어렵습니다. 글쓴이는 수리 업체에 연락하기 전에 패널별 실제 위치를 확인해야 한다고 설명합니다. 한편 ComEd가 주민 전기요금을 약 12% 인상했고, 집의 하루 전력 사용량도 지난해 44kWh에서 76kWh로 늘었습니다. 예시 브리핑에 나온 이번 달 요금은 270.48달러, 지난해 같은 시기 요금은 46.12달러입니다. 태양광은 사용 전력의 41%를 공급했습니다.
로컬 AI 브리핑과 오탐 수정
아버지는 차트 대신 태양광이 작동하는지, 요금이 왜 나왔는지, 조치할 일이 있는지 알고 싶어 했습니다. 글쓴이는 집 안 PC에서 Ollama와 Gemma 3 4B를 실행하고, 6시간마다 발전량과 예상치, 최신 요금과 전년도 비교, 문제 목록을 모델에 전달합니다. 모델은 가족에게 설명하듯 짧은 문장을 작성해 대시보드 상단에 표시합니다. 한 번 생성하는 데 약 20초가 걸립니다. 전기요금과 사용 정보가 외부 AI 서비스로 전송되지 않으며, 모델은 설정 한 줄로 바꿀 수 있다고 설명합니다.
구현 중에는 야간 오탐도 발견했습니다. 해가 진 뒤에는 패널 마이크로인버터가 작동하지 않아 게이트웨이가 모든 패널의 보고를 멈춥니다. 처음에는 대시보드가 23개 패널 중 0개가 작동하고 심각한 경고가 21개라고 표시했습니다. 이 상태를 AI가 읽으면 지붕 전체가 고장 났다고 설명할 수 있습니다. 글쓴이는 하루 종일 보고가 없을 때만 패널 고장으로 판단하도록 조건을 바꿨습니다.
프로젝트는 Next.js와 Vercel, Upstash Redis, Enphase API, Home Assistant, PVWatts, ComEd Green Button 자료를 엮습니다. 글쓴이는 Claude Code로 개발했고 Entire로 AI 작업 세션과 커밋을 연결해 추적한다고 덧붙입니다. 패널 배치 문제는 대시보드가 단순히 요금을 보여주는 데 그치지 않고, 데이터를 결합해 기존 앱에서 놓친 설비 정보를 확인하는 계기가 됐습니다.
dev.to 반응
- @ssapable — “아빠! 패널은 가로가 아니에요!”는 DEV 대시보드 글의 결말 중 최고입니다. 그래서 글을 50초짜리 손그림 만화로 만들었습니다. 컴퓨터 담당자에게 전기요금 청구서가 날아오는 장면, 문제 목록과 아빠를 위한 차트 없는 설명이 있는 패널별 화면, 발전량이 11~30%인 패널 네 개, 의자에 올라가 확인하는 장면, 지도에서는 옆으로 놓였지만 지붕에서는 세로로 놓인 패널까지 담았습니다. 홍보 문구도 가입 절차도 없는 페이지에 올렸고, 아무 조건 없이 사용하셔도 됩니다. 숫자나 세부 내용이 틀렸다면 어느 장면인지 알려주세요. 다시 그리겠습니다. 질문 하나 있습니다. 앱의 패널 배치를 수정한 뒤 발전량이 낮다고 나온 네 개 패널은 정상으로 확인됐나요, 아니면 실제로 약한 패널이 하나라도 있었나요?
원문: dev.to / 번역·요약: Trawling