먹는게 남는거다!

Home Assistant + 무선 공유기(ASUS RT-AC68U)로 재실, 외출 표시하기

장난감

 

Home Assistant에서는 휴대폰 같이 우리가 항상 휴대하는 물건으로 재실, 외출 등을 판단해야 합니다.

아래 링크를 클릭하면 Home Assistant를 지원하는 여러 센서를 확인할 수 있는데 저는 ASUS RT-AC68U 무선 공유기를 사용하기 때문에 이 중에서 Asuswrt와 Bluetooth Tracker를 이용해서 해당 센서가 휴대폰을 인지하면 집에 있는 것으로 판단하도록 Home Assistant를 구축하였습니다.

 

Netgear, DD-WRT, LINKSYS, OpenWRT, Tomato, Xiaomi Router 등 다양한 공유기를 지원하기 때문에 본인이 사용하는 공유기를 선택하시면 됩니다.

 

https://www.home-assistant.io/integrations#presence-detection

 

Integrations

List of the built-in integrations of Home Assistant.

www.home-assistant.io

 

1. Asuswrt 설정

 

1) Asus 공유기 SSH 설정

먼저 Home Assistant가 ASUS 공유기에 접속하여 현재 공유기에 연결된 기기들의 정보를 가져올 수 있도록 공유기 설정 페이지에 들어가서 SSH를 허용해야 합니다.

참고: https://lightinglife.tistory.com/144

 

[ASUS 공유기 tvheadend 설치 #1] 아수스 공유기 SSH 외부 접속 활성화 및 JFFS 파티션 활성화

아수스 공유기에 내장된, 관리자 모드에서 지원하는 기능인 다운로드 마스터를 이용하여 토렌트를 다운받는 방법에 대해 알아봤습니다. 실제로 여기까지만 포스팅할려고 했는데, 다운로드 마스터가 조금 느리고,..

lightinglife.tistory.com

 

2) Asuswrt 설정 (https://www.home-assistant.io/integrations/asuswrt/)

Home Assistant 설정 파일인 configuration.yaml 에 아래 내용을 추가합니다.

asuswrt:
  host: 192.168.0.1    # 사용하시는 공유기 IP를 입력하세요.
  username: admin    # 사용하시는 공유기 접속 ID를 입력하세요.
  password: dfsg234    # 사용하시는 공유기 접속 비밀번호를 입력하세요.
  protocol: ssh
  port: 22 
  sensors: []

 

3) Device Tracker 설정 (https://www.home-assistant.io/integrations/device_tracker/)

Configuration.yaml 에 아래와 같이 Device Tracker를 설정합니다.

device_tracker:
  - platform: asuswrt
    host: 192.168.0.1    # 사용하시는 공유기 IP를 입력하세요.
    interval_seconds: 10
    consider_home: 120
    new_device_defaults:
      track_new_devices: false
      hide_if_away: false

 

위와 같이 설정 후 Home Assistant를 재시작하면 configuration.yaml 파일이 있는 폴더에 known_devices.yaml 라는 파일이 생깁니다.

이 파일은 Device Tracker가 인지한 기기들 목록으로 이 중에서 본인의 핸드폰 정보라고 생각되는 항목의 track을 false에서 true로 변경하면 됩니다.

galaxy_s10:
  hide_if_away: true
  icon:
  mac: 42:28:A8:70:BC:YC   # 기기마다 다릅니다.
  name: Galaxy-S10   # 휴대폰 기종마다 다릅니다.
  picture:
  track: true

 

2. Bluetooth 설정

 

Asuswrt 설정만으로는 부족한 부분이 있습니다.

Android의 절전 정책으로 간혹 Wifi가 꺼져서 외출로 변경되는 일이 발생하기 때문입니다.

이를 보완하기 위해서 Bluetooth로 이중 확인을 하는 것이 좋습니다.

 

1) Bluetooth 페어링(Pairing)

Bluetooth 설정을 하기에 앞서 휴대폰과 Home Assistant가 설치된 기기에 대해 Bluetooth 페어링을 해야 합니다.

