Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

NatureRemoで家の温湿度を集める(ついでにLINEに通知する)

More than 1 year has passed since last update.

この記事はFujitsu Advent Calendar 2018 21日目の記事です。

※この記事に描かれていることは個人の見解であり、所属する組織の公式見解ではありません。
個人的な活動の経験から得た知見の共有を目的としています。

Nature Remoとは

https://nature.global/
テレビや照明など赤外線で通信できる家電をAPI経由で操作できるようになるデバイスです。これをスマートスピーカーと連携することで音声で家電を制御することができるようになります。
筆者の家では、就寝前「ねえGoogle 闇と共に眠れ」と呟くとGoogle Homeが「この世を終焉へといざないます」と不穏なことを呟き全ての照明がOFFになるよう設計されています。

また、Nature Remoは家電を制御できるだけでなく、温湿度センサが搭載されておりこのデータをAPI経由で取得することが可能です。今回はそのAPIを使えるようにするまでの流れをまとめます。

ログイン

https://home.nature.global に行きLoginボタンを押す
login.jpg

メールアドレスを入力しログインする。

このアドレスはNatureRemoを登録した時のメールアドレスを入力してください。
ログイン.jpg

許可する

1545399712611.jpg

歓迎されるのでGo

1545399728786.jpg

一番下にある「Generate access token」をクリック

今まで使ったアクセストークンが表になっていますが、一番下にスクロールするとこのアイコンがあります。
1545399822348.jpg

アクセストークンが払い出される

「Copy」を押してアクセストークンを取得してください。このアクセストークンは決して人に伝えないようにしてください。(誰でも家電制御できるようになってしまいます)
106314.jpg

Nature Remoの公開APIについて

インターネット向けに公開しているAPIと、ローカルネットワーク向けに公開している閉じたAPIと2種類あります。

https://developer.nature.global/

どちらもAPIがswaggerで定義されていますが、そのままでは使えません。
具体的にはアクセストークンを含んだ以下のヘッダを追加する必要があります。(OAuth2)

"Authorization: Bearer <取得したアクセストークン>" 

今回はインターネット向けに公開しているAPIで温湿度の取得を行います。
(ローカルネットワーク向け、色々オプション工夫してみましたが全部Bad Requestになって取れませんでした…誰かやり方教えて欲しい...TpT)

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を使って
flow.jpg

IFTTTを設定すると、こんな感じで通知できました
106338.jpg

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away