tobias_richter.tasmota
tobias_richter.tasmota
Ce rôle vous permet de configurer des appareils Tasmota en exécutant des commandes.
:bulb: Consultez https://tasmota.github.io/docs/#/Commands pour une liste de commandes.
Ce rôle/action_plugin enverra des commandes à un appareil Tasmota en utilisant des requêtes web.
Il effectuera les étapes suivantes pour chaque paire command
, value
fournie dans tasmota_commands
:
- Il récupérera le paramètre actuel de la
command
fournie. - Il comparera le résultat avec la
value
entrante.- lorsque la nouvelle valeur diffère de la valeur existante, la commande est exécutée avec la nouvelle valeur et la tâche indiquera
changed
. - lorsqu'aucun changement n'est détecté, la commande ne sera pas exécutée (cela évitera des redémarrages sur plusieurs commandes).
- lorsque la nouvelle valeur diffère de la valeur existante, la commande est exécutée avec la nouvelle valeur et la tâche indiquera
Exigences
Ce rôle nécessite que des exigences Python soient installées.
pip install -r requirements.txt
Limitations
Collecte de faits
Vous devez désactiver la collecte de faits en utilisant gather_facts: no
car les appareils Tasmota ne sont actuellement pas pris en charge par le module de faits.
Rapport changed
Certaines commandes comme SetOption
acceptent des valeurs int
, comme 0
ou 1
, mais retournent on
ou off
lorsqu'elles sont interrogées pour l'état actuel.
Cela peut entraîner des états "changed" mal rapportés. Vous êtes le bienvenu pour créer une PR afin d'ajouter le support pour des commandes non couvertes.
Variables de rôle
Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut :
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
Si tasmota_user
et tasmota_password
ne sont pas vides, ils seront inclus dans les commandes pour authentifier l'accès.
Si l'une des valeurs de configuration MQTT est définie, une seule commande Backlog
sera émise automatiquement après l'exécution des commandes.
Les commandes Tasmota contiennent une liste de commandes à exécuter.
Chaque tasmota_command
est défini comme :
- command: <COMMAND>
value: <VALUE>
ex. :
tasmota_commands:
# régler TelePeriod sur 10 secondes
- command: TelePeriod
value: 10
# prolonger TelePeriod à 3600 secondes lorsque l'interrupteur est éteint, régler par défaut lorsque l'interrupteur est allumé
- command: Rule1
value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
# activer Rule1
- command: Rule1
value: 1
# activer un coup unique pour Rule1
- command: Rule1
value: 5
# définir et activer le modèle (notez que le modèle n'est pas une chaîne)
- 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
# configurer plusieurs fonctions TuyaMCU (répétez pour chaque paire fnId, dpId)
- command: TuyaMCU
value: 11,10
- command: TuyaMCU
value: 12,13
# s'assurer que TuyaMCU fnId est désactivé ou absent
- command: TuyaMCU
value: 11,0
# Configurer Timer16 pour déclencher une règle une fois par jour à 06:00 (+-0:05) pour redémarrer l'appareil
- 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
# Exemple pour no_log
- command: MqttPassword
value: MySafePassword
no_log: True
Astuces
Pour éviter de spécifier tasmota_commands
pour chaque hôte en utilisant des host_vars, vous pouvez utiliser une construction similaire à celle-ci :
# commandes pour toutes les instances
default_tasmota_commands:
# définir un serveur Ntp personnalisé
- command: NtpServer1
value: 192.168.0.1
- command: LedState
value: 0
# commandes spécifiques
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([])) }}"
Exemple
Définit le TelePeriod
sur 10 secondes pour tous les appareils spécifiés dans le groupe d'hôtes tasmota
.
- hosts: tasmota_devices
# désactiver la collecte de faits car cela n'est actuellement pas possible sur les appareils Tasmota
gather_facts: no
vars:
tasmota_commands:
- command: TelePeriod
value: 10
roles:
- tobias_richter.tasmota
Licence
Apache 2.0
ansible-galaxy install tobias_richter.tasmota