1
2

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家電を操作したい

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と変換すると、ダブルクリックするだけでスクリプトをバックグラウンドで実行できます。あと、アイコンがダサいのでgoogle Iconsからいい感じのアイコンを引っ張ってきます。
最後にランチャーアプリなどに配置すれば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公式記事のユーザーのユニークな使い方で紹介されていたアイデアが参考になりました。生活や環境に合わせてIoT家電の活用ができるのは楽しかったです😌

参考にしたサイト

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

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?