본문 바로가기
IOT스마트홈 만들기 (Home Assistant)/tasmota 펌웨어

[HA] USB 미러볼 IR 자동화 방법 [구글 홈 연결, 미러볼 색 15초마다 변경]

by ProjectDH 2021. 3. 2.

본문에서는 중요 내용만 소개하고 마무리 해보겠습니다.

 

준비물: tasmota IR 펌이 올라간 IR 허브

[저는 tuya 하트 유니버셜 IR에 펌웨어를 올렸습니다.] => blog.projectdh.link/52

USB 미러볼 with 리모컨 제어

[이 글에서는 사운드판다에서 판매하는 미러볼의 리모컨 값을 기준으로 설명합니다. 설마 리모컨값이 동일 제품에서도 다르지는 않겠죠.]

HA서버가 설치된 서버 [라즈베리파이, 나스 등등 HA가 설치되어서 잘 작동하기만 하면 됩니다.]

 

우선 저는 오케이 구글 => 미러볼 켜, 미러볼 꺼를 하면 미러볼 제어를 할 수 있게 만들었습니다.

미러볼 켜라고 하면 미러볼 전원 신호 + 15초마다 색깔 변경해주는 input_boolean이 ON되고, 따라서 15초마다 색 변경됩니다.

미러볼 꺼라고 하면 미러볼 전원 신호 + 색 변경 input_boolean이 OFF됩니다.

 

미러볼 ON/OFF 신호는 공통이기 때문에 잘못 실행했을 때를 대비해서 미러볼 실행이라는 명령을 추가했습니다.

단순히 미러볼 ON/OFF 신호만 보냅니다.

 

shell_command에 미러볼 제어를 위한 curl을 넣어놓았습니다.

tasmota IR로 제어하는 거죠.

http://172.30.1.46/cs?cmnd=IRSend {"Protocol":"NEC","Bits":32,"Data":"0xFF02FD"}

원래 이렇게 보내는 건데, %22랑 %7B 등 특수 문자는 웹에서 %가 붙어서 처리가 됩니다.

 

input_boolean에 미러볼 전원을 표시하기 위해 추가했습니다.

미러볼 전원이 ON일 때만 15초마다 색 변경 신호를 쏴주기 위함입니다.

 

automation에는 세 개가 있습니다.

우선 제어를 mqtt로 할 수 있다는 장점이 있습니다.

(mirror/toggle은 전원 on/off 제어, mirror/init은 미러볼 처음 전원연결시 미러볼이 돌아가는 상태로 켜지는데, 이거를 호출함으로써 미러볼 전원과 전원 상태를 off로 만듭니다.)

그래서 제가 이번엔 mqtt를 웹에 접속함으로써 발행하는 php 프로그램도 하나 짰습니다.

topic의 파라미터에는 발행할 topic, mes의 파라미터에는 메세지를 적으면 됩니다.

그리고 ?>아래의 내용은 기본 웹 내용으로 추가한 것이니 무시하셔도 됩니다.

 

그래서 저 같은 경우에는 php 스크립트를 /var/www/ball에 mqtt.php로 저장해놓아서 

http://도메인주소/mqtt.php?topic=mirror/toggle&mes=""를 웹에서 호출하면 바로 미러볼 전원 제어가 됩니다.

[웹서버의 ,mqtt의 경우 반드시 로컬로만 사용할 수 있게 포트포워딩을 해제하시거나, 아파치 혹은 nginx 가상 호스트를 만들고, allow에 로컬로만 돌아가게 로컬 대역, deny all 을 해주시길 바랍니다.]

저는 nginx를쓰므로.. nginx에서 설정한 가상 호스트 설정 방법도 공유합니다.

 

외부도메인은 domain.kr 이런 식으로 www를 제외하고 작성합니다.

server_name에 localhost를 적고 listen의 포트를 바꾸는 것도 보안 대책입니다.

그리고 80을 포트포워딩하고 같은 와이파이에서 접속시에만 되고, 나머지 ip들은 deny 처리되어서 forbidden뜨면서 접근 제한이 됩니다. 

allow에는 자신의 공유기 게이트웨이 주소 (iptime은 192.168.0.1, netis는 192.168.1.1 등) 적절히 입력하세요.

 

그리고 scripts입니다.

먼저 구글 홈앱에서 테마 조정으로 제어할 용도로 미러볼 켜짐, 꺼짐을 만들었고

구글 홈에서 기기 추가를 다시해주면 테마들이 생기는데

이 테마실행을 미러볼 켜, 미러볼 꺼, 미러볼 실행의 루틴 실행으로 지정했습니다.

 

 

그리고 제가 원했던 기능이죠. 자동 색 변경 스크립트입니다.

 

 

보시다싶이 반복문입니다. 미러볼 전원인 input_boolean.m_state가 켜져있는 동안 반복합니다.

그리고 sequence에는 script.m_[숫자1~3의 랜덤]이 있는데요. 이 스크립트가 바로 색 변경에 관한 것입니다.

 

 

색상 변경되는 패턴이 같으면 지루할 거고, 그렇다고 15초 후에 변경되는 색을 랜덤으로 지정하면 지금의 색과 같을 때는 계속 동일한 색상이 출력될 수 있을 것 같아 세 개의 랜덤 색 변경 패턴을 만들어 놓았습니다. 이부분은 직접 변경 원하는 순서로 수정하면 됩니다.

딜레이도 변경할 수 있고, 이 역시 input_boolean.m_state가 켜진 동안만 돌아가고, 만약 꺼지면 wait_template에서 걸립니다. 2초동안 대기하고 on이 아니면 스크립트 종료입니다.

 

구글 홈에서 명령을 내려서 호출 하는 방법은

구글 홈의 기기 설정 => 구글 호환 가능에 들어가서

HA와 연동한 [test] 테스트 앱을 누릅니다.

 

그리고 계정 다시 연결을 누릅니다.

 

연결 성공을 했다면

루틴에 들어가서 작업 추가에서 스마트 홈 기기 조정 => 테마 조정에서  오늘 추가한 m_toggle 스크립트를 동작으로 지정해주시면 됩니다.

 

미러볼 전원이 켜진 동안에만 색 변경 신호를 호출하기 위해 연구를 많이 한 결과입니다.

youtu.be/YWXNwjDXJlA

이상으로 미러볼 전원 자동화 및 색 변경 자동화 소개였습니다.

설정 파일들은 모두 깃허브에 올렸습니다.

아래의 링크에서 다운로드 해서 자신의 환경과 맞게 수정해서 사용하세요. 

포스팅 마무리합니다. 감사합니다.

 

HA 설정 모음 txt파일: github.com/projectdhs/ha/raw/main/mirror_ball_controll_with_tasmota/HA_config.txt

웹에서 mqtt 발행 php 스크립트: github.com/projectdhs/ha/raw/main/mirror_ball_controll_with_tasmota/broadcast_mqtt_scripts.php

nginx 가상 호스트 설정 txt파일: github.com/projectdhs/ha/raw/main/mirror_ball_controll_with_tasmota/nginx_config.txt

 

마지막으로, 제 깃허브에서 모든 파일을 보실 수 있습니다.

github.com/projectdhs/ha/tree/main/mirror_ball_controll_with_tasmota

댓글