Amazon 初売り

« 無理やり書いてる | トップページ | Nature Remo 3 本体のセンサーの情報を jq で絞り込み取得する »

2022.02.05

Nature Remo Cloud API について(その2)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo Cloud API について(その1)」の続きで Nature Remo の API について書いていきます。

目次


赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

Nature Remo の API は2種類ある

  1. Nature Remo Cloud API
  2. Nature Remo Local API

単純に Nature Remo の API という場合、インターネット経由で使う Cloud API のことだと思って良いでしょう。

Nature Remo Local API

Local API の方は、スマートリモコン Nature Remo シリーズの操作に使います。
具体的には、受信した最新の赤外線(IR)信号を取得したり、赤外線(IR)信号を送信するのに使います。

Local API は Nature Remo クラウドで障害が発生した場合などでも使えるのがポイントです。

Local API のことは、別の記事として書くことにして、この記事では Cloud API について書いていきます。

Nature Remo Cloud API

Cloud API は、Nature Remo クラウドを利用してスマートリモコン Nature Remo シリーズや エネルギーをモニタリングする Nature Remo E シリーズにアクセスする時に使う。

Nature Remo クラウドで外部に公開している API の機能の URL (エンドポイントという)は、22個存在する。しかし、全体で22個あるものの情報の登録/更新/削除は、スマホの「 Nature Remo アプリ」を使って操作した方が便利そうである。

なので実際に使うのは、下記の3つが中心になると思う。

  • スマートリモコン Nature Remo 本体が持つセンサー情報を取得
  • 登録した電化製品の情報を取得
  • 電化製品のリモコンを操作

電化製品の情報を取得には Nature Remo E シリーズと接続するスマートメーターの情報取得も含まれる。

Nature Remo クラウドへの接続には、 OAuth2 (オーオース2.0)という認証/認可の仕組みを使う。

このときに必要になるのが、アクセストークンという文字列だ。

これを事前に取得する必要がある。

Nature Remo のアクセストークンを取得する

https://home.nature.global/
にアクセスします。

メールアドレスを入力するとログイン用URLが届きます。

ログインして求められる権限を許可します。

Access tokens の画面にある「Genarate access token」ボタンを選択。

アクセストークンは一度しか表示されないため、「Copy」ボタンを選択して安全な場所に記録します。

アクセストークンを流出させてしまうと、Nature Remo で操作できる家電に外部からアクセスされるので注意しましょう。

curl コマンドで Nature Remo Cloud API を使う

Nature Remo Cloud API を使う方法としては、curlコマンド、Python、JavaScriptなどの開発言語を使う方法があります。

簡単に検証できるのは、インストール作業が不要なcurlコマンドです。(Windows 10 以降や Raspbery Pi の OS ならたぶん標準で入っている

最初は curl コマンドでのやり方から紹介します。

もともと curl コマンドで実行するつもりで過去記事「jsonデータを整形するjq(使う前の準備まとめ)」を書いたので。

この記事では Windows のコマンドプロンプトで使う curl で説明します。

ここで Windows のコマンドプロンプトと「ことわり」を入れているのは、実行環境でスペースを含むパラメータを与える時のくくり文字が異なるためです。

例えば、OAuth2のヘッダを入力する際、"Authorization: Bearer XXXXXXXX"というヘッダを付けます。

この時、Windows のコマンドプロンプトだとダブルクォート「"」でのくくる必要があります。
Linux 系で curl を使うときはシングルクォート「'」でくくります。
Windows でも PowerShell で curl を使う場合は、ダブルクォートでも、シングルクォートでも良いのですが、Windows のコマンドプロンプトで curlを使うときは、ダブルクォートでくくらないといけません。

この違いのため、curl コマンドは Linux系で使われることが多いコマンドのため、ネットでサンプルとして拾ってきた curl コマンドの例を Windows のコマンドプロンプト上の curl で使うとエラーになるのです。

ちょっと余談をしてしまったが、早速、Nature Remo デバイスの情報を取得してみよう。

サンプルになるCurlコマンドを得る方法は、下記の通りだ。(画像はクリックで拡大します)

[ GET /1/devices ] をクリックして開く。

Natureapi_01

[ Try it out ] ボタンをクリック。

Natureapi_02

[ Execute ] ボタンをクリック。

Natureapi_03

すると Curl という欄が表示される。これがサンプルである

Natureapi_04

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json"

ただし、このままでは OAuth2 による認証がされていないため、Server response が 401 Error (認証エラー)になっている。
このため、サンプルの Curl コマンドに OAuth2 認証をするヘッダ「 -H "Authorization: Bearer 取得したアクセストークン"」を付ける必要がある。

ヘッダを付けて実行すると https リクエストの結果(レスポンス)である json 形式のデータが返ってくる。

ただし、整形されていない json データのため、読みづらい。

そこで、パイプで jq を使って json データを整形する。( jq のダウンロードは「jsonデータを整形するjq(使う前の準備まとめ) 」を参照)

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer 取得したアクセストークン" | jq .

アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1081 100 1081 0 0 1081 0 0:00:01 --:--:-- 0:00:01 1356
[
{
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {}
},
{
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {
"hu": {
"val": 41,
"created_at": "2022-02-05T14:06:34Z"
},
"il": {
"val": 64,
"created_at": "2022-02-05T14:10:32Z"
},
"mo": {
"val": 1,
"created_at": "2022-02-05T14:05:42Z"
},
"te": {
"val": 20.4,
"created_at": "2022-02-05T14:09:34Z"
}
}
}
]

ちゃんと Remo E lite と Remo の情報を取得できている。

ちなみに Remo の newest_events の部分が、Nature Remo 3 本体のセンサーの情報で val が値である。

hu:湿度(humidity)
il:照度(illuminance)
mo:人感(motion)
te:温度(temperature)

なお、人感センサーは 0 と 1 で表現されており、0:人がいない、1:人がいるという意味だが、ここでいう「人がいる/いない」は「動く熱源」で検知しているようだ。

情報ソースはコチラの記事「Nature Remoの人感センサーは、「動く熱源」を感知してる?【まとめ】

Nature Remo Cloud API が使えない時

さて、Nature Remo Cloud API が使えない時のことも書いておこう。

公式サイトの「【11/26 11:12更新】システム障害のお詫びと復旧のお知らせ」を見ると Nature Remo クラウドは、AWS(アマゾン・ウェブ・サービス)を利用していて、AWS での障害の影響を受けるようですね。

Nature Remo が赤点滅して正常に動作しない」の図解から、AWS で障害が起きたときは、Nature Remo が赤く早い点滅(1秒間に数回点滅)するのでしょう。
AWS の復旧を待つ必要がありそうです。

赤く早い点滅の解決策が知りたい」にも解決のためのステップが載っているので参考になるかもしれません。

なお、遅い赤点滅(1秒間に1回)の場合、Nature Remo と Wi-Fi ルータ間の問題なので、Wi-Fi ルータをリセットすると良いでしょう。
以前にかげさんも Wi-Fi ルータが不調時にこの状態になり、Wi-Fi ルータをリセットで復旧したことがあります。

ほかにも使えないケースはあるかもしれませんが、分かる範囲ではこんなところです。

ここまではOKだ



赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

 このエントリーをはてなブックマークに追加

| |コメント (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。