tobias_richter.tasmota

Ansible Galaxy Build Status

tobias_richter.tasmota

このロールは、コマンドを実行することでtasmotaデバイスを設定することができます。

:bulb: コマンドリストはhttps://tasmota.github.io/docs/#/Commandsを参照してください。

このロール/アクションプラグインは、ウェブリクエストを使用してtasmotaデバイスにコマンドを送信します。 提供されたtasmota_commands内のそれぞれのcommandvalueの組み合わせについて、以下のステップを実行します:

  • 提供されたcommandの現在の設定を取得します。
  • その結果を受信したvalueと比較します。
    • 新しい値が既存の値と異なる場合、新しい値でコマンドを実行し、タスクはchangedとして報告します。
    • 変更が検出されない場合、コマンドは実行されません(これにより複数のコマンドの再起動を避けます)。

要件

このロールにはいくつかのPython依存関係をインストールする必要があります。

pip install -r requirements.txt

制限事項

ファクト収集

現時点ではtasmotaデバイスがファクトモジュールにサポートされていないため、gather_facts: noを使用してファクト収集を無効にする必要があります。

changed報告

SetOptionのようないくつかのコマンドは、int値(0や1など)を受け付けますが、現在のステータスを問い合わせるとonoffが返されます。 これにより間違った「変更」状態が報告される可能性があります。カバーされていないコマンドへのサポートを追加するための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_usertasmota_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

プロジェクトについて

Ansible Role for managing tasmota devices with tasmota commands.

インストール
ansible-galaxy install tobias_richter.tasmota
ライセンス
apache-2.0
ダウンロード
1.1k
所有者
Expert DevOps Engineer