이 글은 Home Assistant 0.112.4 버전을 기준으로 작성되었습니다.
다른 블로그들에서 소개하는 base_url은 Home Assistant에서 공식적으로 삭제되었기에 사용 불가능합니다. 이 글에서는 use_x_forwarded_for과 trusted_proxies 항목을 이용합니다.
참고글
* 홈 어시스턴트 버전 확인 및 업그레이 방법
* 웹 훅이란 무엇인가
* Let's Encrypt ssl 인증서 받기
홈 어시스턴트와 삼성 스마트씽 연동을 위한 방법은 다음과 같다.
(1) 홈 어시스턴트에서 제공하는 NABU CASA 클라우드를 이용한 연동
- 홈 어시스턴트 - NABU CASA - SmartThings Cloud 연동
- 삼성 스마트씽 계정에 접근하기 위한 개인 접근 토큰이 필요하다
- 홈 어시스턴트 클라우드는 non-expired subscription으로 설정 및 로그인 되어 있어야한다.
- 유료이다
(2) 직접 연동 (웹 훅)
- 홈 어시스턴트 - SmartThings Cloud 연동
- 삼성 스마트씽 계정에 접근하기 위한 개인 접근 토큰이 필요하다
- 삼성 스마트씽 클라우드에서 접근을 하기 위한 SSL 인증된 도메인이 필요하다. 자체 서명 SSL은 인정되지 않는다.
이 글에서는 홈 어시스턴트와 삼성 스마트씽을 직접 연동시키는 방법에 대해 소개하고자 합니다.
ssl 인증서는 이미 발급받은 것으로 가정하고 설명하도록 하겠습니다. 혹시 받는 법을 모르시는 분은 참고글을 통해 확인해주세요.
STEP 1. configuration.yaml 편집
(1) 삼성 스마트씽 클라우드에서 홈 어시스턴트에 접속하기 위한 외부 URL 정의
- 외부 URL은 해당 도메인 주소와 포트 번호 8123번으로 기본값이 설정되어있습니다. 하지만 역방향 프록시를 이용하여 포트 번호를 443번으로 바꿔줄 것이기 때문에 외부 URL 역시 443번으로 설정해줍니다.
2. 역방향 프록시 설정
- base_url이 사라지면서 역방향 프록시를 이용하여 설정해주도록 바뀌었다. DSM에서 역방향 프록시 설정을 해주어야하지만 configuration.yaml에서도 설정을 해주어야하므로 미리 작성하도록 하겠습니다.
* 만약 역방향 프록시가 다른 나스에서 작동한다면 127.0.0.1 대신 해당 나스의 ip 주소를 입력해주면 됩니다.
STEP 2. 역방향 프록시 설정
1. DSM -> 제어판 -> 응용 프로그램 포털 -> 역방향 프록시 탭 -> 생성 클릭
2. 역방향 프록시 규칙 설정
3. 사용자 지정 머리글 생성
- 사용자 지정 머리글 탭이 보이지 않는다면 DSM 버전이 낮기 때문이므로 오류 발생시 대처법 참조
STEP 3. 홈어시스턴트에서 삼성 스마트 씽 추가
1. 홈어시스턴트 접속 후 통합 구성요소에서 삼성 스마트 씽 추가
2. 외부 접속 URL 확인
- 외부 접속이 잘 되는지 확인하는 방법은 아래의 웹 훅 주소를 우 클릭 후 새 탭에서 링크 열기를 눌러 에러가 나타나는지 확인하면 된다.
3. 삼성 스마트씽 토큰 입력하기
- 미리 발급해둔 토큰이 있다면 그대로 입력하면 되고, 만약 없다면 "개인 엑세스 토큰"을 클릭하여 삼성 스마트씽 홈페이지에서 토큰을 새로 발급받는다. 웬만하면 권한을 전부 주는 것이 편할 것이다. 또한, 토큰은 한번 생성 후 재확인이 불가능하므로 메모장 같은 곳에 저장해두자. 만약 분실했다면 토큰 삭제 후 재발급을 받으면 된다.
- 만약 웹훅에 접속할 수 없다는 에러가 뜬다면 80, 443번 포트포워딩이 잘 되어있는지 확인해보자.
4. 삼성 스마트 씽 설정
- 위치 선택 후 확인을 누르면 자동으로 삼성 스마트씽 홈페이지로 접속된다. 로그인 후 홈 어시스턴트를 허용해주면 된다.
오류 발생 시 대처법
- 역방향 프록시 설정 후 로그인 불가 (Unable to connect to Home Assistant)
- 특히 시놀로지 6.2 이하 버전은 사용자 지정 헤더 탭이 존재하지 않아 STEP 2와 더불어 다음 과정이 필요합니다.
시놀로지 역방향 프록시 설정에 웹소켓이 빠져서 발생하는 현상이다
STEP 2에 따라 웹소켓을 생성해주거나 사용자 지정 머리글 탭이 보이지 않는 경우 수동으로 넣어주면 된다.
1. putty 같은 프로그램으로 나스에 SSH로 접속
2. 로그인 (시놀로지 DSM 아이디, 비밀번호와 동일)
3. 관리자 권한으로 로그인
- sudo su 를 입력한 후 비밀번호 입력
* 파일을 변경하기 위해서는 관리자 권한이 필요하다.
* 참고로 비밀번호를 입력해도 콘솔창에는 아무런 표시가 나타나지 않는다. 잘 입력되고 있는 것이므로 그냥 비밀번호를 치고 엔터를 눌러주면 된다.
4. 다음 명령어 입력
- vi /usr/syno/share/nginx/Portal.mustache
5. 웹 소켓 추가
화살표 키를 이용해 Location 섹션을 찾은 후 다음 3줄을 추가한다. 열맞춤은 스페이스바 대신 탭으로 조정할 것.
입력할 때는 INS 버튼을 누른 뒤 작성해주면 된다.
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Conncection "upgrade";
- proxy_read_timeout 86400;
6. nginx 재시작
- 다음 명령어를 입력하여 nginx 서버를 재시작하여 변경사항을 적용해준다.
- synoservice fg --restart nginx
* DSM 업데이트 시 파일이 갱신되면서 초기화될 수 있으므로 같은 문제가 발생하면 같은 방법으로 다시 확인하면 된다.