日の入りごろに自動で室内照明を点ける


日の入りごろに自動で室内照明を点ける

日の入り時刻が近くなったら、自動で室内の照明を点けるフローを作ります。
緯度と経度から日の入り時刻を算出できる、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は下記です。

GET https://api.switch-bot.com/v1.0/scenes

そしてそのシーンを実行するAPIは下記です。

POST /v1.0/scenes/{sceneId}/execute

シーンの実行をhttp requestノードで実装します。

enebular

事前に、日の入り時刻を知りたい地点の緯度と経度を、Googleマップ等で調べておきます。

  1. フローにnode-red-contrib-schedexノードをインストールします。
  2. 今回は、日が沈み切る前に照明を点けたいので、node-red-contrib-schedexノードの [On time] 項目にsunsetStartと入力します。
  3. [Latitude]と[Longitude]にも調べておいた緯度と経度を入力します。

また、日が沈み始める頃にはすでに室内もやや暗いので、オフセットして -10分くらいにセットしておきます。

Heroku

HerokuのFree Dynoを使う場合は、Dynoが肝心な時にスリープしてしまわないように、対策する必要があります。

Herokuにデプロイしたアプリを眠らせない方法という記事の ”無料のスケジューラーを使う方法” を参考にしました。

日の入りごろにDynoが起動していれば良いので、数件のジョブを設定しました。2時間程度の幅のジョブを作ったので、日の入り時刻が遅くなっても少なくとも数ヶ月間は対応できるはずです。

最後に、作ったフローをHerokuにデプロイします。

これで日の入りごろに自動で照明が点きました​