본문 바로가기
IoT

HomeAssistant 마이토이님 카카오톡 노티 설정하기

by ㅋㅋ잠자 2020. 7. 12.
반응형

안녕하세요?


이제 자동화를 설정하고 조금 마무리가 되어가다 보니... 


노티에 관심이 생겨서.. 처음에는 HomeAssistatnt 앱을 이용해서 노티를 보내고는 했습니다.


그런데 이게 한번씩 너무 늦게 와버리는 문제가 있어서... 카카오톡 노티를 알아보고 있었는데요.


하기 URL 의 마이토이님 커스텀 컴포넌트를 이용하면 쉽게 세팅이 가능합니다.


https://cafe.naver.com/stsmarthome/13573


간략하게 세팅기 첨부합니다. 상기 게시글과 약간 설정메뉴가 달라져서 그 부분만 참고하시어 세팅하시면 됩니다.





1. developers 카카오 설정








상기와 같이 설정하시면 됩니다.





2. HomeAssistant 설정


root@aml:/opt/hass/config# cd custom_components/

root@aml:/opt/hass/config/custom_components# git clone https://github.com/musk95/kakao_talk.git kakao_talk


root@aml:/opt/hass/config# vim configuration.yaml

kakao_talk:

  api_key: REST_API

  redirect_uri: HASS_URL

  send_to_friends: True


notify:

  - name: kakaotalk_noti

    platform: kakao_talk


상기에 넣고 HASS 를 재시작 합니다.


저는 docker 라서 하기 명령으로 재부팅합니다. 물론 WebUI 에서 하셔도 됩니다.


root@aml:/opt/hass/config# docker restart hass





3. 카카오톡 부계정


본계정으로 상기 API 설정을 했다면, 본계정의 나와의 대화에 메시지가 오기 때문에 실제로 알림이 울리지 않습니다.


그렇기 때문에 부계정을 하나 파시고 로그인을 하셔야 합니다.



노티를 보내는 것은 하기 서비스 호출을 통해서 보내는 부분입니다. 자동화 같은 곳에서 활용이 가능합니다.



그러면, 노티 알람이 울리기 위해서는 


하기 URL 에서 로그인 할때 이렇게 로그인 하셔야합니다.


그 전에 API 설정에서 개발자로 초대를 해서 수락이 된 상태여야 하고, 부계정의 경우 카카오에서 제한을 하고 있기 때문에 본계정과 대화를 한번 하셔야 합니다. (본계정에서 부계정으로 메시지 보내서 대화 뚫음)




1. 본계정 로그인

2. 부계정 로그인


이런식으로 로그인 하셔야 합니다. 마지막에 로그인 하는 계정이 메시지를 보내는 주체를 로그인해주셔야 합니다.


만약에 친구계정이나 가족 계정이 있다면,


1. 본계정 로그인

2. 친구계정 로그인

3. 가족 계정 로그인

4. 부계정 로그인 


이렇게 로그인 하시면 123 에게 카카오톡 노티가 갑니다.


부계정에서는 자신과의 대화에도 쌓이고, API 를 로그인 할때, 친구 목록을 받아오기 때문에 친구로 전송이 가능합니다.




그런데 한번씩 메시지를 연속적으로 보내다 보면 차단되는 경우가 있기 때문에 notify 서비스를 호출할때 연속적으로 호출하시면 12시가 지나야 풀리는 문제점이 있습니다.


저 같은 경우, 한 자동화에서 외출모드일때 모션이 감지되는 경우 5번 연속으로 메시지를 보내도록 자동화를 해 두었는데 차단이 되어 버렸네요 ㅎㅎ.. 12시가 지나는 순간 풀리게 됩니다.





4. 별첨 : 스위치 ON OFF 노티 자동화


하기 자동화 한개로 노티를 하실 수 있습니다.


- id: '1594444662930'

  alias: notification devices on/off

  description: ''

  trigger:

  - platform: state

    to: 'off'

    entity_id:

    - light.geosildeung

    - switch.airconditioner

    - switch.boiler_bath_onoff

    - switch.computer

    - switch.ilgwalsodeung

    - switch.konsenteu1

    - switch.konsenteu2

    - switch.television

    - fan.seonpunggi

    - fan.xiaomi_air_purifier_2s

    - input_boolean.home_state

  - platform: state

    to: 'on'

    entity_id:

    - light.geosildeung

    - switch.airconditioner

    - switch.boiler_bath_onoff

    - switch.computer

    - switch.ilgwalsodeung

    - switch.konsenteu1

    - switch.konsenteu2

    - switch.television

    - fan.seonpunggi

    - fan.xiaomi_air_purifier_2s

    - input_boolean.home_state

  condition: []

  action:

  - service: notify.kakaotalk_noti

    data_template:

      message: '{{ state_attr(trigger.entity_id, ''friendly_name'') }} : {% if is_state(trigger.entity_id,

        ''on'') %}켜짐{% else %}꺼짐{% endif %}'

      title: '[기기 알림]'

  - service: notify.notify

    data_template:

      message: '{{ state_attr(trigger.entity_id, ''friendly_name'') }} : {% if is_state(trigger.entity_id,

        ''on'') %}켜짐{% else %}꺼짐{% endif %}'

      title: '[기기 알림]'


감사합니다.


반응형

댓글