tasmota
tobias_richter.tasmota
Эта роль позволяет настраивать устройства tasmota, выполняя команды.
:bulb: Смотрите https://tasmota.github.io/docs/#/Commands для списка команд.
Эта роль/action_plugin будет отправлять команды на устройство tasmota с помощью веб-запросов. Она выполнит следующие шаги для каждой пары command
, value
, указанных в tasmota_commands
:
- Получит текущее значение заданной команды
- Сравнит его с пришедшим значением
- Если новое значение отличается от существующего, команда выполняется с новым значением, и задача отразится как
changed
- Если изменения не обнаружены, команда не будет выполняться (это поможет избежать перезагрузок при нескольких командах)
- Если новое значение отличается от существующего, команда выполняется с новым значением, и задача отразится как
Требования
Эта роль требует установки некоторых зависимостей на Python.
pip install -r requirements.txt
Ограничения
Сбор фактов
Вы должны отключить сбор фактов, указав gather_facts: no
, так как устройства tasmota в данный момент не поддерживаются модулем фактов.
Отчет о changed
Некоторые команды, такие как SetOption
, принимают значения int
, как 0
или 1
, но возвращают on
или off
при запросе текущеего статуса. Это может привести к неверному отчету о "измененных" состояниях. Вы можете создать PR, чтобы добавить поддержку недостающих команд.
Переменные роли
Доступные переменные перечислены ниже с их значениями по умолчанию:
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
Если tasmota_user
и tasmota_password
не пустые, они будут включены в команды для аутентификации.
Если любое из значений конфигурации mqtt задано, будет автоматически выполнена команда Backlog
после выполнения команд.
Команды tasmota содержат список команд, которые необходимо выполнить. Каждая команда определяется так:
- command: <COMMAND>
value: <VALUE>
например:
tasmota_commands:
# установить TelePeriod на 10 секунд
- command: TelePeriod
value: 10
# увеличить TelePeriod до 3600 секунд, когда переключатель выключен, установить по умолчанию, когда переключатель включен
- command: Rule1
value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
# включить Rule1
- command: Rule1
value: 1
# включить одноразовое действие для Rule1
- command: Rule1
value: 5
# установить и включить шаблон (обратите внимание, что шаблон не строка)
- 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 # Шаблон
# настроить несколько функций TuyaMCU (повторить для каждой пары fnId, dpId)
- command: TuyaMCU
value: 11,10
- command: TuyaMCU
value: 12,13
# убедиться, что fnId TuyaMCU отключен или отсутствует
- command: TuyaMCU
value: 11,0
# Настроить Timer16 для триггера правила раз в день в 06:00 (+-0:05) для перезагрузки устройства
- 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
# Пример для no_log
- command: MqttPassword
value: MySafePassword
no_log: True
Советы
Чтобы избежать указания tasmota_commands
для каждого хоста, используя host_vars
, вы можете использовать конструкцию, аналогичную этой:
# команды для всех экземпляров
default_tasmota_commands:
# установить пользовательский NtpServer
- command: NtpServer1
value: 192.168.0.1
- command: LedState
value: 0
# специфические команды
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([])) }}"
Пример
Устанавливает TelePeriod
на 10 секунд для всех устройств, указанных в группе хостов tasmota
.
- hosts: tasmota_devices
# отключение сбора фактов, так как это в настоящее время невозможно для устройств tasmota
gather_facts: no
vars:
tasmota_commands:
- command: TelePeriod
value: 10
roles:
- tobias_richter.tasmota
Лицензия
Apache 2.0
ansible-galaxy install tobias-richter/ansible-tasmota