#自宅の環境
Nature Remo Miniを使用中。シーリングライトやエアコンのリモコンを覚えさせてリモコンフリーな環境を実現。iPhoneのショートカットアプリにRemoの操作を登録させておくことで、iPhoneからワンタップで操作できるようにしてある。
#最近の不満
梅雨が明けようやく夏がやってきた。家に帰ると日中の太陽によって部屋がサウナ状態になっている。仕事を終え帰宅して満身創痍な体にこれはよろしくない。
そこで、仕事場を離れるときにNature Remoを遠隔で操作してエアコンをつけておくことで、帰宅したらエアコンの効いた快適空間が出来上がっている状態にしたい。これはRemoのアプリとショートカットのアプリの連携さえできていれば簡単にできる。仕事場を出たときにiPhoneショートカットボタンを押すだけ。しかし、室内の仕事場からは外気温がわからないため、仕事場の建物を離れ外に出るまで今日はエアコンが必要かどうか知る術がない。
#解決策
Nature Remoには温度センサーが内蔵されている。今回はそれを利用して、
1.iPhoneショートカットをタップ
2.Nature RemoがAPI経由で現在の室温を取得
3.28℃以上だったら冷房を入れる
4.冬用に18℃以下だったら暖房を入れる
というショートカットを組むことにした。この記事ではそのやり方を説明する。
作るのが面倒くさいと感じる人は、記事の最後に今回作成したショートカットの共有リンクを貼っておくのでそれを利用されたし。
##1.Nature Remoのアクセストークンの取得
下記の記事を参考にアクセストークンの取得まで行う。
https://blog.yuu26.com/nature-remo-api-tutorial/
##2-1.iPhoneショートカットの作成と概要
仕組みだが、
1.URLの内容取得でNature Remoの情報を取得
2.テキスト化
3.温度に関する項目を抽出
4.温度の数値のみを抽出
5.小数点第二位を四捨五入
6.28℃以上だった場合、現在の室温を表示し、冷房をつけるか尋ねる
-はいだったら、冷房をつける、終了
-いいえだったら、何もしない、7へ
7.18℃以下だった場合、現在の室温を表示し、暖房をつけるか尋ねる
-はいだったら、暖房をつける、終了
-いいえだったら、何もしない、8へ
8.現在の室温を表示する
とした。
##2-2.ショートカットの中身
以下の順番でショートカットの構築を行う。
スクリーンショットも載せておくが、どんなアクションを使用しているのかわからないことがよくあるので、以下に文章でまとめておく。
タイトル:アクションの名前
!!で囲んである文字:マジック関数(ショートカット編集画面で青色になってる文字)
URL: https://api.nature.global/1/devices
方法: GET
ヘッダ:
- キー: Authorization
- テキスト: Bearer {取得したアクセストークン、このカッコは不要}
!URLの内容! で !"val":[\w/:%#\$&\?\(\)~\.=\+\-]+! に一致
!一致! を !カスタム! !:! で分割
!テキストを分割! から !項目のインデックス! の !2! を取得
!リストからの項目! を !10分の1! に四捨五入
変数 !室温! を !端数処理済みの数値! に設定
もし !室温! !値がない! ならば
アラート !再試行しますか?! を表示
タイトル: Error: value is null.
キャンセルボタンを表示: オン
!帰宅します! を実行
その他の場合
次の場合に終了
もし !室温! !次より大きい! !28! ならば
お疲れ様でした。
現在の室温は !室温! ℃と大変暑いです。
冷房をつけますか?
プロンプト: !テキスト!
はい
いいえ
はい
!冷房28℃! を実行
いいえ
メニューの終了
その他の場合
もし !室温! !次より小さい! !18! ならば
お疲れ様でした。
現在の室温は !室温! ℃と大変寒いです。
暖房をつけますか?
プロンプト: !テキスト!
はい
いいえ
はい
!暖房20℃! を実行
いいえ
メニューの終了
その他の場合
お疲れ様でした。
現在の室温は !室温! ℃です。
ご帰宅お待ちしています。
次の場合に終了
次の場合に終了
#配布用ショートカット
以下のリンクから今回作成したショートカットがインストールできます。アクセストークンの項目は空欄になっているので各々で埋めてください。
https://www.icloud.com/shortcuts/ecfa584665c04bf2b265fcac56b54794
[追記:2020-08-16]
外出先だと通信環境によって室温が取得できない時がよくある(2回ショートカットを起動させないと使えない)ので、室温取得時の値が無かった場合のフィードバック機能を追加しました。具体的には室温の四捨五入処理後にif文を追加することで、nullだったら再びショートカットを起動、値があったらそのまま次へ、と条件分岐させました。
#終わりに
後半のエアコンの操作過程をなくせば現在の室温を表示するだけという使い方もできます。
Nature Remoの場合、湿度や照度も取得できるので除湿機やスマートカーテンと組み合わせると面白いかもしれません。
#参考文献
Nature Remo API で部屋の温度・湿度を取得する
https://blog.yuu26.com/nature-remo-api-tutorial/