Homebridge에서 지원할 수 없는 가전 기기를 Google Home에서 작동(IRKit 사용)

개요



Google Home으로 전화를 걸어 실링 라이트의 리모컨 버튼을 누르는 것과 같은 작업을 수행합니다.
사정에 관심이없는 분은 주제에 → 적외선 신호 획득

배경



에어컨을 Homebridge 대응시키거나 , Philips Hue를 사 현관 등에 배치해, 집 IoT화의 혜택을 누리는 가운데, 방에 원래 비치되어 있던 실링 라이트가 남아 있었다…

남겨진 이유



씰링 라이트의 사양과 Homebridge의 설정 파일의 포맷이 맞지 않는다.

Homebridge 구성 파일



온과 오프의 2 상태를 상정하고, 「온으로 하는 신호」 「오프로 하는 신호」를 기술한다.

씰링 라이트 사양


  • 상태는 4개
  • 형광등 2개 점등
  • 형광등 1개 점등
  • 야간 조명
  • 완전 꺼짐

  • 하나의 리모컨 신호

  • 켜기/끄기 신호가 분리되어 있지 않기 때문에, 2개 점등과 완전 소등의 2상태만을 꺼내 설정 파일에 쓴다고 할 수 없다.
    신호는 1개이기 때문에 억지로 설정 파일을 써도, 「홈」어플리상의 표시가 기분 나쁘게 된다.
    (예: 2개 점등: 켜짐, 1개 점등: 꺼짐, 야간 조명: 켜짐, 완전 꺼짐: 꺼짐)

    Homebridge를 사용할 때까지 없었습니까?


  • 상태를 고려하지 않고 신호가 전송되면 좋다
  • IRKit에는 웹 API가 있습니다

  • →GoogleHome과 IFTTT로 조작 가능

    적외선 신호 획득



    ht tp // 게이치 r t. 이 m

    IRKit을 향해 리모컨을 조작하고 적외선 신호를 읽은 후 다음 명령을 실행합니다.
    % curl -i "http://[IRKitのIPアドレス]/messages" -H "X-Requested-With: curl"
    HTTP/1.0 200 OK
    Access-Control-Allow-Origin: *
    Server: IRKit/2.1.3.13.gbe33d36
    Content-Type: text/plain
    
    {"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}
    

    clientkey와 deviceid 얻기



    우선 clienttoken을 취득
    % curl -i "http://[IRKitのIPアドレス]/keys" -d '' -H "X-Requested-With: curl"
    HTTP/1.0 200 OK
    Access-Control-Allow-Origin: *
    Server: IRKit/2.1.3.13.gbe33d36
    Content-Type: text/plain
    
    {"clienttoken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
    

    취득한 clienttoken을 사용해 clientkey와 deviceid를 취득
    이 URL은 로컬 IP 주소가 아닙니다.
    curl -i -d "clienttoken=XXXXXXXXXXXXXXXXXXXXX" "https://api.getirkit.com/1/keys"
    HTTP/1.1 200 OK
    Server: ngx_openresty
    Date: Tue, 07 Jan 2014 08:46:06 GMT
    Content-Type: application/json; charset=utf-8
    Content-Length: 94
    Connection: keep-alive
    X-Content-Type-Options: nosniff
    
    {"deviceid":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","clientkey":"XXXXXXXXXXXXXXXXXXXXXXX"}
    

    IFTTT 애플릿 만들기



    This 부



    설정은 선호합니다.
    이미지의 예라면, "조명"보다 "빛"이 이해하기 쉽다 (느낌).



    Then 부



    Content Type이 절망적이지만 x-www-form-urlencoded


    Body(optional)란에 쓰는 내용
    clientkey=取得した文字列に置き換え&deviceid=取得した文字列に置き換え&message=取得した赤外線信号JSONに置き換え
    

    이제 주문을 주장하면 조명을 조작할 수 있게 된다.

    문제



    전 점등에서 소등으로 단번에 천이하고 싶을 때 등에 반복 주창하는 것이 번거롭다.

    좋은 웹페이지 즐겨찾기