Nature Remo はCloud APIを使って様々な操作をプログラムすることができます。ここでは、明るさセンサーの現在値を読むショートカットを解説します
ショートカット
Remoから明るさセンサーの現在値を読むショートカットを示します
ショートカットの構成
このショートカットは
- Remoのcloud APIに現在値リクエストを送る
- 返ってきたJSON情報を解析して明るさの値を取り出す
1.クリップボードに値をコピーする( 呼び出した別のショートカットに渡すため)
という3つのサブタスクで構成しています
Remoのcloud APIに現在値リクエストを送る
「【Nature Remo】APIの利用例まとめ」などにあるようにPC(Mac, Windows, Linux)からはcurlコマンドで情報を取得、操作します。次のコマンドで
$ curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXX"
XXXXXXXXはアクセストークン(トークンの取得方法は→こちらのページなど)
自分のリモコンの現在の状態が次のJSON形式で得られるので、その中から明るさ情報を取り出します。
[{"name":"Remo",
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
"created_at":"2021-07-29T23:58:16Z",
"updated_at":"2023-04-30T00:06:13Z",
"mac_address":"xx:xx:xx:xx:xx:xx",
"bt_mac_address":"xx:xx:xx:xx:xx:xx",
"serial_number":"XXXXXXXXXXXXXX",
"firmware_version":"Remo/1.6.4",
"temperature_offset":0,
"humidity_offset":0,
"users":[{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"nickname":"XXXXXX",
"superuser":true}],
"newest_events":{
"hu":{"val":71,
"created_at":"2023-04-30T01:15:46Z"},
"il":{"val":97,
"created_at":"2023-04-30T01:21:59Z"},
"mo":{"val":1,
"created_at":"2023-04-30T00:38:07Z"},
"te":{"val":22.8,
"created_at":"2023-04-30T01:21:46Z"}}}]
明るさ情報は"il"(illumination)タグの"val"の値なので、"newest_events"/"il"/"val" の値を取り出します。
この処理は
[URL/{https://api.nature.global/1/devices}] (1)
URLアクションでAPIのURLを設定し
[{URL}の内容を取得/
方法: GET
ヘッダ:
accept: application/json
Authorization: Bearer XXXXXXXX"] (2)
URLの内容を取得アクションでcurlコマンドを実行してリクエストを送信します。curlの引数やオプションの文字列はそれぞれのアクションのパラメータに記述します。curlの2つの-Hオプションは「ヘッダ」の2つのパラメータとなります。Authorizationタグの値は文字列"Bearer"にスペースを入れて、前に取得したアクセストークンの値を入れます。このアクションの{URL}に直接URL文字列(https://...)を入力する例を示す記事もありましたが、うまく動作しませんでしたので、一度URLアクションにURL文字列を入力する形にしました。
返ってきたJSON情報を解析して明るさの値を取り出す
[リストから項目を取得/{URLの内容}から{最初の項目}を取得] (3)
curlリクエストでAPIから返ってきた文字列全体が{URLの内容}で一般的には複数の項目が帰ってくる場合もあるので{最初の項目}で一つを取り出します。今回の場合は一つしか返ってこないので
、同じものです。
[辞書の値を取得 / {リストからの項目}内の{newest_events.il.val}の{値}を取得] (4)
取り出したJSON文字列から順にnewest_events/il/valの値を読み出します。キーを階層的に記述することで1回のアクションで読みだせます。この値が現在の部屋の明るさを示す数値です。照明を消したりして変化することを確認してみてください。値に反映されるのに少し時間がかかります(数秒)
クリップボードに値をコピーする
このショートカットをサブルーチンとして別のショートカットから利用するため明るさの値をクリップボードにコピーします。(別のショートカットに値を渡すスマートな方法をご存じの方、教えてください)
[クリップボードにコピー / {辞書の値}をクリップボードにコピー] (5)
このスクリプトを使って、現在の部屋の明るさに応じて動作するショートカットを作ることができます