デスクライトを毎日決まった時間に点けたり消したりするだけなら、タイマー付きの電源タップでも実現できます。しかし、Home Assistantを使うと、時間帯ごとに明るさを変えたり、自動化を一時的に無効化したり、あとから条件を追加したりできます。
この記事では、Raspberry PiにHome Assistantを構築し、スマートプラグまたはスマートライトに接続したデスクライトを、朝・夕方・夜の時間帯に合わせて制御します。実際に私の作業環境で試した構成では、朝は点灯、夕方は明るさを上げ、23時に消灯する動作を安定して実行できました。
構成と使用した機器
今回の構成は次のとおりです。
- Raspberry Pi 4または5
- Home Assistant OS
- Wi-Fiまたは有線LAN
- スマートプラグ、またはHome Assistant対応のスマートライト
- 一般的なデスクライト
デスクライト自体がスマート機器でなくても、電源をスマートプラグ経由にすればオン・オフ制御ができます。その場合、Home Assistant上では次のようなエンティティとして表示されます。
switch.desk_lamp
明るさや色温度も変更できるスマートライトの場合は、次のような light エンティティになります。
light.desk_lamp
スマートプラグを利用する場合は、電源の定格容量がデスクライトに適合していることを確認してください。特にACアダプターや電熱器具を接続する場合は、スマートプラグの仕様を優先します。
Raspberry PiにHome Assistantをインストールする
今回はRaspberry Pi ImagerでHome Assistant OSを書き込みました。Raspberry Pi ImagerのOS選択画面で、Home Assistantの項目から対象モデルに合うHome Assistant OSを選び、microSDカードへ書き込みます。
起動後、同じネットワーク上のブラウザから次のアドレスを開きます。
http://homeassistant.local:8123
名前解決できない場合は、ルーターの管理画面などでRaspberry PiのIPアドレスを確認し、次のようにアクセスします。
http://192.168.1.50:8123
初回セットアップでは、ユーザー名、パスワード、所在地、タイムゾーンを設定します。所在地とタイムゾーンは時間条件に影響するため、日本で利用する場合はタイムゾーンが Asia/Tokyo になっていることを確認しました。
Home AssistantのTerminalまたはSSH経由で設定を確認する場合は、次のコマンドを使えます。
ha core info
ha core check
ha core check が成功すれば、設定ファイルの構文に大きな問題がない状態です。
デスクライトをHome Assistantへ追加する
スマートプラグを使う場合は、Home Assistantの「設定」から「デバイスとサービス」を開き、対応するインテグレーションを追加します。
追加後、「デバイス」または「エンティティ」からデスクライトを探し、エンティティIDを確認します。私は管理しやすいように、次の名前へ変更しました。
switch.desk_lamp
ここで、開発者ツールの「アクション」から手動操作を試します。
action: switch.turn_on
target:
entity_id: switch.desk_lamp
消灯は次のとおりです。
action: switch.turn_off
target:
entity_id: switch.desk_lamp
この操作で実際にライトが点灯・消灯することを確認してから、自動化を作成しました。エンティティIDを間違えると自動化が正常に実行されないため、ここは先に確認しておくのがおすすめです。
自動化を一時停止するヘルパーを作る
外出中や休日など、自動点灯させたくない場合があります。そこで、トグル型のヘルパーを作り、自動化の有効・無効を切り替えられるようにしました。
「設定」→「デバイスとサービス」→「ヘルパー」→「ヘルパーを作成」から「トグル」を選択し、名前を「デスクライト自動化」とします。
作成されたエンティティIDを次のように想定します。
input_boolean.desk_lamp_automation
このスイッチがオンのときだけ、朝と夕方の自動点灯を実行します。Home Assistantの画面から簡単に切り替えられるため、テスト時にも便利でした。
時間帯ごとの自動化を設定する
時刻トリガーと自動化の有効スイッチによる処理の流れを図にすると次のとおりです。
自動化YAMLには、朝の点灯、夕方の点灯、夜の消灯を登録します。automations.yaml に追加する場合の例です。
- id: desk_lamp_morning_on
alias: デスクライト 朝の点灯
triggers:
- trigger: time
at: "07:00:00"
conditions:
- condition: state
entity_id: input_boolean.desk_lamp_automation
state: "on"
actions:
- action: switch.turn_on
target:
entity_id: switch.desk_lamp
mode: single
- id: desk_lamp_evening_on
alias: デスクライト 夕方の点灯
triggers:
- trigger: time
at: "18:00:00"
conditions:
- condition: state
entity_id: input_boolean.desk_lamp_automation
state: "on"
actions:
- action: switch.turn_on
target:
entity_id: switch.desk_lamp
mode: single
- id: desk_lamp_night_off
alias: デスクライト 夜の消灯
triggers:
- trigger: time
at: "23:00:00"
actions:
- action: switch.turn_off
target:
entity_id: switch.desk_lamp
mode: single
この例では、07:00と18:00に点灯し、23:00に消灯します。自動化の有効スイッチがオフでも、夜の消灯だけは実行される構成です。消し忘れ防止を優先したかったため、このように分けました。
スマートライトで明るさを指定できる場合は、switch.turn_on の代わりに light.turn_on を使用します。
- action: light.turn_on
target:
entity_id: light.desk_lamp
data:
brightness_pct: 70
color_temp_kelvin: 3500
朝は40%、夕方は70%というように、時間帯ごとに brightness_pct を変えることもできます。色温度に対応していないライトでは、この項目を削除します。
動作確認とトラブルシューティング
自動化を保存したら、まずは設定画面から手動実行して確認しました。予定時刻まで待ちたくない場合は、各自動化の「実行」ボタンを使うと、その場でアクションだけを試せます。
確認するポイントは次のとおりです。
- エンティティIDが実際のライトと一致しているか
-
input_booleanがオンになっているか - Home Assistantのタイムゾーンが正しいか
- スマートプラグがオンラインか
- 自動化のトレースにエラーがないか
特に注意したのは、スマートプラグが switch として登録されているケースです。この場合、light.turn_on ではなく switch.turn_on を使う必要があります。
また、Home Assistantが再起動した直後に時刻自動化が過ぎていた場合、その時刻のトリガーは自動的に再実行されません。起動後にも状態を整えたい場合は、起動トリガーや現在時刻を判定するテンプレート条件を追加します。
まとめ
Raspberry PiとHome Assistantを使うことで、デスクライトを時間帯に合わせて自動制御できました。今回の構成では、朝と夕方に自動点灯し、夜は消灯するようにしています。
ポイントは、最初に手動アクションでエンティティIDと機器種別を確認すること、そして自動化の有効・無効をヘルパーで切り替えられるようにすることです。
次に拡張するなら、人感センサーや照度センサーを追加して「暗く、かつ在席しているときだけ点灯」という条件にしたいと考えています。時間指定だけでも便利ですが、センサーと組み合わせると、より自然で使い忘れの少ないデスク環境にできます。