이 부분은 Home Assistant가 설치된 기기마다 다르기 때문에 구글에서 찾아봐야 합니다.

 

2) Bluetooth Tracker 설정 (https://www.home-assistant.io/integrations/bluetooth_tracker/)

Bluetooth 설정은 간단합니다.  Asuswrt 설정 시 추가했던 device_tracker에 아래와 같이 bluetooth_tracker만 추가하면 됩니다.

device_tracker:
  - platform: asuswrt
    host: 192.168.0.1    # 사용하시는 공유기 IP를 입력하세요.
    interval_seconds: 10
    consider_home: 120
    new_device_defaults:
      track_new_devices: false
      hide_if_away: false
  - platform: bluetooth_tracker     

 

Home Assistant 를 재시작하면 아래와 같이 known_devices.yaml 파일에 휴대폰 bluetooth 정보가 추가됩니다. (Mac address에서 알 수 있듯이 Bluetooth인 경우 Mac address가 BT_ 으로 시작합니다.)

이 역시 track를 false에서 true로 변경해야 합니다.

galaxy_s10_2:
  hide_if_away: false
  icon:
  mac: BT_A8:2Y:BZ:D8:1F:0J    # 기기마다 다릅니다.
  name: Galaxy S10    # 휴대폰 기종마다 다릅니다.
  picture:
  track: true

 

마지막으로 Home Assistant를 한번 더 재시작하고 Home Assistant에 접속 후 설정 > 구성원 메뉴를 클릭합니다.

구성원 페이지에서 이름을 클릭 후 위와 같은 팝업이 뜨면 known_devices.yaml에서 찾아낸 휴대폰을 추적 대상 기기에 설정합니다. 

 

 

Home Assistant + Docker + Raspberry Pi 설치

장난감

Home Assistant 설치에 앞서 Docker가 설치되어 있지 않을 경우 Docker를 설치하셔야 합니다.

 

1. Home Assistant 설치

Home Assistant를 설치하는 여러 방법이 있지만 Docker를 이용할 경우 root 계정으로 작업하는 것이 편합니다.

su

 

아래의 명령어로 Home Assistant를 설치합니다.

/home/pi/homeassistant 는 Home Assistant 설정 폴더 경로로 원하시는 경로를 입력하시면 되고

Asia/Seoul 는 Time Zone입니다. (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)

이 역시 원하시는 시간대로 정하시면 됩니다.

docker run --init -d --name="home-assistant" -e "TZ=Asia/Seoul" -v /home/pi/homeassistant:/config --net=host homeassistant/raspberrypi3-homeassistant:stable

 

참고: https://www.home-assistant.io/docs/installation/docker/

 

Installation on Docker

Instructions to install Home Assistant on a Docker.

www.home-assistant.io

 

2. HTTPS 통신을 위한 SSL 인증서 설치

Let's Encrypt 설치를 다룬 글이 많이 있지만 아래 블로그 포스트를 따라하는 것이 가장 확실합니다.

천천히 따라하면 30분도 걸리지 않을 정도로 간단합니다.

 

참고: https://www.splitbrain.org/blog/2017-08/10-homeassistant_duckdns_letsencrypt

 

HASS, DuckDNS and Let's Encrypt [splitbrain.org]

2 years ago I blogged about… When you want to make a local HomeAssistant (a home automation software I mentioned before) available from the Internet, you probably want to secure it with SSL. There's an official tutorial on how to do that, but it has a few

www.splitbrain.org

한가지 주의할 점은 우리는 본문과 달리 Docker에 Home Assistant를 설치한 상황이라 Home Assistant가 인식하는 본인의 절대 경로가 다르다는 것입니다.

때문에 Reconfigure HomeAssistant 섹션에서 언급한 pem 파일들의 경로를 본문과 달리 아래와 같이 설정해야 합니다.

 

[ fullchain. pem ]

변경 전: /home/homeassistant/dehydrated/certs/myhome.duckdns.org/fullchain.pem

변경 후: ./dehydrated/certs/myhome.duckdns.org/fullchain.pem

 

[ privkey.pem ]

변경 전: /home/homeassistant/dehydrated/certs/myhome.duckdns.org/privkey.pem

변경 후: ./dehydrated/certs/myhome.duckdns.org/privkey.pem

 

3. Tip

1) UPNP 안 보이기

