본문 바로가기
Hardware/Home Assistant(라즈베리파이)

Home Assistant & Google Assistant 연동

by lovey25 2020. 12. 21.
반응형

2023-05-05 update log: 최근 변경사항 반영 


Homea Assistant(HA)의 자동화 기능은 아주 유용하게 사용하고 있습니다. 하지만 집안에 있을 때 핸드폰으로 기기들을 제어하는 기능은 활용도가 좀 떨어졌습니다. 물론 자기 전에 누워서 거실에 켜져 있는 전등이나 공기청정기 등 컨트롤하는 건 유용하지만 일상적인 동작에서는 매번 핸드폰을 꺼내서 잠금 풀고 앱켜서 조작하는 게 여러 단계를 거치다 보니 활용의 걸림돌이 되는 것 같았습니다. 그리고 항상 핸드폰이 손에 들려있는 것도 아니니까요. 그래서 구글 어시스턴트와 연동하고 구글 홈 or 구글 네스트 미니를 설치하기로 했습니다.(이 방법은 여기에 잘 설명되어 있는데 내용 중 구글 관련 페이지에 약간의 변동사항이 있어서 제가 작업한 기준으로 업데이트하여 작성하였습니다.) 

구글 어시스턴트를 연동하기 위해서 사전에 먼저 설정해야 할 부분이 있는데요. 바로 HA의 HTTPS 접속을 활성화하는 것입니다. HA의 HTTPS접속에 대한 내용은 이전 포스팅에서 다룬 적이 있기 때문에 본 포스팅에서는 그 이후 과정부터 진행하는 점 참고해 주세요.

 

Home Assistant, HTTPS 접속 활성화

Home Assistant(HA)에서 확장 기능을 사용하려다 보면 HTTPS를 사용하는 보안접속이 필요한 경우가 있습니다. 그래서 HA를 좀 본격적으로 활용해 보겠다 하면 필수적으로 적용해야 하는 것이 바로 HTTPS

kwonkyo.tistory.com

구글 어시스턴트를 사용하기 위해서는 당연히 구글 계정이 있어야 하겠죠. 먼저 구글 계정에 로그인을 하고 로그인이 되어 있다면 "Actions on Goole console"에서 새로운 프로젝트를 생성하는 것부터 시작해야 합니다.

위 링크로 이동해서 "New Project"를 생성합니다. 페이지 이동시 필요하면 로그인도 해주어야겠죠?!

저는 프로젝트 이름을 "EveryIOT"라고 설정했습니다. 그리고 사용 언어와 지역을 선택하고 프로젝트를 생성합니다.

다음으로 어떤 타입의 프로젝트인지 골라줍니다. "Smart Home"을 선택하고 "Start Building"을 클릭합니다.

다음 화면에서는 Quick setup에서 Name your Smart Home action을 선택해서, 표시될 이름을 적어줍니다. 저는 프로젝트 이름과 동일하게 했습니다.

다음으로 "Build your Action > Add Action(s)"으로 이동합니다.

Fulfillemnt URL을 설정합니다. 운영 중인 HA서버의 접속 주소를 바탕으로 "https://[HA접속주소:포트번호]/api/google_assistant"의 주소를 만들어서 입력하고 오른쪽에 저장 버튼을 눌러줍니다.

다음으로 좌측 메뉴에서 'Account linking'을 선택합니다.

Client ID에 "https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID]"을 복사해서 붙여넣습니다. 여기서 "[YOUR_PROJECT_ID]"부분은 우측 상단 쩜쩜쩜 버튼을 눌러서 나오는 "Project settings" 메뉴를 눌러서 확인할 수 있습니다.

Client secret은 아무거나 집어넣습니다. HA에서는 사용하지 않는다고 하네요.

Authorization URL은 "https://[HA주소:포트번호]/auth/authorize" 와 같이 입력하고, Token URL은 "https://[HA주소:포트번호]/auth/token로 입력하고 Next 버튼을 누릅니다.

2번째 Use your app for account linking은 건너띄고 3번 Configure you client로 가서 다음과 같이 "email", "name" 이라고 넣어줍니다. "Add scope" 버튼을 눌러주면 칸이 하나더 생겨납니다.

Next버튼 누르고 Save 버튼까지 눌러줍니다.

다음으로 상단에 "Test" 메뉴를 눌러서 테스트 앱을 생성합니다.

다음으로 구글의 서비스 계정 키를 발급받아서 등록합니다. 

구글 클라우드 플랫폼 페이지(https://console.cloud.google.com/)로 가서 사용자 인증정보를 추가합니다.

"API 및 서비스 > 사용자 인증 정보" 메뉴로 이동하고

화면 상단에 "사용자 인증 정보 만들기 > 서비스 계정"을 선택합니다.

계정 이름은 구별 가능한 임의의 이름으로 입력하고 ID는 자동 생성된 대로 두고 만들기 눌러줍니다.

다음으로 역할란에서 "서비스 계정 > 서비스 계정 토큰 생성자"를 선택하고 최종 완료를 눌러줍니다.

서비스 계정이 생성되면 "사용자 인증 정보" 페이지 하단에서 새로 생성한 계정을 확인할 수 있습니다.

생성된 계정을 클릭해서 계정 세부 정보 페이지에서 "키" 탭으로 이동해서 "키 추가 > 새 키 만들기"를 클릭합니다.

유형을 JSON타입으로 선택하고 만들기를 눌러서 키를 다운로드합니다.

이렇게 다운로드한 키는 파일 이름을 "service_account.json"으로 하였고 HA의 /config/폴더에 복사합니다.

이제 HA의 설정 파일인 configuration.yaml파일에 다음 내용을 추가해서 "google_assistnat" 통합구성요소를 추가합니다. 필요에 따라 수정해서 사용하면 되겠습니다.

# GOOGLE ASSISTANT 설정
google_assistant:
  project_id: [PROJECT ID]
  service_account: !include service_account.json
  report_state: true
  exposed_domains:
    - switch
    - light
    - climate
    - fan

이제 서버에서 해줄 일은 모두 끝났습니다.

핸드폰에서 구글 홈 앱을 실행합니다. 먼저 좌상단에 "+"버튼을 누르고 "기기설정 > Google 호환 가능"기기 설정 메뉴로 이동합니다. 그러면 구글 어시스턴트에 연동할 수 있는 여러 가지 서비스 들이 나오는데요. 여기서 앞에서 등록한 서비스 계정 이름을 찾아서 선택해 주면 됩니다.

이름 앞에 [test]라는게 붙어있습니다.

만들어둔 서비스 계정을 선택하면 HA로그인 화면이 나타나고 로그인을 하면 등록된 노드들의 설정을 진행하게 됩니다.

그리고 모든 설정이 완료되면 아래 그림처럼 구글 홈에서도 HA에 등록된 기기들을 확인하고 컨트롤할 수 있습니다.

이제 핸드폰 뿐만아니라 구글 네스트나 구글홈 등 스마트 스피커를 통해서 "헤이 구글" 음성명령을 사용할 수 있게 되었습니다. 점점 홈 네트워크가 스마트 해지는 느낌입니다. :)

 

끝!

반응형

댓글