日の入りごろに自動で室内照明を点ける
日の入り時刻が近くなったら、自動で室内の照明を点けるフローを作ります。
緯度と経度から日の入り時刻を算出できる、node-red-contrib-schedex
ノードを使います。
照明を点ける仕組みは、SwitchBotを活用します。
作成例
用意するもの
- enebular
- プロジェクトが作成済みであること
- node-red-contrib-schedexノードがフローにインストールされていること
- Herokuコネクションが作成済みであること
- Heroku
- アプリが作成済みであること
-
SwitchBot
- SwitchBotアカウントが作成済みであること
- SwitchBotアプリをスマートフォン等にインストール済みであること
- SwitchBotクラウドサービスがオンになっていること
- 照明の赤外線リモコンがSwitchBotハブに登録されていること
- 照明を点ける手動実行のシーンが作成済みであること
SwitchBot APIを呼び出すフローの作り方は、SwitchBot APIを呼び出すフローを作るの記事を参考にしてください。
手順
SwitchBot
まず照明を点ける手動実行のシーンを作ります。
SwitchBotアプリの画面の指示にしたがって、手動実行のシーンを作ります。
ここで作ったシーンのIDを取得するAPIは下記です。
そしてそのシーンを実行するAPIは下記です。
POST /v1.0/scenes/{sceneId}/execute
シーンの実行をhttp request
ノードで実装します。
enebular
事前に、日の入り時刻を知りたい地点の緯度と経度を、Googleマップ等で調べておきます。
- フローに
node-red-contrib-schedex
ノードをインストールします。 - 今回は、日が沈み切る前に照明を点けたいので、
node-red-contrib-schedex
ノードの [On time] 項目にsunsetStart
と入力します。 - [Latitude]と[Longitude]にも調べておいた緯度と経度を入力します。
また、日が沈み始める頃にはすでに室内もやや暗いので、オフセットして -10
分くらいにセットしておきます。
Heroku
HerokuのFree Dynoを使う場合は、Dynoが肝心な時にスリープしてしまわないように、対策する必要があります。
Herokuにデプロイしたアプリを眠らせない方法という記事の ”無料のスケジューラーを使う方法” を参考にしました。
日の入りごろにDynoが起動していれば良いので、数件のジョブを設定しました。2時間程度の幅のジョブを作ったので、日の入り時刻が遅くなっても少なくとも数ヶ月間は対応できるはずです。
最後に、作ったフローをHerokuにデプロイします。
これで日の入りごろに自動で照明が点きました