tobias_richter.tasmota

Ansible Galaxy Build Status

tobias_richter.tasmota

Diese Rolle ermöglicht es dir, Tasmota-Geräte zu konfigurieren, indem Befehle ausgeführt werden.

:bulb: Siehe https://tasmota.github.io/docs/#/Commands für eine Befehlsliste.

Diese Rolle/Aktions-Plugin sendet Befehle an ein Tasmota-Gerät über Webanfragen. Sie führt die folgenden Schritte für jedes bereitgestellte command, value Paar in den tasmota_commands aus:

  • Sie ruft die aktuelle Einstellung des angegebenen command ab.
  • Sie vergleicht das Ergebnis mit dem eingegebenen value.
    • Wenn der neue Wert vom bestehenden Wert abweicht, wird der Befehl mit dem neuen Wert ausgeführt und die Aufgabe meldet changed.
    • Wenn keine Änderung festgestellt wird, wird der Befehl nicht ausgeführt (so werden Neustarts bei mehreren Befehlen vermieden).

Anforderungen

Für diese Rolle müssen einige Python-Pakete installiert werden.

pip install -r requirements.txt

Einschränkungen

Faktensammlung

Du musst die Faktensammlung mit gather_facts: no deaktivieren, da Tasmota-Geräte derzeit nicht vom Faktenmodul unterstützt werden.

changed-Berichterstattung

Einige Befehle wie SetOption akzeptieren int Werte, wie 0 oder 1, geben jedoch on oder off zurück, wenn der aktuelle Status abgerufen wird. Dies könnte falsche "changed"-Zustände melden. Du kannst gerne einen PR erstellen, um Unterstützung für nicht abgedeckte Befehle hinzuzufügen.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit ihren Standardwerten:

    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

Wenn tasmota_user und tasmota_password beide nicht leer sind, werden sie in die Befehle aufgenommen, um den Zugriff zu authentifizieren.

Wenn einer der MQTT-Konfigurationswerte festgelegt ist, wird nach dem Ausführen der Befehle automatisch ein einzelner Backlog-Befehl ausgeführt.

Die Tasmota-Befehle enthalten eine Liste von Tasmota-Befehlen, die ausgeführt werden sollen. Jeder tasmota_command wird wie folgt definiert:

- command: <COMMAND>
  value: <VALUE>
  

z. B.

tasmota_commands:
    
    # Setze TelePeriod auf 10 Sekunden
  - command: TelePeriod
    value: 10
    
    # Verlängere TelePeriod auf 3600 Sekunden, wenn der Schalter ausgeschaltet ist, setze auf Standard, wenn der Schalter eingeschaltet ist
  - command: Rule1
    value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
    
    # Aktiviere Rule1
  - command: Rule1
    value: 1
    
    # Aktiviere Einmal für Rule1
  - command: Rule1
    value: 5

    # Setze und aktiviere Template (beachte, dass das Template kein String ist)
  - 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 # Template


    # Konfiguriere mehrere TuyaMCU-Funktionen (wiederhole für jedes fnId, dpId Paar)
  - command: TuyaMCU
    value: 11,10
  - command: TuyaMCU
    value: 12,13

    # Stelle sicher, dass TuyaMCU fnId deaktiviert oder nicht vorhanden ist
  - command: TuyaMCU
    value: 11,0

    # Konfiguriere Timer16, um einmal täglich um 06:00 (+-0:05) eine Regel auszulösen, um das Gerät neuzustarten
  - 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

    # Beispiel für no_log
  - command: MqttPassword
    value: MySafePassword
    no_log: True

Tipps

Um zu vermeiden, dass tasmota_commands für jeden Host über host_vars angegeben werden, kannst du eine ähnliche Konstruktion wie folgt verwenden:

# Befehle für alle Instanzen
default_tasmota_commands:
  # Setze benutzerdefinierten NtpServer
  - command: NtpServer1
    value: 192.168.0.1
  - command: LedState
    value: 0      

# spezifische Befehle 
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([])) }}"

Beispiel

Setzt den TelePeriod auf 10 Sekunden für alle Geräte in der Hostgruppe tasmota.

- hosts: tasmota_devices  
  # Faktensammlung deaktivieren, da dies derzeit auf Tasmota-Geräten nicht möglich ist  
  gather_facts: no
  vars:
    tasmota_commands:
        - command: TelePeriod
          value: 10
  roles:
    - tobias_richter.tasmota

Lizenz

Apache 2.0

Über das Projekt

Ansible Role for managing tasmota devices with tasmota commands.

Installieren
ansible-galaxy install tobias_richter.tasmota
Lizenz
apache-2.0
Downloads
1.1k
Besitzer
Expert DevOps Engineer