1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PCからIoT家電(NatureRemo)を操作してみる

Last updated at Posted at 2024-10-18

はじめに

最近、スマートホーム家電を購入したのですが、デスクで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.pyw1に変換すると、ダブルクリックするだけでPythonスクリプトをバックグラウンドで実行できます。そして、ランチャーアプリなどに配置すればPCから家電を操作できるリモコンの完成です。
{E9E7E649-6FCD-42F6-A069-3BBAD8E74E0F}.png

iPhoneのショートカットでNatureRemoAPIを叩いてみる(おまけ)

iPhoneでNatureRemoに登録しているエアコンの温度を変更するにはNatureRemoのアプリを開かないといけなかったので、ショートカットを作成し、ホーム画面からも操作できるようにしてみました。

まず、温度を取得する関数的なショートカットを作成します。

レシピ

IMG_1228.jpeg

URLは以下を設定します。

https://api.nature.global/1/appliances

URLの内容を取得は以下を設定します。
方法GETに、ヘッダに以下の内容を追加します。

キー: accept           テキスト: application/json
キー: Authorization    テキスト: Bearer APIアクセストークン

これで温度を取得することができるようになったので、次に、このショートカットを使ってエアコンの温度を変更するショートカットを作成します。

レシピ

IMG_1230.jpeg

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公式記事のユーザーのユニークな使い方で紹介されていたアイデアが参考になりました。IFTTTなども触ってみたくなりました。

参考にしたサイト

  1. PYW ファイル形式 - Python GUI ソース ファイル

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?