「Home AssistantでCommand Lineの使い方がよくわからない」
「Command Lineの活用例を知りたい」
このように思っていませんか?
今回はHome AssistantのCommand Lineの使い方について解説していきます。
Home Assistant Command Lineでできること
Command Lineのインテグレーションは、特定のコマンドを実行してデータを取得したりデバイスを制御したりする機能です。
Command Lineの設定方法
Command Lineの設定はconfiguration.yamlファイルで行います。
yamlにcommand_lineと記載して、センサーやスイッチの詳細を記述していきます。
以下はCommand Lineの設定例です。
例としてIPフォワーディング設定が有効かどうかを確認するバイナリーセンサーを作成してみます。
command_line:
- binary_sensor:
command: 'cat /proc/sys/net/ipv4/ip_forward'
各行の解説をしていきます。
command_line: Home Assistantのプラットフォームの一つで、コマンドラインを使用してセンサーやスイッチなどを作成します。
binary_sensor: センサーやスイッチなどエンティティの種類を指定します。バイナリセンサーは、オンまたはオフの2つの状態を持つセンサーです。
command: 実行するコマンドを指定します。この例では、cat /proc/sys/net/ipv4/ip_forwardというコマンドを実行します。
コマンドの意味は以下です。
cat /proc/sys/net/ipv4/ip_forward: このコマンドは、システムのIPフォワーディング設定を確認します。/proc/sys/net/ipv4/ip_forwardファイルの内容が「1」の場合、IPフォワーディングが有効であることを示し、「0」の場合は無効であることを示します。
ここではIPフォワーディングが何かとかはあまり考えず、送信したコマンドの返答をセンサー値として扱えているということが理解してもらえれば十分です。
Command Lineを使用する際の注意事項として、コマンドはシングルクォート `’` で囲むことを強くお勧めします。これにより、すべての文字がコマンドに使用され、誤ってエスケープされるリスクが低くなります。
Command Lineの活用術
コマンドラインはさまざまな用途で活用できます。以下は一部の例です。
CPU温度をセンサーとして監視する
CPUの温度を取得してセンサーとして扱う例です。CPUが異常でないか監視するにはあると便利です。
command_line:
- sensor:
name: CPU Temperature
command: "cat /sys/class/thermal/thermal_zone0/temp"
unit_of_measurement: "°C"
value_template: "{{ value | multiply(0.001) | round(1) }}"
各部分について説明します。
command_line: コマンドラインを使用してセンサーやスイッチなどを作成するためには、この記述から開始します。
sensor: 特定のデータを取得してセンサーとして表示するためのものです。
name: センサーの名前を指定します。この例では「CPU Temperature」となっています。
command: 実行するコマンドを指定します。この例では、cat /sys/class/thermal/thermal_zone0/tempというコマンドを実行します。
unit_of_measurement: 測定単位を指定します。この例では「°C」(摂氏)です。
value_template: コマンドの出力を処理するためのテンプレートを指定します。この例では、出力値を0.001倍して小数点以下1桁に丸めています。
コマンドの詳細の意味は以下の通りです。
cat /sys/class/thermal/thermal_zone0/temp: このコマンドは、システムのCPU温度センサーから温度データを取得します。出力は通常、ミリ度(千分の一度)で表されるため、0.001倍して摂氏温度に変換します。
カスタムSwitchを作成する(シェルスクリプト等を実行)
Switchのオン/オフに合わせて指定のコマンドを実行するカスタムSwitchを作成することができます。
以下の例では、キッチンのライトをオン・オフすることを想定して書いています。オン/オフしたときに、それぞれ特定のシェルスクリプトを実行して、ライトを制御する例です。
command_line:
- switch:
name: Kitchen Light
command_on: "/path/to/kitchen_light_on.sh"
command_off: "/path/to/kitchen_light_off.sh"
各部分の説明は以下の通りです。
- command_line: Command Lineを使用するために記載。
- switch: オンまたはオフの状態を持つデバイスを制御するためのスイッチとして扱います。
- name: スイッチの名前を指定します。この例では「Kitchen Light」となっています。
- command_on: スイッチをオンにするためのコマンドを指定します。この例では、
/path/to/kitchen_light_on.sh
というシェルスクリプトを実行します。 - command_off: スイッチをオフにするためのコマンドを指定します。この例では、
/path/to/kitchen_light_off.sh
というシェルスクリプトを実行します。
この場合、オンにした場合に実行する「kitchen_light_on.sh」と、オフ時に実行する「kitchen_light_off.sh」の2つのシェルスクリプトを作成しておく必要があります。
今回はコマンドでシェルスクリプトを実行していますが、同様の手段でpythonも実行することができます。
シェルスクリプトやPythonなどを実行できることで、あらゆる複雑な操作が可能になってきます。活用していくことでかなり便利なスマートホーム化が可能になります。
まとめ
いかがだったでしょうか?
今回はHome AssistantのCommand Lineを使用してセンサーやスイッチを作成する例を紹介しました。
Command Lineを活用することでより自在にスマートホーム化を実現することができます。
他にもスマートホームやHome Assistantの記事を書いています。
初心者向けの記事や上級者向けの記事も揃えていますので、ぜひこちらもご覧ください。
コメント