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

1. はじめに

最近、スマートホーム家電を購入したのですが、デスクでPCを眺めているのにスマホを開かないと操作ができないのはスマートでないと感じました。多くのデバイスは専用のスマホアプリからの操作のみとなっておりPCアプリがないので、このちょっとした不便を解消しようと思います。

2. 使用技術・環境

API Nature Remo Cloud API
言語 Python 3.12.0
OS Windows11

3. 実装

3.1 アクセストークンの取得・設定

以下のリンクから自分のアクセストークンを新規発行します。

3.2 リクエストの送信

まずは自分のNatureRemoアカウントに登録してある家電の一覧を取得してみます。

.envにアクセストークン(ACCESS_TOKEN)を保存しておきます。

check_appliances.py
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を記録しておきます。今回はシーリングライトをオンにする操作をしてみます。

light_on.py
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から家電を操作できるリモコンの完成です。

image.png

4. その他の実装方法

4.1 Pythonライブラリ

ライブラリから操作することもできます。

  1. インストール

    Python3.8でのサポートになる点に注意します。

    pip install nature-remo
    
  2. リクエストの送信

    先ほどと同様に自分の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のアプリを開かないといけなかったので、ショートカットを作成し、ホーム画面からも操作できるようにしてみました。

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

レシピ

image 1.png

URLは以下を設定します。

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

URLの内容を取得は以下を設定します。

方法GETに、ヘッダに以下の内容を追加します。

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

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

レシピ

image 2.png

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. 参考にした記事など

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?