tobias_richter.tasmota

Ansible Galaxy
Estado de Construcción

tobias_richter.tasmota

Este rol te permite configurar dispositivos Tasmota ejecutando comandos.

:bulb: Consulta https://tasmota.github.io/docs/#/Commands para una lista de comandos.

Este rol/plugin de acción enviará comandos a un dispositivo Tasmota usando solicitudes web.
Realizará los siguientes pasos para cada par de comando, valor proporcionado en tasmota_commands:

  • Recuperará la configuración actual del comando proporcionado.
  • Comparará el resultado con el valor recibido.
    • Si el nuevo valor es diferente del valor existente, se ejecutará el comando con el nuevo valor y la tarea informará que se ha cambiado.
    • Si no se detecta ningún cambio, no se ejecutará el comando (esto evitará reinicios en varios comandos).

Requisitos

Este rol requiere que se instalen algunos requisitos de Python.

pip install -r requirements.txt

Limitaciones

Recolección de datos

Debes desactivar la recolección de datos usando gather_facts: no porque los dispositivos Tasmota actualmente no están soportados por el módulo de hechos.

Reporte de cambiado

Algunos comandos como SetOption aceptan valores int, como 0 o 1, pero devuelven on o off cuando se consultan para el estado actual.
Esto puede causar informes incorrectos de estados "cambiados". Eres bienvenido a crear un PR para agregar soporte para comandos no cubiertos.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados:

    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 y tasmota_password no están vacíos, se incluirán en los comandos para autenticar el acceso.

Si alguno de los valores de configuración MQTT está establecido, se emitirá automáticamente un solo comando Backlog después de ejecutar los comandos.

Los comandos de Tasmota contienen una lista de comandos para ser ejecutados.
Cada tasmota_command se define como:

- command: <COMANDO>
  value: <VALOR>
  

ejemplo:

tasmota_commands:
    
    # establecer TelePeriod a 10 segundos
  - command: TelePeriod
    value: 10
    
    # ampliar TelePeriod a 3600 segundos cuando el interruptor está apagado, restablecer a predeterminado cuando el interruptor está encendido
  - command: Rule1
    value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
    
    # habilitar Rule1
  - command: Rule1
    value: 1
    
    # habilitar un solo tiro para Rule1
  - command: Rule1
    value: 5

    # establecer y habilitar plantilla (nota que la plantilla no es una cadena)
  - 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 # Plantilla

    # configurar múltiples funciones TuyaMCU (repetir para cada par fnId, dpId)
  - command: TuyaMCU
    value: 11,10
  - command: TuyaMCU
    value: 12,13

    # asegurarse de que TuyaMCU fnId esté deshabilitado o falte
  - command: TuyaMCU
    value: 11,0

    # Configurar Timer16 para activar una regla una vez al día a las 06:00 (+-0:05) para reiniciar el dispositivo
  - 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

    # Ejemplo para no_log
  - command: MqttPassword
    value: MySafePassword
    no_log: True

Consejos

Para evitar especificar tasmota_commands para cada host usando host_vars, puedes usar una construcción similar a esta:

# comandos para todas las instancias
default_tasmota_commands:
  # establecer servidor NTP personalizado
  - command: NtpServer1
    value: 192.168.0.1
  - command: LedState
    value: 0      

# comandos específicos 
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([])) }}"

Ejemplo

Establece el TelePeriod a 10 segundos para todos los dispositivos especificados en el grupo de hosts tasmota.

- hosts: tasmota_devices  
  # desactivar la recolección de datos ya que actualmente no es posible en los dispositivos Tasmota  
  gather_facts: no
  vars:
    tasmota_commands:
        - command: TelePeriod
          value: 10
  roles:
    - tobias_richter.tasmota

Licencia

Apache 2.0

Acerca del proyecto

Ansible Role for managing tasmota devices with tasmota commands.

Instalar
ansible-galaxy install tobias_richter.tasmota
Licencia
apache-2.0
Descargas
1.1k
Propietario
Expert DevOps Engineer