마침 얼마전에 태양광 모니터를 만들었는데, 아래에 모니터링 글이 있어 반갑습니다.
평소에 SW개발 하시던 분을 위한 참고자료 모음이라고 봐 주세요 ㅜㅜ
일종의 개발 후기라서 디테일한 과정은 생략 된 게 많을 수 밖에 없습니다...
잘못된 형식의 이미지 링크입니다.
#1. 태양광 발전 환경
- 옥상에 4kW 패널
- 인버터는 동양E&P ESP3K5 2개로 구성.
#2. 네트워크 환경
- 옥상과 연결된 다락방에 유선랜 이용 가능.
#3. 모니터링 환경 구축
인버터 --(RS485)-- Raspberry PI 로 구축 했습니다.
Raspberry Pi에서는
- RS485 통신 & 데이터 파싱
- Graphite 로 시계열데이터 로깅
- Grafana 로 데이터 디스플레이
를 했습니다.
#4. 준비물
동양E&P 의 경우 얼마전에 홈페이지 개편을 하면서 자료들이 사라진 것이 많습니다.
홈페이지를 통해서 자료를 구하기는 힘들고 담당자와 연락해서 받았습니다.
- 인버터 통신 케이블 (RS485) : 개당 5천원.
온라인에서 구매 할 수 없으며, 동양E&P에서 직접 판매하지 않습니다. 외부 업체를 통해 구매 할 수 있습니다.
취급점은 엔플러스코리아 입니다. 동양E&P 에 문의해서 엔플러스코리아 사장님의 연락처를 받아 유선으로 구매 하였습니다.
- RS485 통신 장비 : 개당 3천원(?)
알리익스프레스에서 구매하였습니다.
RS485 모뎀으로 찾으면 많이 나옵니다.
RS485 는 Bus 환경이라 D+ 는 D+ 끼리, D- 는 D- 끼리 연결해야 합니다.
(peer-to-peer인 줄 알고 삽질 했습니다.)
- 라즈베리파이 : 저는 집에 있던 3B 를 이용했습니다.
- 통신 케이블 : 저는 집에 있던 UTP를 이용 했습니다.
#5. SW 구축.
#5-1. 모니터링 데이터 수집
- 동양E&P ESP3k5 와 통신을 하는 코드는 어느 분이 Github에 올려 두신 게 있더라구요.
코드를 보니 작성하다 그만 둔 코드 같습니다만 필요한 부분은 다 구현되어 있었습니다.
Fault Code를 제외한 나머지는 통신 프로토콜에 맞게 잘 구축되어 있습니다.
일단 동작하는 코드를 만들기 위해, 해당 코드를 좀 더럽게 편집해서 graphite 에 로깅 하도록 만들었습니다.
https://github.com/ayokyun/skmedia/blob/master/devices/inverters/esp3k5.py
- 해당 스크립트는 supervisord 를 이용해서 부팅 시 자동 시작 하도록 했습니다.
- 이 때 주의해야 할 점은, 통신을 하기 위해서 인버터의 ID가 필요합니다. 인버터의 ID는 기기 시리얼번호의 뒤 2자리 이지만, 메인보드를 교체 한 이력이 있다면 초기값인 1로 설정 되어 있을 수 있습니다.
동양E&P 에 요청하면 인버터ID 변경 SW를 받을 수 있습니다. RS485를 이용해서 변경 가능하다고 합니다.
- 햇빛이 약하면 인버터의 전원이 꺼집니다. 계통 전력을 이용해 켜져 있는게 아닙니다.. 그 때는 인버터에서 응답이 없습니다. 정상이니 당황하지 마세요.
(제가 뭘 잘못 한 줄 알고 당황 했었습니다)
#5-2. graphite 설치
docker를 이용했습니다. graphite는 별 설정 할 게 없네요.
https://graphite.readthedocs.io/en/latest/install.html
#5-3. grafana 설치
docker를 이용했습니다. 제가 docker에 익숙치가 않아서 매뉴얼을 단순 copy&paste만 하니 안되네요.
- persistent storage 생성
- 자동 재시작 하도록 설정
이 필요합니다.
persistent storage 만들어서 granafa 실행하기 : https://grafana.com/docs/grafana/latest/installation/configure-docker/#run-grafana-container-with-persistent-storage-recommended
자동 재시작 : https://docs.docker.com/engine/reference/commandline/update/#update-a-containers-restart-policy
한 번에 할 수 있겠지만 제가 docker에 미숙해서...
#6. Dashboard 설정
#6-1. Grafana - Graphite 간 Data source 설정
https://grafana.com/docs/grafana/latest/features/datasources/add-a-data-source/
#6-2. Dashboard 설정
저의 경우는 인버터가 2개 입니다.
Grafana dashboard의 variable기능을 이용하여 각 인버터를 개별적으로, 모아서 볼 수 있도록 했습니다.
graphite에서 metric의 네임에 인버터 id를 포함하고, 해당 부분을 grafana의 variable을 이용 했습니다.
https://grafana.com/docs/grafana/latest/variables/templates-and-variables/
패널에서 목적에 맞게 두 인버터의 값을 따로 보여주거나, 두 인버터의 값을 겹쳐서 보여 주거나, 두 인버터의 값을 합산하여 보여주는 등을 설정 할 수 있었습니다.
#7. 대시보드 꾸미기
대시보드는 적당히 본인의 취향에 맞게 꾸며주면 됩니다...
동양E&P 에서 제작한 윈도우용 소프트웨어가 있긴 합니다.
제한적이지만 로깅도 지원하는 것으로 알고 있습니다.
https://blog.naver.com/PostView.nhn?blogId=1-energy&logNo=221184216685&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search
아! grafana 는 웹으로 서비스를 해 줘서...
집에 남는 패드 (LG불법패드) 에다 띄워 놨습니다.ㅎㅎ
1도 못알아 먹는 똥머리 ㅜㅜ
저랑 환경도 비슷한거 같네요. 저는 동양인버터 2개에 6KW 입니다.
Raspberry Pi에서 데이터 통신으로 하면 할수는 있겠구란 막연한 생각은 있었지만 이걸 이렇게 하시다니 대단하십니다
저는 따라할 엄두도 못내겠네요. ㅠㅠ
따라할수 있게 자세한 설명이라도. ㅠㅠ
저도요.. 캠핑시 사용할 게임용 모니터인가 했네요.. ㅎㅎ
어엌
제목을 바꾸곘습니다.
(다 이해했어 짤.)
혹시 초보자도 따라할 수 있는, 보다 상세하게 나온 참고 자료는 없을까요?
집에 3KW용이 설치되어 있는데.. 실제 어느정도 전기 생산하고 있는지 알수가 없네요...ㅜㅜ
모니터링..
현 재직중인 회사에서 이런 모니터링 프로그램 딱 필요하긴 한데.. (태양광 관련 업계..)
이렇게 직접 만들어보면 더 재미있겠어요!
프로토콜은 제조사 자체 프로토콜 입니다.
프로토콜은 단순해서 1개의 요청 메시지, 1개의 응답 메시지가 있었습니다.