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

Nature RemoのAPIでターミナルから家電を操作してみた
クラウドでコスト削減はこちら

周囲で空前の音声で家電を動かすブームがきているのですが、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を入力してください。

自分の情報を取得

1
2
3
4
5
$ curl -H 'Authorization: Bearer
{$TOKEN}'
-H "accept: application/json" -X GET
{"id":"xxxxxxx","nickname":"じゅん"}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
$ curl -H 'Authorization: Bearer
{$TOKEN}'
-H "accept: application/json" -X GET
[
    {
        "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を実行します。

1
2
3
4
5
6
7
$ 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で照明をコントロールするのは大分不思議な気持ちです。

わたしからは以上です。

AWS利用料業界最安値に挑戦します!