discovery:
  ignore:
    - igd   

 

 

 

ASUS TM-AC1900(RT-AC68U) 멀린펌(Merlin firmware) 업데이트

장난감


언제부터인가 위와 같은 TM-AC1900 Web UI에서 멀린펌 업데이트가 안되서 찾아본 결과,  

ASUS에서 하드웨어 정책을 변경하였다고 합니다.

더구나 멀린펌 제작자는 TM-AC1900을 지원하지 않는다고 하니

기존처럼 Web UI상에서 멀린펌 업데이트가 안됩니다.

그래서 찾아본 방법!



  1. Upload RT-AC68U_384.6_0.trx to your router:
    pscp -scp -P 22 RT-AC68U_384.6_0.trx admin@192.168.1.1:/tmp/
  2. In SSH console:
    mtd-write2 RT-AC68U_384.6_0.trx linux
  3. Wait for the above command to complete, it should output something like "CRC OK linux".
  4. Power off the router with its physical on/off switch (don't try reboot or halt from the console).
  5. Wait for ~10 sec and power it back on.


Raspberry pi로 Amazon Echo 만들기

장난감

미국 아마존에서 Amazon Echo라는 재미난 기기를 팔고 있습니다.


애플의 Siri와 비슷한 가상 비서 서비스를 제공하는 기기입니다.


아래 동영상을 보면 이해하기 쉬울 겁니다.




시간이나 날씨를 묻는건 기본이고 피자 주문도 합니다. (이게 실제로 되는지 궁금합니다.)


그 외에 인터넷에서 찾아보면 IFTTT, Tasker와 연동하여 작동하는 예를 쉽게 볼 수 있습니다.



흥미가 생겨서 웹서핑을 하다보니 Raspberry pi로 Amazon Echo를 만든 블로그 포스트를 찾게 되었습니다.


영어로 되어 있지만 워낙 자세하게 설명되어 있고 중간 중간 스샷도 있어서 만만해 보였습니다.


더구나 집에 돌아다니는 스피커도 있고 초소형 USB 마이크도 옥션 등에서 싸게 팔기 때문에 주문한 USB 마이크가 


오자마자 블로그 포스트대로 시도해 봤습니다.



원본 블로그: How to Build Your Own Amazon Echo with a Raspberry Pi



원본 블로그에 약간 오해할만하게 적어놓은 부분이 있는데


Step Two - 5.에서 ProductID에는 Step One - 8.에서 생성된 문자열이 아니라 Step One - 4.에서 


입력한 device type을 입력해야 한다는 점입니다.


(이 부분 때문에 Step Four에서 아마존 페이지 오류가 발생해서 한참 고생했습니다.)



설치를 완료하고 "Alexa, What time is it now?"라고 말하면


뜬금없는 시간을 말합니다.


이는 알렉사의 기본 설정이 시애틀로 되어 있어서 그렇습니다.


그런데 아쉽게도 Amazon Echo는 미국에서만 서비스하기 때문에 한국 시간은 지원하지 않아서 약간의 수고가 필요합니다.


아래 유튜브를 따라하면 time zone을 변경할 수 있습니다.


참고로 한국은 Asia/Seoul 로 하면 됩니다.







Xiaomi Mi Smart Home All-In-One Media Control Center

장난감




TV 리모콘이 고장나서 만능 리모콘을 찾던 중 구매한 샤오미 리모콘입니다.

집에 굴러다니는 TV, IPTV, 에어콘 리모콘을 기억 시키면 앱 하나로

모든 가전기기들을 조정할 수 있습니다.

일반적인 적외선 리모콘뿐만 아니라 블루투스 리모콘까지 지원합니다.


예를 들어 저 기기에 TV 리모콘을 등록하고 샤오미에서 제공하는 앱의

버튼을 누르면 TV 리모콘 대신에 저 기기가 TV로 신호를 보내줍니다.


삼성전자나 LG전자 대부분의 리모콘들이 이미 등록되어 있어 별도 등록이 필요 없을 뿐만 아니라

유명하지 않은 전자 회사의 리모콘은 버튼을 직접 기억시킬 수 있어 사실상 모든 리모콘을 대체할 수 있습니다.


아쉬운 점은 매크로 기능이 없어서 취침 예약 같은 경우 기존처럼 버튼을 여러번 눌러야 한다는 점과

앱이 중국어로 되어 있다는 점입니다.


Mi Band 2로 안드로이드폰 잠금 해제 (Smart Lock)

장난감

스마트폰 보안을 위해 화면 잠금 해제시 패턴을 입력하거나 비밀번호를 입력하도록 설정한 분들이 많을 겁니다.

저 역시 보안을 위해 잠금해제 패턴을 지정해 사용하지만 핸드폰을 수시로 보기 때문에 패턴 입력하는 것도 은근 귀찮아 방법을 찾던 중 Smart Lock 기능을 알게 되었습니다.

Smart Lock은 안드로이드 OS에서 지원하는 기능으로 아래와 같은 경우 비밀번호나 패턴 입력 없이 화면 잠금 해제를 합니다.

     1. 미밴드나 블루투스 이어폰 같은 블루투스 기기 등이 폰과 연결되어 있을 때
     2. 집, 회사 등 사용자가 지정한 특정 장소에 있을 때
     3. 신뢰할 수 있는 음성... 은 잘 모르겠습니다. 저는 클릭이 안되었습니다.
     4. 스마트폰을 들고 있거나 작동하고 있을 때



제조사마다 다르지만 대부분 "설정" -> "보안" -> "화면 잠금 해제" 메뉴에 들어가면 Smart Lock 메뉴를 보실 수 있습니다.





그럼, 이제부터 Mi Band 2로 Smart Lock 기능을 이용하는 법을 소개하겠습니다.



Mi Band 2를 이용해서 Smart Lock 기능을 이용하기 위해서 
우선 Mi Fit 앱을 실행 시키고 위와 같이 스마트폰이 Mi Band 2를 찾을 수 있게 설정을 합니다.




그리고 스마트폰 "설정" -> "블루투스" 메뉴에 들어가 블루투스를 활성화 시키고 Mi Band 2가 검색 되기를 기다립니다.







하지만 아무리 기다려도 Mi Band 2가 검색 되지 않는 분도 있을 겁니다.

제가 그런 경우였습니다.
(그래서 이 글을 쓰게 되었습니다.)

위와 같이 Mi Band 2를 인식하지 못 하여 구글링을 하던 중 nRF Master Control Panel (BLE) 이라는 블루투스 관련 앱을 알게 되었습니다.


자세한 사용법은 모르지만 구글링으로 찾은 결과에 따르면 이 앱을 사용하면 스마트폰과 블루투스 기기를 연결할 수 있다고 합니다.




먼저 nRF Master Control Panel (BLE) 앱을 실행합니다.
기본 튜토리얼이 끝나고 SCANNER 탭 우측 상단의 "SCAN" 버튼을 누르고 잠시 기다린 후, 

위의 그림처럼 MI Band 2 항목이 생기면 "CONNECT" 버튼을 클릭합니다.




"CONNECT" 버튼이 "OPEN TAB"으로 변경되면 클릭합니다.





"OPEN TAB"을 누른 후, 화면이 바뀌면 우측 상단의 "..." 버튼을 누른 후, "BOND" 메뉴를 클릭합니다.




위와 같이 Mi Band 2와 스마트폰이 연결 되었다는 알림이 오면 클릭합니다.




Smart Lock 설정 화면이 뜨면 우측 하단의 "신뢰할 수 있는 기기로 추가"를 클릭합니다.




위와 같이 "MI Band 2 - 연결됨"이 나타나면 끝입니다.

가끔 Mi Band 2와 연결이 끊겨서 패턴을 입력해야 하는 경우가 있지만 Mi Fit 앱을 실행시키면 다시 연결이 됩니다.