사실 대단한 건 없지만, "이렇게 하는 경우도 있구나"라는 소개 정도의 의미로 간단하게 정리해 보았습니다.
[목적]
- 멀리 떨어져 있어도 부모님 안부를 확인하고 싶었습니다. 물론, 영상통화가 최고이지만 말이지요.
- 몇몇 장비는 원격으로 모니터링하고 제어를 할 필요가 있었습니다.
- 취미생활로 구축했습니다...
그럼 바로 화면을 보면서 설명을 붙여 보겠습니다. 이 화면들은 부모님댁 TV옆에 7인치 라즈베리파이 모니터로도 확인이 가능합니다. 7인치 모니터는 별도의 무빙 센서로 사람이 있을 때에만 화면이 켜집니다.
홈어시스턴트는 Odroid XU4 보드에 설치했습니다.
* 기본화면
[구성품]
- 샤오미 블루투스 온습도계, 아카라 온습도계, 라즈베리파이로 만든 Volumio, Wyze WiFi카메라, 아카라 스위치, IoT 플러그, ESP8266보드이용 DIY로 만든 미세먼지와 이산화탄소 센서, Nest 온도조절기
[주요 자동화 혹은 작업 내용]
- 외부 미세먼지 정보는 공공데이터 포털에서 가져옵니다. 이 글을 보고 따라 했습니다.
- 주방의 습도가 75%(여름엔 85%)를 넘으면 주방팬을 켭니다. 끄는 것은 인덕션이 콘센트에 꼽힌 것이 아니라서 전력량 측정을 통해 요리가 끝났음을 체크할 수도 없어서 수동으로 하고 있습니다. 인덕션 위에 설치한 아카라 스위치를 누르면 그림에 보이지 않는 환풍기 IoT 플러그가 토글이 됩니다. 좀 더 복잡한 방법으로 자동화를 해보고 싶은 아이디어는 있지만 아직은 이 정도입니다. 아참,,, 참고로 샤오미 Mi Home의 자동화 기능도 똑같이 설정해 놓았는데, 홈어시스턴트가 다운되어도 계속 기능이 작동됩니다. 즉, 이 기능 때문에 홈어시스턴트와 같이 무거운 시스템을 구축할 필요는 없겠습니다.
- 오전 8시가 되면 자동으로 Volumio의 Classic FM을 틉니다. 만약 TV를 켜면 라디오는 자동으로 멈춥니다.(라디오 껐다켜기는 가끔 화이트노이즈가 나올 수 있어서 볼류미오가 설치된 라즈베리파이를 원격 리부팅시키는 기능입니다) 그리고, 모두 외출하면 라디오를 끕니다(가족위치추적 앱인 LIFE360를 이용).
- "초음파 발생(보리 짖을 때)"는 알리에서 구입한 애완동물 초음파 훈련기를 개조해서 만든 것으로 누르면 원격 릴레이로 작동시키는 기능을 합니다. 마당에 있는 강아지가 새벽에 너무 심하게 짖어서 목이 상할 우려가 있을 때 아주 가끔 사용합니다. 아래 구성품을 케이스에 넣어서 실외기 위에 두었습니다.
- 게이지로 표시된 실내 미세먼지와 이산화탄소는 DIY로 ESP8266보드를 이용해서 만든 것입니다. 구성품은 MH-Z19 이산화탄소 측정센서, DHT22온도계(온도가 심하게 부정확합니다), SDS021 미세먼지센서, ESP8266보드입니다. 좌측의 3색 LED는 이산화탄소 값에 따라 LED 색상을 바꿔주는 것인데, 실제 제어는 Home Assistant에서 '장면(scene)'이라는 기능을 이용하여 이루어집니다. ESPHome을 이용하므로 코드는 한 줄도 작성하지 않고 .yaml파일에서 연결된 port 번호만 잘 맞춰주면 됩니다.
- 네스트는 온도조절기로 이전 글을 참고해 주시면 되겠습니다.
* 추가 화면
[구성품]
- LG 스마트 TV, ESP기반 카메라, 공공데이터포털 대기오염정보, 네스트 온도조절기, IoT 플러그 2개
[주요 자동화 혹은 작업 내용]
- LG 스마트 TV는 TVING, NETFLIX, WATCHA 등 어떤 것을 보고 있는 지 알 수 있습니다.
- ESP 기반 카메라는 창고에서 크고 있는 상추와 쑥갓을 모니터링합니다.
- 외부 기온과 습도는 Home Assistant에서 기본으로 제공하는 노르웨이 기상청의 기상예보 값을 보여줍니다. 온습도를 표시하려면 configuration.yaml에 다음 내용을 추가해야 된다고 합니다.(forecast_jib은 각자 설치 시 달라지는 값) -> 이러한 사용법들이 은근히 괴롭히는 부분이고 공돌이의 IoT라 불리는 이유인 듯합니다.
- template: - sensor: state: "{{ state_attr('weather.forecast_jib','temperature') }}" state_class: measurement state: "{{ state_attr('weather.forecast_jib ','humidity') }}"
- unit_of_measurement: "%"
- - name: Outdoor humidity
- unit_of_measurement: "°C"
- - name: Outdoor temperature
- 네스트에서 수신되는 난방 관련 정보입니다.
- 7인치 라즈베리파이를 껐다가 켤 수 있습니다.
- binary sensor로 ping 8.8.8.8을 30초마다 수행하고 2분30초간 끊어지면 광랜 중계기의 전원을 껐다 켜기 위해 추가했습니다. 요즈음 가끔 중계기가 먹통이 일주일에 한 두번 생기는데, 껐다 켜기가 번거롭다보니 추가해 보았습니다.
* 바람예보
이 화면은 별 거 없고, windy 사이트에서 바람 예보를 보기 위한 것입니다. 농사를 짓는 경우 그리고 단독주택의 경우 바람이 얼마나 세게 부느냐에 따라 대처를 할 필요가 있으므로 넣어 보았습니다. 참고로 강원 영동지방은 태풍이 안왔는데 30m/s로 부는 경우가 다른 지방보다 더 있는 것 같아서 옥상에 있는 물건들, 창고의 문 등 단속을 잘 해야 합니다.
이상 화면들을 소개해 보았습니다.
그 외 해보고 싶은데 못한 것과 제가 사는 집에 구현되어 있는 것은 다음과 같습니다.
- 화장실 자동 점등 및 팬 작동/멈춤 - 공중화장실의 입출 카운트 방식 센서는 비싸다는 소문이,,, 그리고 모션 센서로만 구현하려면 예외(욕조에서 움직이지 않는다든지)가 좀 생길 수 있어서 생각보다 복잡한 듯합니다. 저는 그냥 모션센서가 있을 때 화장실 팬 작동하는 정도만 사용 중입니다.
- 실내 이산화탄소 값이 높으면 방에 인접한 화장실 팬을 작동 - 요즘은 아파트에 열교환공조장치가 있지만, 없는 경우 필요하겠습니다. 문 닫고 있으면 금방 1000ppm이 넘어가면서 원인 모를 두통을 경험할 수도 있으므로, 환기가 중요하겠습니다.
- 알리발 애완동물 자동 급식기(다가오면 뚜껑 열리기, 자세한 내용은 제 블로그 글)를 DIY로 개조했는데 아두이노로 작업해서 아직 Home Assistant와 연동이 안됩니다. 5일 후 배터리가 방전될 때 알림 기능이 필요합니다. 혹은 특정 시간대에만 열리도록 하는 기능도요...
끝으로 알고 나면 사실 어려운 건 없지만 그래도 누구나 쉽게 할 수 있는 DIY나 홈어시스턴트가 아니기는 합니다. 잘 찾아보면 다른 분들이 이미 해놓았기 때문에 따라하기를 하면 되긴 되는데, 시행착오도 있으므로 시간을 생각보다 더 많이 투자해야 하는 문제가 있습니다.
- 참고로, ESP보드를 이용한 작업들은 ESPHome이라는 기술을 통하여 별다른 코딩 기술 없이도 원하는 기능을 구현할 수 있습니다. 예를 들어서 원격으로 릴레이를 조작하는 초음파 훈련기의 경우 코드는 한 줄도 짤 필요가 없이 포트만 맞춰 주면 되는 식입니다.
읽어주셔서 감사합니다~
2024년7월 최근 화면에 관하여는 아래 글을 참고하실 수 있습니다.
'홈어시스턴트 IoT' 카테고리의 다른 글
바닥 근처 온도계를 기준으로 네스트 온도조절기로 난방 조절 (2) | 2023.02.06 |
---|---|
매시간마다 날씨를 음성으로 안내 받기 - 홈어시스턴트와 구글 스피커 이용 (0) | 2022.11.30 |
주방 환풍기를 8x8 적외선 열화상 센서를 기반으로 작동 제어하기 (2) | 2022.11.20 |
IoT 스위치로 홈어시스턴트를 통해 Volumio 재생/멈춤/종료 조작하기 (0) | 2022.10.22 |
구글 네스트(Nest) 온도조절기(Thermostat) 열흘 사용기 (1) | 2022.10.12 |