본문 바로가기
Hardware/Home Assistant

Home Assistant & Google Assistant 연동

by lovey25 2020. 12. 21.

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

오늘은 그 첫 번째인 HA와 구글 어시스턴트를 연동하기입니다. 
(이 방법은 HA 한국 페이지에 잘 설명되어 있는데 내용 중 구글 관련 페이지에 약간의 변동사항이 있어서 제가 작업한 기준으로 업데이트하여 작성하였습니다.) 

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

 

Home Assistant, HTTPS 접속 활성화

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

kwonkyo.tistory.com

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

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

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

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

다음 화면에서는 "Build your Action > Add Action(s)"으로 이동합니다.

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

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

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

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

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

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

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

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

생성된 계정을 클릭해서 계정 세부 정보 페이지에서 아랫부분 "키 추가"를 눌러서 "새 키 만들기"를 클릭합니다.

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

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

이제 HA의 설정 파일인 configuration.yaml파일에 다음 내용을 추가합니다. (이 내용은 HAKorea의 예시입니다.) 필요에 따라 수정해서 사용하면 될 것 같은데 전 이대로도 잘 되고 있어서 그냥 사용하고 있어요.

# GOOGLE ASSISTANT 설정
google_assistant:
  project_id: [PROJECT ID]
  service_account: !include service_account.json
  report_state: true
  exposed_domains:
    - switch
    - light
  entity_config:
    switch.kitchen:
      name: CUSTOM_NAME_FOR_GOOGLE_ASSISTANT
      aliases:
        - BRIGHT_LIGHTS
        - ENTRY_LIGHTS
    light.living_room:
      expose: false
      room: LIVING_ROOM

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

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

0123

그런데 이름 앞에 [test]라는게 붙어있는데 이건 왜 붙는 건지 잘 모르겠습니다. 어디선가 제가 test라는 이름을 지정한 건지 아니면 사용자 임의설정 서비스에 붙는 건지는 아직 파악하지 못했습니다.

만들어둔 서비스 계정을 선택하면 HA로그인 화면이 나타나고 로그인을 하면 등록된 노드들의 설정을 진행하게 됩니다. 그리고 모든 설정이 완료되면 아래 그림처럼 구글 홈에서도 HA에 등록된 기기들을 확인하고 컨트롤할 수 있습니다.

이제 핸드폰에서 "헤이 구글" 음성명령을 사용할 수 있게 되었습니다. 하지만 여전히 핸드폰 잠금이 풀려있는 상태에서만 사용가능합니다. 다음 포스팅에서는 구글 네스트나 구글홈 설치한 후기 남기도록 하겠습니다. 점점 홈 네트워크가 스마트 해지는 느낌입니다. :)

 

끝!

728x90

댓글0