tobias_richter.tasmota
tobias_richter.tasmota
このロールは、コマンドを実行することでtasmotaデバイスを設定することができます。
:bulb: コマンドリストはhttps://tasmota.github.io/docs/#/Commandsを参照してください。
このロール/アクションプラグインは、ウェブリクエストを使用してtasmotaデバイスにコマンドを送信します。
提供されたtasmota_commands
内のそれぞれのcommand
とvalue
の組み合わせについて、以下のステップを実行します:
- 提供された
command
の現在の設定を取得します。 - その結果を受信した
value
と比較します。- 新しい値が既存の値と異なる場合、新しい値でコマンドを実行し、タスクは
changed
として報告します。 - 変更が検出されない場合、コマンドは実行されません(これにより複数のコマンドの再起動を避けます)。
- 新しい値が既存の値と異なる場合、新しい値でコマンドを実行し、タスクは
要件
このロールにはいくつかのPython依存関係をインストールする必要があります。
pip install -r requirements.txt
制限事項
ファクト収集
現時点ではtasmotaデバイスがファクトモジュールにサポートされていないため、gather_facts: no
を使用してファクト収集を無効にする必要があります。
changed
報告
SetOption
のようないくつかのコマンドは、int
値(0や1など)を受け付けますが、現在のステータスを問い合わせるとon
やoff
が返されます。
これにより間違った「変更」状態が報告される可能性があります。カバーされていないコマンドへのサポートを追加するためのPRを作成していただければ幸いです。
ロール変数
利用可能な変数は下記に示し、そのデフォルト値も記載しています:
tasmota_user: ''
tasmota_password: ''
tasmota_commands: []
tasmota_mqtt_user: ''
tasmota_mqtt_password: ''
tasmota_mqtt_host: ''
tasmota_mqtt_port: ''
tasmota_mqtt_client: ''
tasmota_mqtt_topic: ''
tasmota_mqtt_fulltopic: ''
tasmota_mqtt_no_log: true
tasmota_user
とtasmota_password
が両方とも空でなければ、アクセスを認証するためにコマンドに含まれます。
MQTT構成値のいずれかが設定されている場合、コマンド実行後に自動的にBacklog
コマンドが発行されます。
Tasmotaコマンドは実行するtasmotaコマンドのリストを含みます。
各tasmota_command
は以下のように定義されます:
- command: <COMMAND>
value: <VALUE>
例えば:
tasmota_commands:
# TelePeriodを10秒に設定
- command: TelePeriod
value: 10
# スイッチがオフのときにTelePeriodを3600秒に延長し、スイッチがオンのときはデフォルトに戻す
- command: Rule1
value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
# Rule1を有効化
- command: Rule1
value: 1
# Rule1にワンショットを有効化
- command: Rule1
value: 5
# テンプレートを設定し有効化(テンプレートは文字列ではありません)
- command: Template
value: {NAME: FooModule, GPIO: [1,2272,1,2304,1,1,0,0,1,1,1,1,1,0], FLAG: 0, BASE: 54}
- command: Module
value: 0 # テンプレート
# 複数のTuyaMCU関数を設定(各fnId,dpIdのペアについて繰り返す)
- command: TuyaMCU
value: 11,10
- command: TuyaMCU
value: 12,13
# TuyaMCU fnIdが無効または欠落していることを確認
- command: TuyaMCU
value: 11,0
# Timer16を設定して、毎日06:00(±0:05)にルールをトリガーしてデバイスを再起動する
- command: Timer16
value: '{"Enable":1,"Time":"06:00","Window":5,"Days":"1111111","Repeat":1,"Output":1,"Action":3,"Mode":0}'
- command: Rule3
value: "on Clock#Timer=16 do Restart 1 endon"
- command: Rule3
value: 1
- command: Timers
value: 1
# no_logの例
- command: MqttPassword
value: MySafePassword
no_log: True
ヒント
各ホストにtasmota_commands
を指定することを避けるために、以下のような構文を使用できます:
# すべてのインスタンスのコマンド
default_tasmota_commands:
# カスタムNtpServerを設定
- command: NtpServer1
value: 192.168.0.1
- command: LedState
value: 0
# 特定のコマンド
specific_tasmota_commands:
tasmota001:
- command: FriendlyName1
value: TV
tasmota002:
- command: FriendlyName1
value: HiFi
tasmota_commands: "{{ default_tasmota_commands | union(specific_tasmota_commands[inventory_hostname] | default([])) }}"
例
tasmota
ホストグループに指定されたすべてのデバイスにTelePeriod
を10秒に設定します。
- hosts: tasmota_devices
# 現在tasmotaデバイスでは不可能なため、ファクト収集を無効にします
gather_facts: no
vars:
tasmota_commands:
- command: TelePeriod
value: 10
roles:
- tobias_richter.tasmota
ライセンス
Apache 2.0