제목은 거창한데요, 별다른 것은 아니지만 나름 시행착오가 있어서 공유해 봅니다. 제가 과거에 비록 Embedded Firmware를 하긴 했지만 전자회로나 태양광 계통 연계 등은 잘 모르므로 틀린 내용이 있을 수도 있습니다. 이보다 좋은 방법이 있겠지만 재미삼아서 해 보았습니다. 다음에 신규 설치나 교체하게 되면 IoT 통신 지원이 되는 장비로 해야겠습니다.
이전 태양광 관련 글
-
구형 태양광인버터 RS-485 무선 연결 및 홈어시스턴트 연동 - https://www.clien.net/service/board/lecture/18782221
-
3kW 태양광 사용기 - https://www.clien.net/service/board/use/17819927
이루고자 하는 내용
- 옥상에 설치한 태양광, 불행히도 구형인버터는 IoT 통신 기능이 없고 RS-485 단자만 있습니다.
- 인버터가 고장이 났을 때 최대한 빨리 알고 싶습니다.
- 한전 파워플래너의 값으로부터 환산한 값이 아닌 실제 태양광 발전량을 알고 싶습니다(발전량 중 잉여분만 한전에 송전).
- RS-485를 WiFi로 보내주는 EW11의 전원 공급을 위해 인버터를 건드리고 싶지 않습니다.
- 그래서 사용한 CCTV용 별도 태양광패널(18650 2,000mA 배터리 3개 내장)은 EW11의 소비전력을 하루 이상 감당이 안됩니다.
- 계산해 보면 EW11이 약 200mA@5V를 소비 시에 24시간이면 4,800mAh@5V인 셈인데 총 6,000mAh@3.7V의 용량으로는 하루도 버티지 못하는 셈
- ESP8266 릴레이를 써서 3시간에 5분씩만 작동시키면 이론적으로 일주일 이상 충전이 안되어도 작동할 것으로 계산됩니다.
- 모니터링 및 제어는 홈어시스턴트에서 합니다.
ESP8266 릴레이 작업 과정
ESP8266을 사용한 ESP-01 모듈과 릴레이가 결합된 제품은 쉽게 구할 수 있었습니다.
- 기본적으로는 릴레이로 EW11의 전원을 제어하면 됩니다.
- 그러나, EW11의 전기는 차단한다고 해도 ESP8266 릴레이 자체 소비 전류가 10~50mA가량 있어서 ESP8266은 Deep Sleep이 꼭 필요합니다.
ESPHome으로 쉽게 코드 작성 없이 YAML로 Deep Sleep은 구현이 가능한데, 실제로는 작동 되지 않았습니다.
- 검색해 보니까 ESP-01은 Deep Sleep이 안된다는 것이었습니다.
- 해결 방법은 아래 사진과 같이 RESET핀을 ESP8266EX 칩의 GPIO16번(사진에서 좌하단 끝쪽 핀)과 연결하면 deep sleep 진입 시킬 수 있다고 하며 역시 잘 작동 되었습니다(USB납땜기로 정교한 작업은 좀 어려워서 ESP-01 모듈 하나는 버렸습니다).
ESP-01과 릴레이
처음에는 릴레이 제어에 GPIO0를 사용해서 충돌하나 싶어서 GPIO2로 바꾸었는데 작업한 사진은 다음과 같습니다.
GPIO0 연결 패턴을 칼로 자르고 긁어낸 자리에 GPIO2를 연결
물론 위 작업은 필요 없을 것으로 생각합니다.
설치한 모습
RS-485를 유선으로 길게 연장하고, 18650 배터리 내장 소형 태양광 패널을 앞쪽에 장착한 모습입니다.
앞쪽에 고정하고 RS-485선은 길게 연장하여 설치
ESP8266 릴레이의 작동 실험을 위해서 매직양면테이프로 대충 부착했습니다.
EW11의 전원을 ESP8266 릴레이로 제어하도록 변경한 모습
아래 차트와 같이 약 18일가량 계속 모니터링이 되는 것을 보면 계획대로 되는 것 같습니다.
- 18일간 124kWh 발전이 있었고, 하루 평균 6.8kWh로 전체 평균하면 2~3시간 발전한 셈입니다.
- 실제로 흐린 날이 더 많았습니다.
- 기울기를 보면, 그나마 7일 정도만 맑은 날이었던 것 같습니다.
홈어시스턴트의 에너지 화면 활용 관련
아래는 홈어시스턴트의 에너지 섹션의 그래프입니다. 아래 그림의 표현 내용이 맞는 지 검증을 해 보기 위해, 한전의 파워 플래너에 기록된 정보와 비교해 봅니다.
태양광 에너지 = EW11로 수신한 인버터 값
아래는 한전 파워 플래너에서 받은 값으로 그린 그래프입니다.
- 더 아래에 있는 표의 값들을 합산해 보면 합계 190kWh를 사용하고 61kWh를 발전한 것으로 나타납니다.
- 그렇다면, 태양광 인버터에서 측정한 124kWh 발전 중에 한전으로 보내지 않은 63kWh(124kWh - 61kWh)는 내부에서 소비했다는 뜻이고 수전량 190kWh와 합하면 253kWh를 내부적으로 소비한 것이라고 볼 수 있습니다.
- 그렇게 계산해 보니까 위 홈어시스턴트의 에너지 다이어그램은 틀렸다고 봐야겠습니다.
- 아마도 에너지 항목을 제대로 표시하게 하려면, 송전량도 측정해서 넣어주어야 하는 것으로 보입니다. 아래 "홈어시스턴트의 에너지 그래프가 틀린 이유" 부분에서 설명해 봅니다.
한전 계량기에서 측정된 수전량과 발전량 모니터링 결과
아래는 한전에 기록된 수전량과 송전량 표입니다.
|
일자
|
사용량(kWh)
|
발전량(kWh)
|
| 10월 12일 | 7.981 | 9.198 |
| 10월 13일 | 9.222 | 2.777 |
| 10월 14일 | 10.569 | 0.399 |
| 10월 15일 | 8.065 | 1.086 |
| 10월 16일 | 11.674 | 0.877 |
| 10월 17일 | 6.351 | 9.116 |
| 10월 18일 | 10.932 | 0.194 |
| 10월 19일 | 13.445 | - |
| 10월 20일 | 15.036 | 0.039 |
| 10월 21일 | 11.139 | 2.285 |
| 10월 22일 | 12.611 | - |
| 10월 23일 | 8.562 | 9.329 |
| 10월 24일 | 10.132 | 8.119 |
| 10월 25일 | 9.519 | 7.076 |
| 10월 26일 | 10.029 | 2.004 |
| 10월 27일 | 10.991 | 0.864 |
| 10월 28일 | 11.879 | - |
| 10월 29일 | 8.836 | 5.557 |
| 10월 30일 | 3.464 | 2.354 |
홈어시스턴트의 에너지 그래프가 틀린 이유
다시 한번 홈어시스턴트에서 에너지 구성 화면을 다시 살펴보니까, "그리드로 반환"도 측정해서 입력해 주어야하는 것 같습니다. 아래의 "그리드 소비량"에 연결된 센서는 실제로는 "한전에서 수전한 전력량 + 태양광에서 송전하지 않고 바로 사용한 전력량"을 측정하고 있기 때문입니다.
그러므로 에너지 다이어그램에서의 "집"에서 표시된 값 378.4kWh는 틀린 값으로 결론 내릴 수 있고, "그리드로 반환"의 값을 위해서 추가 센서를 설치해야 된다는 결론에 도달하게 됩니다.
에너지 구성 화면
혹은, 에너지 구성 화면에서 "그리드로 반환" 항목에 태양광 인버터의 발전량을 넣어도 될 듯합니다. 즉 태양광 발전 항목에 인버터 발전량을 넣는 것이 아니고, "그리드로 반환"에 지정하는 것입니다. 물론 이 경우에도 태양광 발전량을 얼마나 내부에서 소비하고 얼마나 송전했는지는 알 수 없지만, "수전량"은 크게 오차 없이 파악 가능할 것 같습니다.
홈어시스턴트 자동화 및 ESPHome YAML 코드
해가 진 다음에는 인버터도 전원이 꺼지기 때문에 주기적으로 깨어날 필요가 없습니다. 그래서 야간에는 켜지자마자 EW11을 끄는 자동화를 추가했습니다(Deep Sleep으로 진입시키지는 않았습니다).
릴레이가 켜지면 해가 뜨지 않았다면 곧바로 릴레이를 끕니다.
ESP-01을 위한 Deep Sleep 및 릴레이 코드는 다음과 같습니다. 이론적으로는 3시간마다 Deep Sleep이 되어야 하는데, 2시간 30분마다 켜지고 있습니다.
esphome: name: "esp8266-relay" friendly_name: "esp8266-relay" on_boot: priority: -100 then: - switch.turn_on: my_relay esp8266: board: esp01_1m # Enable logging logger: # Enable Home Assistant API api: encryption: key: "" ota: - platform: esphome password: "" # secrets.yaml wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Esp8266-Relay-Module" password: "" captive_portal: switch: - platform: gpio name: "Relay" id: my_relay pin: GPIO2 inverted: yes restore_mode: RESTORE_DEFAULT_ON deep_sleep: run_duration: 5min sleep_duration: 175min