tobias_richter.tasmota
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).
- Wenn der neue Wert vom bestehenden Wert abweicht, wird der Befehl mit dem neuen Wert ausgeführt und die Aufgabe meldet
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
ansible-galaxy install tobias_richter.tasmota