Open4
Nature RemoのAPIを使ってみる
目標
- GitHub ActionsからNature RemoのAPIを実行して家電操作したい
モチベーション
- Nature Remoでのアプリでもスケジュール設定はできるが、筆者はすでに10個以上の設定を入れていてメンテが面倒
- cronのように設定できるとコマンドのコピペで設定できるので楽そう
- GitHub Actionsでcronのようにスケジュールを組めるという話を聞いたので試してみる
APIでエアコンを止めてみる
Token取得
- 公式ページで、まずはこちらからAPIを実行するのに必要なTokenを利用する
必要なID情報を取得
- まずはDevice情報を取得する
- 以下のコマンドの
{Token}
に、上記で取得したTokenを入れる
- 以下のコマンドの
- 正常に実行できていれば、Device情報が返却される
curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -k --header "Authorization: Bearer {Token}"
- 次にDevice情報内にあるIDを利用して、Appliance(家電)情報を取得する
- 正常に実行できていれば、Nature Remoに登録済みのAppliance情報が返却される
curl -X POST "https://api.nature.global/1/appliances/{Device ID}/aircon_settings" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "temperature=23&button=power-off" -k --header "Authorization: Bearer {Token}"
エアコンを止める
-
/1/appliances/{appliance}/aircon_settings
を利用することでエアコンを止めることができた
curl -X POST "https://api.nature.global/1/appliances/{Appliance ID}/aircon_settings" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "button=power-off" -k --header "Authorization: Bearer {Token}"
参考
API詳細は、以下のSwaggerを参照してやりたいことを探す。正直、自分のやり方が正しいのかはよく分かってない。。
APIでエアコンをオンにする
-
-d
の中に温度等を設定すれば良い。例えば、「温度25度・冷房・風量1」と設定したいとするとtemperature=25&operation_mode=cool&air_volume=1
をリクエストに含めて送信する。
curl -X POST "https://api.nature.global/1/appliances/{Appliance ID}/aircon_settings" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "temperature=25&operation_mode=cool&air_volume=1" -k --header "Authorization: Bearer {Token}
Access TokenのGitHubへの保存
- 以下の記事にあるようにTokenをGitHub上で保存した方がより安全そう。