暑い夏に備えていまある稼働資産を丸ごと活かしてiPhoneとRaspberry Piで自動扇風機を実現
暑い夏が少しづつ近づいてくる雰囲気を感じ始めたので、毎年やっている書斎のクールダウン対策を、今年もチャレンジすることにしました。
書斎には、複数台のマックやらラズパイやらが稼働しているので、夏になると、各デバイスからの排気熱で室温がぐっと上昇します。なので、人を快適にするというよりは、扇風機で排気熱を冷却することをテーマに、今年はUSB仕様のミニ扇風機を1台設置することにしました。
今年のテーマは、いまある稼働資産を最大限活かして、新規購入はせず、稼働中のラズパイ環境への変更を最小限に抑えることにしました。というのも、自動扇風機は季節モノなので、あまり手を掛けたくないからです。
< 用意するモノ >
・毎年使っているUSB仕様のミニ扇風機。
“Keynice USB扇風機 卓上 & クリップ型 静音 ミニ扇風機 風量2段階調節 360度角度調整 4枚羽根 USBファン“は、USBからの電源供給で扇風機をオン・オフできるので、今回のような仕組みにはピッタリの製品です。風量は二段階調整ができ、強にすると結構強い風が吹き付けます。首振りやタイマーなどの機能はありませんが、羽の回転音も静かで気に入っています。
・稼働中のラズパイ。
ラズパイと言っても”Raspberry Pi 3 model B“限定です。今回採用するUSB電源制御のコマンドは、”Raspberry Pi 4“や”Raspberry Pi Zero W“では動作しませんでした。ちなみに、他のモデルは手元にないので試していません。
今回、ラズパイのUSBポートにミニ扇風機を接続するわけですが、4つあるUSBポートを一括して電源オン・オフするので、ミニ扇風機以外のデバイスをUSBポートに接続できませんので、その点注意して下さい。
・ホームとショートカットが使えるiPhone。
“ホーム“アプリ (“HomeKit“)と”ショートカット“アプリが使えるiPhoneが必要です。
それと、”ホーム”アプリでは、室内の温度を測るアクセサリが追加されている必要があります。POOHの場合は、以前のTALK (“Raspberry Pi 4 4GBモデルでこれまで構築したラズパイ環境を統合化してみる (2) “homebridgeでHomeKit対応”“、”Raspberry Pi + Node-RED + DS18B20 防水型温度センサー でメダカ水槽の温度を管理する (2)“)で紹介した通り、ラズパイに接続した温度センサーの測定値を”ホーム”アプリに表示しています。今回は、この稼働資産に何も手を加えず、そのまま活用するつもりです。
< ラズパイにシェルスクリプトをセットアップする >
Raspberry PiのUSBポートの電源制御と言えば”hub-ctrl” (“Raspberry Pi + 人感センサーでLEDライトを自動的にオン・オフ 勿論、HomeKit対応!“)が有名ですが、今回は稼働中のラズパイに出来るだけ手を入れたくないので、”How To Guide on controlling the USB power state on a Raspberry Pi Model 3 B using Homebridge“に掲載されているシェルスクリプトを採用させてもらうことにします。とは言え、”ホーム” iOSアプリでアクセサリをオン・オフするのとは違い、連続してオフする場合もあるので、オリジナルのシェルスクリプトにフラグファイルの存在判定を追記し、既にフラグファイルが存在しない時は連続してオフを実行していると推定し、続けてオフを実行しないように改良しました。
・USB電源をオンにするスクリプト
nano /home/pi/usb_fan_power_on.sh
(オリジナルのシェルスクリプト名は”USBPowerOn.sh”)
chmod +x /home/pi/usb_fan_power_on.sh
・USB電源をオフにするスクリプト
nano /home/pi/usb_fan_power_off.sh
(オリジナルのシェルスクリプト名は”USBPowerOff.sh”)
chmod +x /home/pi/usb_fan_power_on.sh
念のため、ラズパイのUSBに接続したミニ扇風機の動作を確認しておきましょう。
sh /home/pi/usb_fan_power_on.sh
sh /home/pi/usb_fan_power_off.sh
< iPhone側のオートメーション機能を整える >
“ショートカット”アプリを起動して、”マイショートカット”画面で新しいショートカットを作成します。
下図がショートカットの完成イメージです。全体像としては、部屋に人がいて、室温が28℃以上であればミニ扇風機をオン、それ以外の状態であればミニ扇風機をオフにする、といったショートカットの流れになります。
順を追って、ショートカットのポイントを説明していきます。
・マイホーム
“App”で”ホーム”を選択し、”マイホームの状態を取得”を選択します。
“アクセサリ状況”をタップして”ホーム”アプリに登録済の”Hue照明“を選択します。我が家の場合は、部屋に人がいるとHue照明が点灯する仕組みになっているので、人感センサー代わりとしてショートカットの先頭に配置しました。
・スクリプティング (if文)
Hue照明が点灯している場合なら、というif文です。部屋にだれかいる状態を意味します。
・マイホーム
再び、”App”で”ホーム”を選択し、”マイホームの状態を取得”を選択します。
“アクセサリ状況”をタップして”ホーム”アプリに登録済の温度センサーを選択し、”現在の温度”を取得します。
・スクリプティング (if文)
温度センサーが測定した室温が28℃以上の場合なら、というif文です。
・スクリプティング (SSH経由でスクリプトを実行)
ラズパイに保存した”usb_fan_power_on.sh”を実行する。(詳細は後ほど。)
・その他の場合 ※ 室温が28℃より低い場合。
ラズパイに保存した”usb_fan_power_off.sh”を実行する。(詳細は後ほど。)
・その他の場合※ Hue照明が消灯している場合。部屋にだれもいない状態を意味します。
ラズパイに保存した”usb_fan_power_off.sh”を実行する。(詳細は後ほど。)
スクリプティング (SSH経由でスクリプトを実行)の中身は以下の通りです。
・USB電源をオンにするスクリプティング。
・USB電源をオフにするスクリプティング。
ショートカットを実行してみましょう。
初めてショートカットを実行する時だけ、以下のメッセージが表示されるので、”接続”をタップします。
こんな感じで結果が表示され、ミニ扇風機が動作すればOKです。
続いて、”ホーム”アプリで、予め決まった時刻に、先程作成したショートカットを実行する”オートメーション”を作成します。
下図がオートメーションの完成イメージです。今回は、朝と夜に、ミニ扇風機をオン・オフするオートメーションを作成します。
“個人用オートメーションを作成”で、”時刻”イベントを選択します。
時刻を設定した後、
“アクションを追加”ボタンをタップ、”App”で”ショートカット”を選択し、”ショートカットを実行”を選択します。
“ショートカット”をタップし、
先程作成したショートカット (例では”書斎の扇風機”)を選択します。
これで、朝8時に書斎に人がいて、かつ室温が28℃以上であれば、ミニ扇風機をオンするオートメーションが完成しました。
オートメーションの実行時間になると、ショットカットから通知が届きます。
通知をタップしてからショットカットを実行、という手順になります。
時間になるとショットカットを自動的に実行してくれると有り難いんですけどね。ショットカットではなくて、ラズパイ上でスクリプトを書いて、cronで定時起動する直球なアプローチの方が自由度はありそうですね。
オートメーション以外に、ショートカットをiPhoneのホーム画面に置いておくだけでも、省エネ (室温が28℃を下回る場合はミニ扇風機をオンにできないので。)を兼ねたリモコン操作ができるので便利かと思います。
|
|
|
ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。