Nature Remo Cloud APIで家電を自動で制御する
この記事はmstdn.maud.io Advent Calendar 2024の9日目の記事です。
Nature Remoはお持ちでしょうか?
Nature Remoはスマートリモコンです。Wi-Fiで接続でき、赤外線の送受信や温度・湿度センサー等を備えているので、家電のリモコンの代わりにスマートフォンから家電の操作ができます。Nature公式ストアやAmazonから買えます。
Nature Remoはスマートフォンアプリの他にAPIによりインターネット経由で操作できます。iOS 17まではショートカットAppからも操作できたのですが、iOS 18の仕様変更によりショートカットからの操作ができなくなってしまいました。なので、代替案としてNature Remo Cloud APIを使うことにしました。
今回の記事では、Nature Remo Cloud APIとiOSのショートカットを組み合わせて、日没時に自宅の照明を自動で切り替えるセットアップを紹介します。
想定読者
- Nature Remoシリーズをお持ちの方
- 自宅の家電を自動で制御したい方
- IoTをやってみたい方
- 電気代を節約したい方
目的
日没時に部屋の照明を寒色から暖色に切り替える。
動機
- 部屋の中にいても日没したことが感覚的に分かるようにしたいから
- 以前はショートカットAppのみで実現できていたが、iOSの仕様変更で使えなくなったため
方法
ショートカットAppのオートメーションで日没時にNature Remo Cloud APIを実行するよう設定する。
手順
1. Nature Remoを準備する
Nature Remoは買いましたか?ではスマホアプリで設定しましょう。Nature Remoは基本的に電源ボタンの信号だけで機器を識別してくれますが、家電によっては独自コマンドがあるため、赤外線信号を個別のボタンに登録する機能があります。
例として、私が使っているパナソニックのシーリングライトの独自コマンドをお見せします。このシーリングライトは通常の白色光の他に、明るめの暖色と暗めの暖色(くつろぎ)のモードがあります。これは日没後に白色の明るい光を浴びたくない私にとってはとても重宝しています。惜しむらくは機器自体には日没時に切り替える機能がないことです。
パナソニックのシーリングライトのコマンド。
2. Nature Remo Cloud APIのアクセストークンを取得する
以下のページからアクセストークンを取得します。
アクセストークンを取得する。
3. Postmanを準備する
APIリクエストをテストするためにPostmanを使います。
4. Postmanからリクエストを送信する
4.1. 認証情報を設定する
「Nature Remo Cloud API」(名前は適当でいいです)というCollectionを作成します。
「Auth」タブの「Type」で「Bearer Token」を選択し、「Token」に {{token}}
を指定します。
認証の設定
「Variables」タブで token
という名前の変数を追加し、「Current value」に先ほど取得したアクセストークンを入力します。
アクセストークンの設定。
これで認証の設定が完了しました。
4.2. 家電IDと信号IDを取得する
CollectionのVariablesに base_url
を追加し、Initial valueを https://api.nature.global に設定します。
左ペインのCollectionを右クリックし、「Add request」を押下します。「Fetch the list of appliances」とか適当な名前を付けてください。
メソッドをGETに設定し、URLを {{base_url}}/1/appliances
に設定します。
家電取得リクエストの設定。
「Send」でリクエストを送信すると、下部パネルにレスポンスのJSONが表示されます。
家電取得リクエストの結果。
出力が長くて見づらいのでVSCodeにコピーしましょう。シーリングライトっぽい項目を見つけます。
シーリングライトの情報。
1つ目の赤枠が家電IDになります。次に信号IDですが、今回は「暖かい光」に切り替えたいので2つ目の赤枠を使います。
CollectionのVariablesに戻って変数を設定します。 appliance_id
と signal_id
を設定してください。Current valueに赤枠の文字列をコピーします。
:::note alert
繰り返しになりますが、「Initial value」には何も入力しないでください。
:::
家電IDと信号IDの設定。
次に信号を送信するためのリクエストを作成します。Collectionに「Send a signal」などの名前でリクエストを作成してください。今度はメソッドをPOSTに、URLを {{base_url}}/1/signals/{{signal_id}}/send
に設定します。
Sendでリクエストを送信すると、シーリングライトの光が変わるはずです。これはスクリーンショットでは撮れないのでお家で確かめてください。
5. iOSのショートカットを設定する
iPhoneでショートカットAppを開き、「オートメーション」タブからオートメーションを追加します。「時刻」オートメーションを追加しましょう。
「時刻」を選択する。
「日の入」時に実行するよう設定する。
「新規の空のオートメーション」を押します。単純に照明を切り替えるリクエストを送信するだけのフローを書いても良いのですが、その場合だと在宅していない時でも照明がオンになってしまい、電気代を消費します。なので、iPhoneの現在地をもとに在宅かどうかを判定し、在宅時のみに照明を切り替えるフローを組みます。
以下のようなフローを作成します。
現在地の取得と条件分岐。
信号送出リクエストの送信。
フローチャートで書くとこうなります。
これで、在宅時は日没後に照明が暖かい光に切り替わり、外出時はリクエストを送信しないフローができました。
応用
Nature Remo Cloud APIとショートカットAppの組み合わせはアイデア次第で応用が利きます。
帰宅時に時間帯に合わせて照明を切り替える
オートメーションの「到着」を使って帰宅時に処理を実行します。
「到着」を選択。
日の入の前後の判定。
起床時の外気温によってエアコンのオンオフを切り替える
オートメーションの「睡眠」から「起床」を選択し、アラームを止めた時点で処理を実行します。または、「時刻」で決まった時間に実行しても良いです(目が覚めた時に部屋が暖まっているようにしたい)。
ほとんどのエアコンにはタイマー機能があると思いますが、今回はショートカットを使って、外気温によってオンオフを切り替えてみます。今回も在宅時のみ実行されるように現在地の取得と条件分岐を入れます。
気温が10 ℃未満の場合、エアコンをオン。
最後に
ここまで読んでいただきありがとうございます。他におすすめの使い方があれば是非コメントして頂けると嬉しいです。
Discussion