はじめに
最近、スマートホーム家電を導入したのですが、デスクでPCを眺めているのにスマホを開かないと操作ができないのはスマートでないと感じました。多くのデバイスは専用のスマホアプリからの操作のみに対応しておりPCアプリなどはサポートいないので、このちょっとした不便を解消しようと思います。
今回は、NatureRemoのPythonライブラリを使用させていただきます。
準備
環境
Windows11
Python 3.8
APIキー
以下のリンクからアクセストークンを新規発行します。
インストール
Python3.8でのサポートとなる点に注意です。
pip install nature-remo
実装
設定
発行したアクセストークンをセットします。
from remo import NatureRemoAPI
api = NatureRemoAPI("access_token")
.get_appliances()
で自分のアカウントに関連付けられた家電のリストを取得できます。これできちんと設定できているか確認します。
appliances = api.get_appliances()
print(appliances[0].type) # 家電のタイプを確認
print(appliances[1])
# AC
# [Appliance(id='my_application_id', device=Device(id='my_device_id', name='my_name', temprature_offset=0, humidity_offset=0, created_at=datetime.datetime(2023, 10, 12, 10, 54, 19, tzinfo=datetime.timezone.utc), updated_at=datetime.datetime(2024, 3, 27, 16, 41, 39, tzinfo=datetime.timezone.utc), firmware_version='Nature-5W1/1.0.5', mac_address='my_mac_address', serial_number='my_serial_number'), model=ApplianceModel(id='my_application_id', manufacturer='Odelic', remote_name='nrl-351n-jp-ch1', name='Odelic LIGHT 007', image='ico_light'), nickname='照明', image='ico_light', type='LIGHT', settings=None, aircon=None, signals=[], tv=None, light=Light(state=LightState(brightness='favorite', power='on', last_button='on-favorite'), buttons=[Button(name='on', image='ico_on', label='ON'), Button(name='off', image='ico_off', label='OFF'), Button(name='on-100', image='ico_light_all', label='All'), Button(name='on-favorite', image='ico_light_favorite', label='Favorite'), Button(name='night', image='ico_light_night', label='Night'), Button(name='bright-up', image='ico_arrow_top', label='Bright'), Button(name='bright-down', image='ico_arrow_bottom', label='Dark'), Button(name='colortemp-down', image='ico_arrow_right', label='Warm'), Button(name='colortemp-up', image='ico_arrow_left', label='Cold')]
エアコン操作
エアコンの設定を変更したいときは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)
GUI操作
これでPCから家電を操作できるようになりましたが、マウスでポチポチ操作できるようにしたいので色々工夫していきます。
まず、Pythonファイルの拡張子を変更します。.py
を.pyw
1と変換すると、ダブルクリックするだけでスクリプトをバックグラウンドで実行できます。あと、アイコンがダサいのでgoogle Iconsからいい感じのアイコンを引っ張ってきます。
最後にランチャーアプリなどに配置すればPC上で操作できるリモコンの完成です。
iPhoneのショートカットでNatureRemoAPIを叩いてみる(おまけ)
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のホーム画面などからワンタップで温度変更ができるようになりました。
おわりに
NatureRemo公式記事のユーザーのユニークな使い方で紹介されていたアイデアが参考になりました。生活や環境に合わせてIoT家電の活用ができるのは楽しかったです😌
参考にしたサイト