tobias_richter.tasmota

Ansible Galaxy État de construction

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).

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

À propos du projet

Ansible Role for managing tasmota devices with tasmota commands.

Installer
ansible-galaxy install tobias_richter.tasmota
Licence
apache-2.0
Téléchargements
1.1k
Propriétaire
Expert DevOps Engineer