Nature RemoのAPIでターミナルから家電を操作してみた

Nature RemoのAPIでターミナルから家電を操作してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

周囲で空前の音声で家電を動かすブームがきているのですが、2018年1月30日にNature RemoのAPIが公開されたのを教えていただいたのでざっと叩いてみました。

Nature Remo

公式サイト

スマホアプリやスマートスピーカーなどをトリガーに赤外線を発信できるデバイスです。

簡単に行ってしまえば「赤外線リモコンで操作できる」ものを「リモコン以外から操作できるようにする」やつです。 APIの公開によってIFTTTの連携を使わずにアプリケーションとの組み込みが直接行えるようになるのではないでしょうか。

API仕様を眺めてみる

主にユーザ、家電、Remo本体の参照や登録、赤外線の送信などが行えるようです。

APIというよりRemo自体がそういうものなのだと思いますが、エアコン関連が充実しています。

公式のAPIの仕様はこちらです。

やってみた

とりあえずコマンドラインから家電を操作してみたいと思います。

必要なもの

  • いずれかの家電を登録済みのNature Remo

アクセストークンの取得

https://home.nature.global/にアクセスし、トークンを取得します。

トークンが取得できました。

APIを叩いてみる

  • ※以下のコマンド実行結果では一部Jsonを整形/値のマスキングをしています。
  • {$TOKEN}には取得したTOKENを入力してください。

自分の情報を取得

$ curl -H 'Authorization: Bearer
{$TOKEN}'
-H "accept: application/json" -X GET
"https://api.nature.global/1/users/me"
{"id":"xxxxxxx","nickname":"じゅん"}

登録された家電一覧を取得

$ curl -H 'Authorization: Bearer
{$TOKEN}'
-H "accept: application/json" -X GET
"https://api.nature.global/1/appliances"
[
    {
        "aircon": null,
        "device": {
            "created_at": "2018-01-28T07:43:17Z",
            "firmware_version": "Remo/1.0.62-gabbf5bd",
            "humidity_offset": 0,
            "id": "xxxxx",
            "name": "Remo",
            "temperature_offset": 0,
            "updated_at": "2018-01-30T14:46:39Z"
        },
        "id": "xxxxx",
        "image": "ico_ac_1",
        "model": null,
        "nickname": "電気",
        "settings": null,
        "signals": [
            {
                "id": "xxxxx_light",
                "image": "ico_lightup",
                "name": "電気"
            }
        ],
        "type": "IR"
    },
    {
        "aircon": {
            "range": {
                "fixedButtons": [
                    "power-off"
                ],
                "modes": {
                    "auto": {
                        "dir": [
                            "auto",
                            "swing"
                        ],
                        "temp": [
                            "-5",
                            "-4",
                            "-3",
                            "-2",
                            "-1",
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "vol": [
                            "1",
                            "auto"
                        ]
                    },
                    "blow": {
                        "dir": [
                            "auto"
                        ],
                        "temp": [
                            ""
                        ],
                        "vol": [
                            "auto"
                        ]
                    },
                    "cool": {
                        "dir": [
                            "auto",
                            "swing"
                        ],
                        "temp": [
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23",
                            "24",
                            "25",
                            "26",
                            "27",
                            "28",
                            "29",
                            "30",
                            "31",
                            "32"
                        ],
                        "vol": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "auto"
                        ]
                    },
                    "dry": {
                        "dir": [
                            "auto",
                            "swing"
                        ],
                        "temp": [
                            "-2",
                            "-1",
                            "0",
                            "1",
                            "2"
                        ],
                        "vol": [
                            ""
                        ]
                    },
                    "warm": {
                        "dir": [
                            "auto",
                            "swing"
                        ],
                        "temp": [
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23",
                            "24",
                            "25",
                            "26",
                            "27",
                            "28",
                            "29",
                            "30"
                        ],
                        "vol": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "auto"
                        ]
                    }
                }
            },
            "tempUnit": "c"
        },
        "device": {
            "created_at": "2018-01-28T07:43:17Z",
            "firmware_version": "Remo/1.0.62-gabbf5bd",
            "humidity_offset": 0,
            "id": "xxxxx",
            "name": "Remo",
            "temperature_offset": 0,
            "updated_at": "2018-01-30T14:46:39Z"
        },
        "id": "xxxxx",
        "image": "ico_ac_1",
        "model": {
            "id": "xxxxx",
            "image": "ico_ac_1",
            "manufacturer": "daikin",
            "name": "Daikin AC 001",
            "remote_name": "arc446a4",
            "series": "Daikin AC"
        },
        "nickname": "Daikin AC 001",
        "settings": {
            "button": "",
            "dir": "",
            "mode": "auto",
            "temp": "-5",
            "updated_at": "2018-01-30T14:46:38Z",
            "vol": ""
        },
        "signals": [],
        "type": "AC"
    }
]

登録済みのエアコンと照明の情報が取得できました。エアコンの情報はかなりリッチですね。

照明をつけてみる

https://api.nature.global/1/appliancesのレスポンスに含まれる「電気」のidを指定してAPIを実行します。

$ curl -H 'Authorization: Bearer
{$TOKEN}'
-H "accept: application/json" -X POST
"https://api.nature.global/1/signals/{$電気のid(xxxxx_light)}/send"
-H "accept: application/json" -H "Content-Type:
application/x-www-form-urlencoded"
{}

※ 部屋の照明が消えました

参考ページ

感想

現時点では謎のアイデアばかり思いつきますが、ものすごく夢が広がりそうです。 curlで照明をコントロールするのは大分不思議な気持ちです。

わたしからは以上です。