tobias_richter.tasmota

Ansible Galaxy Status budowy

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)

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

O projekcie

Ansible Role for managing tasmota devices with tasmota commands.

Zainstaluj
ansible-galaxy install tobias_richter.tasmota
Licencja
apache-2.0
Pobrania
1.1k
Właściciel
Expert DevOps Engineer