tobias_richter.tasmota
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).
- Si el nuevo valor es diferente del valor existente, se ejecutará el comando con el nuevo valor y la tarea informará que se ha
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
ansible-galaxy install tobias_richter.tasmota