IRKitをPowerShellから制御します
IRKitはネットワークから操作できるリモコンです。 HTTPからRESTfull APIを使用して操作することができます。
毎日定時に実行したいものは、Windowsのタスクスケジューラを使用して実現しています。
次の環境で動作確認を行っています。
- OS : Windows 10 Pro
- PowerShell : 5.1
操作したい機器・使用目的を引数で指定して実行します。
.\winter_asa_danbo.ps1 "LIGHT"
下記の引数を使用できます。
- "ON" : 冬に暖房をONにする
- "OFF" : 暖房を切る
- "LIGHT" : 照明を最大の明るさでONにする
- "STEPUP" : 朝、気持ちよく起きられるように徐々に照明を明るくさせる
- "BLACKOUT" : 内部処理用。"STEPUP"で照明を明るくさせる前に暗くしておく
毎日定時にエアコンをONにしますが、切り忘れ防止のため出勤時刻にOFFにするよう、タスクスケジューラを設定しています。 しかし、休日は家にいるためエアコンなどをOFFにしたくありません。
このため、休日判定を行い、処理を行わないようにします。
ある日が祝日であるかをPowerShell単体で判定するのは難しそうだったので、Google Calendarの「日本の休日」カレンダーを取得して判断しています。
現状、icalファイルをダウンロードして解析した上で判断していますが、APIを使う方がよいかもしれません。
IRKitを操作するには、IRKitのIPアドレスを知る必要があります。
これは、dns-sdコマンドで取得できます。
ただし、Ctrl + Cで終了させないといけなかったり、インスタンス名を取得してからでないとIPアドレスを取得できなかったりといったことがあるので、取得処理が若干複雑になっています。
また、この処理は10秒ほどかかるため、一定時間内は前回取得値を使い回しています。
(IRKitに固定IPアドレスを割り当てれば済む話だと思いますが)
実行結果はログに出力して保存します。