tobias_richter.tasmota
tobias_richter.tasmota
Ten moduł pozwala na konfigurowanie urządzeń Tasmota poprzez wykonywanie poleceń.
:bulb: Zobacz https://tasmota.github.io/docs/#/Commands, aby znaleźć listę poleceń.
Ten moduł będzie wysyłał polecenia do urządzenia Tasmota za pomocą zapytań sieciowych. Wykona następujące kroki dla każdej pary command
, value
podanej w tasmota_commands
:
- Odbierze bieżące ustawienie podanego
command
- Porówna ten wynik z przychodzącą wartością
value
- Jeśli nowa wartość różni się od istniejącej, polecenie zostanie wykonane z nową wartością, a zadanie raportuje zmianę (
changed
) - Jeśli nie wykryto zmiany, polecenie nie zostanie wykonane (to zapobiegnie restartowi przy kilku poleceniach)
- Jeśli nowa wartość różni się od istniejącej, polecenie zostanie wykonane z nową wartością, a zadanie raportuje zmianę (
Wymagania
Ten moduł wymaga zainstalowania kilku pakietów Pythona.
pip install -r requirements.txt
Ograniczenia
zbieranie faktów
Musisz wyłączyć zbieranie faktów, ustawiając gather_facts: no
, ponieważ urządzenia Tasmota nie są obecnie obsługiwane przez moduł faktów.
raportowanie changed
Niektóre polecenia, takie jak SetOption
, akceptują wartości int
, takie jak 0
lub 1
, ale zwracają on
lub off
po zapytaniu o bieżący status. Może to powodować błędne raporty o "zmienionym" stanie. Zachęcamy do stworzenia zgłoszenia PR, aby dodać wsparcie dla nieobsługiwanych poleceń.
Zmienne roli
Dostępne zmienne są wymienione poniżej wraz z wartościami domyślnymi:
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
Jeśli tasmota_user
i tasmota_password
są podane, będą używane do autoryzacji dostępu.
Jeżeli którejkolwiek z wartości konfiguracyjnych MQTT jest ustawiona, pojedyncze polecenie Backlog
zostanie automatycznie wydane po wykonaniu poleceń.
Polecenia Tasmota zawierają listę poleceń do wykonania. Każde polecenie Tasmota jest definiowane w formie:
- command: <COMMAND>
value: <VALUE>
np.
tasmota_commands:
# ustaw TelePeriod na 10 sekund
- command: TelePeriod
value: 10
# wydłuż TelePeriod do 3600 sekund, gdy włącznik jest wyłączony, ustaw na domyślne, gdy włącznik jest włączony
- command: Rule1
value: "on Power1#state=0 do TelePeriod 3600 endon on Power1#state=1 do TelePeriod 1 endon"
# włącz Rule1
- command: Rule1
value: 1
# uruchom jednorazowo Rule1
- command: Rule1
value: 5
# ustaw i włącz szablon (uważaj, szablon nie jest ciągiem)
- 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 # Szablon
# skonfiguruj wiele funkcji TuyaMCU (powtórz dla każdej pary fnId,dpId)
- command: TuyaMCU
value: 11,10
- command: TuyaMCU
value: 12,13
# upewnij się, że fnId TuyaMCU jest wyłączony lub brakujący
- command: TuyaMCU
value: 11,0
# Skonfiguruj Timer16, aby uruchomić Regułę raz dziennie o 06:00 (+-0:05), aby zrestartować urządzenie
- 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
# Przykład dla no_log
- command: MqttPassword
value: MySafePassword
no_log: True
Wskazówki
Aby uniknąć określania tasmota_commands
dla każdego hosta, korzystając z host_vars
, możesz użyć konstrukcji podobnej do tej:
# komendy dla wszystkich instancji
default_tasmota_commands:
# ustaw niestandardowy NtpServer
- command: NtpServer1
value: 192.168.0.1
- command: LedState
value: 0
# konkretne polecenia
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([])) }}"
Przykład
Ustawia TelePeriod
na 10 sekund dla wszystkich urządzeń określonych w grupie hostów tasmota
.
- hosts: tasmota_devices
# wyłącz zbieranie faktów, ponieważ obecnie nie jest możliwe na urządzeniach Tasmota
gather_facts: no
vars:
tasmota_commands:
- command: TelePeriod
value: 10
roles:
- tobias_richter.tasmota
Licencja
Apache 2.0
ansible-galaxy install tobias_richter.tasmota