0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iOSショートカットレシピ Nature Remoの明るさセンサーの値を読む

Last updated at Posted at 2023-04-30

Nature RemoCloud APIを使って様々な操作をプログラムすることができます。ここでは、明るさセンサーの現在値を読むショートカットを解説します

ショートカット

Remoから明るさセンサーの現在値を読むショートカットを示します
Remo明るさ.jpg

ショートカットの構成

このショートカットは

  1. Remoのcloud APIに現在値リクエストを送る
  2. 返ってきた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)

このスクリプトを使って、現在の部屋の明るさに応じて動作するショートカットを作ることができます

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?