3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

おうちハック Vol.3 玄関の防犯ライトを夜だけ動作するようにしてみた

Posted at

前回の記事で防犯ライトを作ってみましたが、昼間も点くのがかっこ悪い。そこで、夜だけ動作するようにしてみました。と言っても、照度センサーはない(対応センサーはあるけどBLEなのでイマイチ)ので、アクション側で時間帯で動作するかしないか判定するように変更。

ポイント

  • BranchTimeCaseコンポーネントを使用する
  • そのために、CreateRecordでステップ出力に時刻情報をマッピングする

BranchTimeCaseBranchコンポーネント配下で利用する条件指定コンポーネントですが、時間の範囲を指定して、配下のステップを実行するかどうかを決めることができるんです。なので、今回はこのコンポーネントを使いました。

CreateRecordで時刻をステップ出力に渡す

まずはBranchTimeCaseで使えるようにCreateRecordコンポーネントで時刻情報をステップ出力に渡します。

CreateRecordを追加したら、ステップ出力をクリックします。で、右ペインのところで「+」をクリックしてフィールドを追加します。出力フィールド名Timestampにしましょう。DateTimeはアクション変数から持ってくるので、av.Timestampとします。
createrecord1.png

これでOK。これでステップ出力として次のコンポーネントのステップ入力として時刻情報が渡せるようになりました。BranchFilterを使うときにはアクション変数ではなくてステップ入力として値を渡さなければなりませんので注意しましょう。
createrecord2.png

BranchTimeCaseを使う

さて、今回のポイント、BranchTimeCaseです。上に書いたとおり、時刻情報から指定された時間内であれば配下の処理を実行するコンポーネントです。

まずはCreateRecordのあとにBranchを追加します。Branchをダブルクリックするとその配下に処理が移ります。BranchCaseが追加されてますので、これを削除し、新たにBranchTimeCaseを追加します。ちなみに、Branchの配下にはいくつか条件指定コンポーネントを配置できますが、左から順に評価され、評価されたレコードは次の条件指定には渡されません。プログラム的に言うと、if-else構文に近いのですが、ステップ入力はレコード(配列)なので、それぞれのレコードがif-elseで評価されていくと考えるといいと思います。ある条件で合致して処理されたレコードが削除された形で次の条件に進むって感じですかね。
branchtimecase.PNG

さて、BranchTimeCaseは時間に特化した条件指定コンポーネントです。なので、まずは評価するフィールドとしてTargetを指定します。これにはCreateRecordで作成したTimestampを指定します。ここではavだとかsinだとかのプレフィックスは必要ありません。単にステップ入力のフィールド名を指定します。また、この時刻はローカルタイムとして評価されますので、特に変換等は気にしなくて良いです。HubKitの動作OSのタイムゾーンだけは正しく指定しておきましょう。

Start timeEnd timeには、配下の処理を実行したい時間帯の、それぞれ開始時刻、終了時刻を指定します。ここでは、Start time16:00End time8:00を指定しました。ここで、一つポイントです。そうです、Start timeよりもEnd timeの方が早い時間になってます。通常この手の指定は、開始が終了よりも早ければなりません。もしくは、0:00をまたぐことはできないのです。つまり、16:00~32:00と指定するか、0:00~08:0016:00~24:00の2つの条件を指定しなければならないことも多いです。でも、BranchTimeCaseはそれをいい感じで処理してくれます。直感的ですねー。
Branchtimecase2.png

条件指定はここまでです。あとは、BranchTimeCaseをダブルクリックして、中に前回指定したGeneralLightを配置します。今回は玄関に行かなくても分かりやすいようにLineNotifyで自分にもテスト用に通知するようにしてみました。
light.png

以上です。これで、暗い時間帯だけライトが点くようになりました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?