NatureRemo로 집의 온습도를 모으기 (이어서 LINE에 통지)

이 기사는 Fujitsu Advent Calendar 2018 21 일째 기사입니다.

※이 기사에 그려져 있는 것은 개인의 견해이며, 소속하는 조직의 공식 견해가 아닙니다.
개인적인 활동 경험에서 얻은 지식의 공유를 목적으로 합니다.

Nature Remo란?



htps : // 나츠레. gぉ바l/
TV나 조명 등 적외선으로 통신할 수 있는 가전을 API 경유로 조작할 수 있게 되는 디바이스입니다. 이것을 스마트 스피커와 연계함으로써 음성으로 가전을 제어할 수 있게 됩니다.
필자의 집에서는, 취침전 「이봐 구글 어둠과 함께 잠들어」라고 중얼거리면 구글 홈이 「이 세상을 종언으로 가야 합니다」라고 불온한 것을 중얼거리고 모든 조명이 OFF가 되도록 설계되고 있습니다.

또, Nature Remo는 가전을 제어할 수 있을 뿐만 아니라, 온습도 센서가 탑재되어 있어 이 데이터를 API 경유로 취득하는 것이 가능합니다. 이번에는 그 API를 사용할 수 있게 될 때까지의 흐름을 정리합니다.

로그인



htps : // 칭찬. 나츠레. gぉ바l로 가서 로그인 버튼을 누릅니다.


이메일 주소를 입력하고 로그인합니다.



이 주소는 NatureRemo를 등록했을 때의 이메일 주소를 입력하십시오.


허용하다





환영되기 때문에 Go





하단에 있는 Generate access token을 클릭합니다.



지금까지 사용한 액세스 토큰이 표로 되어 있지만 맨 아래로 스크롤하면 이 아이콘이 있습니다.


액세스 토큰이 지불됨



"Copy"를 눌러 액세스 토큰을 얻습니다. 이 액세스 토큰은 결코 사람에게 알리지 마십시오. (누구나 가전제어를 할 수 있게 되어 버립니다)


Nature Remo 공개 API 정보



인터넷용으로 공개하고 있는 API와, 로컬 네트워크용으로 공개하고 있는 닫힌 API와 2종류가 있습니다.

둘 다 API가 swagger에 정의되어 있지만 그대로 사용할 수 없습니다.
특히 액세스 토큰을 포함하는 다음 헤더를 추가해야 합니다. (OAuth2)
"Authorization: Bearer <取得したアクセストークン>" 

이번은 인터넷용으로 공개하고 있는 API로 온습도의 취득을 실시합니다.
(로컬 네트워크용, 다양한 옵션 궁리해 보았습니다만 전부 Bad Request가 되어 잡히지 않았습니다…
curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json"
 -H "Authorization: Bearer <取得したアクセストークン>" | jq .

결과 (일부 별 문자열로 대체하여 숨김)

json
[
  {
    "name": "Living",
    "id": "xxx",
    "created_at": "2018-10-23T15:05:51Z",
    "updated_at": "2018-12-21T13:53:49Z",
    "mac_address": "xx:xx:xx:xx:xx:xx",
    "serial_number": "010000000xxxxxxx",
    "firmware_version": "Remo/x.x.xx-xxxxxxxxx",
    "temperature_offset": 0,
    "humidity_offset": 0,
    "users": [
      {
        "id": "UUID",
        "nickname": "なかじま",
        "superuser": true
      }
    ],
    "newest_events": {
      "hu": {
        "val": 50,
        "created_at": "2018-12-21T14:50:22Z"
      },
      "il": {
        "val": 123.4,
        "created_at": "2018-12-21T14:28:09Z"
      },
      "te": {
        "val": 25.79,
        "created_at": "2018-12-21T14:23:40Z"
      }
    }
  }
]

newest_events에 온도(te), 습도(hu)와 밝기(il)의 정보가 들어 있는 것을 알 수 있습니다.
jq에서 다음과 같이 하면 값만 취득 확인할 수 있습니다.
 curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json"
 -H "Authorization: Bearer <取得したアクセストークン>" | jq '.hu.val, .il.val, .te.val'
 50
123.4
25.79

LINE 통지 (할애



Node-RED에서 위의 HTTP 요청을 정기적으로 발행하고 결과를 IFTTT에 던져 LINE에 보내면 Line에 정기적으로 온습도가 통지됩니다.

이런 식으로 Node-RED를 사용하여


IFTTT를 설정하면 이런 식으로 알릴 수있었습니다.

좋은 웹페이지 즐겨찾기