1. はじめに
最近、スマートホーム家電を購入したのですが、デスクでPCを眺めているのにスマホを開かないと操作ができないのはスマートでないと感じました。多くのデバイスは専用のスマホアプリからの操作のみとなっておりPCアプリがないので、このちょっとした不便を解消しようと思います。
2. 使用技術・環境
API | Nature Remo Cloud API |
---|---|
言語 | Python 3.12.0 |
OS | Windows11 |
3. 実装
3.1 アクセストークンの取得・設定
以下のリンクから自分のアクセストークンを新規発行します。
3.2 リクエストの送信
まずは自分のNatureRemoアカウントに登録してある家電の一覧を取得してみます。
.env
にアクセストークン(ACCESS_TOKEN
)を保存しておきます。
import os
import requests
from dotenv import load_dotenv
load_dotenv()
# アクセストークンを設定
ACCESS_TOKEN = os.getenv("ACCESS_TOKEN")
# ヘッダーを設定
HEADERS = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Accept": "application/json"
}
# 家電一覧の取得
url = "https://api.nature.global/1/appliances"
response = requests.get(url, headers=HEADERS)
appliances = response.json()
print(appliances)
レスポンスから操作したい家電のappliance_id
を記録しておきます。今回はシーリングライトをオンにする操作をしてみます。
import os
import requests
from dotenv import load_dotenv
load_dotenv()
ACCESS_TOKEN = os.getenv("ACCESS_TOKEN")
APPLIANCE_ID = os.getenv("APPLIANCE_ID") # appliance_idを設定
# ヘッダーを設定
HEADERS = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Accept": "application/json"
}
# ライトをオンにする
url = f"https://api.nature.global/1/appliances/{APPLIANCE_ID}/light"
data = {
"button": "on"
}
response = requests.post(url, headers=HEADERS, data=data)
print(response.status_code)
3.3 GUI操作の実装
これでPCから家電を操作できるようになりましたが、マウスでポチポチ操作できるようにしたいです。まず、Pythonファイルの拡張子を変更します。.py
を.pyw
に変換すると、ダブルクリックするだけでPythonスクリプトをバックグラウンドで実行できます。そして、ランチャーアプリなどに配置すればPCから家電を操作できるリモコンの完成です。
4. その他の実装方法
4.1 Pythonライブラリ
ライブラリから操作することもできます。
-
インストール
Python3.8でのサポートになる点に注意します。
pip install nature-remo
-
リクエストの送信
先ほどと同様に自分のNatureRemoアカウントに登録してある家電の一覧を取得してみます。
import os from dotenv import load_dotenv from remo import NatureRemoAPI load_dotenv() ACCESS_TOKEN = os.getenv("ACCESS_TOKEN") api = NatureRemoAPI("ACCESS_TOKEN") appliances = api.get_appliances() print(appliances)
エアコン操作
エアコンの設定を変更したいときは`update_aircon_settings`メソッドを使い、引数に実行したい操作コマンドを指定します。api.update_aircon_settings(appliances[0].id, operation_mode='cool', temperature=26, air_volume=1, air_direction='auto')
-
operation_mode : モードの操作
モード コマンド 冷房 cool 暖房 warm 除湿 dry 送風 blow -
temperature : 温度の操作
モードが冷房、暖房、除湿のみ設定可能で16~30℃の値をとれる
-
air_volume : 風量の操作
すべてのモードで設定可能で1~4,autoの値をとれる
-
air_direction : 風向の操作
すべてのモードでautoかswingを設定できる
-
button : 任意の操作
api.update_aircon_settings(appliances[0].id, button='power-off')
ライト操作
ライトの設定を変更したいときは`send_light_infrared_signal`メソッドを使い、引数に実行したい操作コマンドを指定します。api.send_light_infrared_signal(appliances[1].id, 'off')
操作 操作コマンド オン on オフ off 全灯 on-100 常夜灯 night お気に入り on-favorite 色温度(暖) colortemp-up 色温度(寒) colortemp-down 明るさを上げる bright-up 明るさを下げる bright-down 制限の確認
現在のAPIの呼び出し回数や呼び出し制限などを確認することができます。user = api.get_user()
とすると自分のアカウントに呼び出し制限のステータスがセットされます。
- api.rate_limit.limit: 5分以内に受けられるリクエスト数の上限
- api.rate_limit.remaining:次のリクエスト制限のリセットまでに受けられる残りリクエスト数
- api.rate_limit.reset:リクエスト数の制限をリセットする時刻(UTC)
-
4.2 iPhoneのショートカット
iPhoneでNatureRemoに登録しているエアコンの温度を変更するにはNatureRemoのアプリを開かないといけなかったので、ショートカットを作成し、ホーム画面からも操作できるようにしてみました。
まず、温度を取得する関数的なショートカットを作成します。
URL
は以下を設定します。
https://api.nature.global/1/appliances
URLの内容を取得
は以下を設定します。
方法
をGET
に、ヘッダ
に以下の内容を追加します。
キー: accept テキスト: application/json
キー: Authorization テキスト: Bearer APIアクセストークン
これで温度を取得することができるようになったので、次に、このショートカットを使ってエアコンの温度を変更するショートカットを作成します。
URL
は以下を設定します。
https://api.nature.global/1/appliances/エアコンのID/aircon_settings
URLの内容を取得
は以下を設定します。
方法
をPOST
に、ヘッダ
に以下の内容を追加します。
キー: accept テキスト: application/json
キー: Authorization テキスト: Bearer APIアクセストークン
キー: Content-Type テキスト: applicaion/x-www-form-urlencoded
また、本文を要求
をフォーム
に設定し、temperature
を計算結果
に設定します。それ以外は空白でOKです。
これでiPhoneのホーム画面などにショートカットを置くことで、ワンタップでエアコンの温度変更ができるようになりました👏
5. おわりに
NatureRemo公式記事のユーザーのユニークな使い方で紹介されていたアイデアが参考になりました。
6. 参考にした記事など