Node-RED에서 Sesame API v3 사용

소개



Node-RED에서 Sesame API v3 사용법을 설명하는 사이트가 의외로 발견되지 않았기 때문에
시행착오한 결과를 메모 대신에 남길 수 있으면(자) 생각해 이쪽에 쓰고 있습니다.

필요한 것


  • SESAME mini
  • Node-RED 환경

  • 참고문헌


  • Sesame API 문서 htps : // / cs. 칸 dy 호세. 코/#세사메-아피

  • 절차 1. 대시보드에서 정보 수집



    API Key 얻기



    CANDY HOUSE 대시보드에 로그인
    아래의 API 설정에서 SEND CODE를 누르십시오.
    보낸 인증 코드를 입력하여 Confirm.


    CANDY HOUSE 대시보드
    htps : // my. 칸 dy 호세. 이

    API Keys에서 ADD를 누르면 몇 초 후에 API Key가 표시됩니다.
    이 Key는 나중에 참조할 수 없으므로 반드시 복사해 둡시다.

    Device ID 확인



    Sesame List에서 조작하려는 Sesame을 선택하여 장치 화면으로 이동합니다.
    (커서가 링크 표시가 되지 않지만 그대로 클릭할 수 있습니다)
    각 기기의 화면 URL에 기기 ID가 포함되어 있습니다.
    https://my.candyhouse.co/#/sesameList/0/[********-****-****-****-************]
    

    이 **** 부분의 문자열을 Device ID로 기록해 둡니다.

    순서 2. 개폐 상태를 취득하는 플로우



    갑자기 열쇠를 열거나 닫는 흐름을 만드는 것은 어색하기 때문에
    우선 키의 개폐 상태를 취득하는 플로우를 작성합시다.

    Node 배치



    Node-RED로 이동하여,
    Inject, function, http request, debug 노드를 배치하고 연결합니다.


    function 노드 설정



    function 노드에 다음 코드를 입력하고 이전에 얻은 API Key를 입력합니다.
    msg.headers = {'Authorization' : "[API Key]"};
    return msg;
    

    http request 노드 설정



    http request에는 Method는 "Get", Return은 "a parsed JSON object"
    URL에 다음을 지정합니다.
    https://api.candyhouse.co/public/sesame/[********-****-****-****-************]
    

    **** 부분은 조만간 Device ID입니다.


    실행



    이것으로 준비는 끝입니다.
    Inject 노드를 클릭하여 Debug 표시를 확인합니다.
    아래와 같은 response가 돌아오면 성공입니다.
    {"locked": true, "battery": 100, "responsive": true}
    

    키의 개폐 상태로 처리를 나누는 경우는 「Switch」노드를 연결해
    "msg.payload.locked"가 "true"인지 "false"로 분기할 수 있습니다.


    3단계. 키를 열고 닫는 흐름



    기본적인 구조는 순서 2와 거의 같고, 내용만을 바꾸어 갑니다.

    function 노드 설정



    function 노드에 다음 코드를 입력하고 이전에 얻은 API Key를 입력합니다.
    다음은 잠그는 경우입니다.
    「lock」의 부분을 「unlock」로 하면 해정입니다.
    msg.headers = {'Content-Type' : 'application/json', 'Authorization' : "[API Key]"};
    msg.payload = {'command' : 'lock'};
    return msg;
    

    http request 노드 설정



    http request에는 Method는 'POST', Rerurn은 'a parsed JSON object'
    URL에 다음을 지정합니다(2단계와 동일).
    https://api.candyhouse.co/public/sesame/[DeviceID]
    

    실행



    Inject 노드를 눌러 제대로 열쇠가 닫히면 성공입니다.
    Debug에는 task_id가 던져집니다.
    {"task_id":"[********-****-****-****-************]"}
    

    4단계. 실행 결과를 얻는 흐름



    2단계의 흐름을 복사하고 3단계의 흐름 뒤에 연결합니다.
    실행 대기로, 사이에 5초 정도의 Delay를 넣어 둡니다.
    그런 다음 각 노드의 속성을 변경합니다.


    function 노드 설정



    function 노드에 다음 코드를 입력하고 API Key를 입력합니다.
    2단계에서 복사한 경우 그대로 괜찮습니다.
    msg.headers = {'Authorization' : "[API Key]"};
    return msg;
    

    http request 노드 설정



    http request에는 Method는 'GET', Return은 'a parsed JSON object'
    URL에 다음을 지정합니다.
    https://api.candyhouse.co/public/action-result?task_id={{payload.task_id}}
    

    실행



    Inject 노드를 눌러 제대로 열쇠가 닫히면 성공입니다.
    Debug는 (payload를 통해) 지정된 task_id와 실행 결과를 던집니다.
    msg.payload.successful의 내용으로 Switch로 분기시키면 좋을 것입니다.
    {"task_id":"[task_id]","status":"terminated","successful":true}
    

    status가 processing이 된다면 Delay를 오래 걸립니다.
    내 환경에서는 5초가 충분했습니다.

    결론



    보안에 충분히 주의하여 사용하십시오.

    좋은 웹페이지 즐겨찾기