Nature Remo は通常付属の赤外線リモコンで操作するさまざまな家電を付属のリモコンの替わりにRemoの汎用リモコンが操作することで、PCやスマホから家電を制御できるスマートリモコンです。TVの電源入れ→ケーブルテレビの電源入れ→入力をHDMIに設定、みたいな操作を1つのコマンドに設定でき、Siriとの連携もスマートで大変便利です。しかし、僕の部屋の照明はリモコンの反応が悪くRemoからの1回のON/OFFコマンドでは反応しないことがあります。指で押すリモコンならば、反応があるまで繰り返しボタンを押せばいいのですが、何回押せば照明が点灯(消灯)するかはわかりません。また、ONコマンド、OFFコマンドは同じコマンドでトグル動作になっています。そこで自動化するとなると部屋の明るさが変化するまでボタンを押す(信号を送る)という処理を行います。
ショートカット
Remoを使って部屋の照明をON/OFFするショートカットを示します
ショートカットの構成
概略のフローチャートは次のような感じです
最初に操作前の明るさを記録して、ON/OFFコマンドを出力し、明るさが変わったら照明器具がコマンドに反応して実際にON/OFFたとして処理を終了します。処理のポイントは
- コマンドは最大5回繰り返します
- センサーの計測周期を待つため、コマンドを出力した後、10秒間待ってから明るさを計測します
- リモコンの信号はON/OFF共通(トグル動作)
- ON/OFF共通のショートカットにするため、明るくなったら(暗くなったら)でなく変化があったら、器具が反応したとする
部屋の明るさ値を取得する
このアクションはRemoのcloud APIを使ったショートカットですが、何度も利用するので、別のショートカットにして、サブルーチンのように読んでいます。明るさの値はクリップボード経由で受け取ります。
照明にON/OFFコマンドを送る
Remoのアプリで設定した、赤外線リモコンから学習したON/OFFコマンドを出力します。
コマンドに反応したかを判断する
ON/OFFコマンドを送信した後、器具の反応時間と明るさセンサーの検出周期を待つため10秒間待機します。待機後、明るさが処理前の明るさから大きく変化していればコマンドに反応したとして、処理を終了します。
pythonのbreak文のような処理が見当たらなかったので、ショートカットを終了しています