Dodałem do supla-device dla Linuxa wsparcie dla wyzwalaczy akcji (od wersji 23.02). Motywacją było uruchamianie scen i innych akcji na podstawie stanu telewizora Android TV, ale Wyzwalaczy Akcji do wielu innych rzeczy.
Konfiguracja pozwala na wysłanie dowolnego Wyzwalacza na podstawie stanu kanału (BinaryPrased, CmdRelay), tranzycji między stanami (np z on na off), wartości z pliku (np. liczby 4, 5, 6) lub tranzycji między tymi liczbami (np. przy przejściu z 4 na 7).
Konkretny przykład użycia dodam niedługo w opisie integracji z Android TV.
Całość jest opisana w readme (po angielsku). Poniżej wklejam rezultat tłumaczenia tego tekstu przez chatGPT


W większości miejsc poradził sobie świetnie z zachowaniem języka angielskiego.
ActionTriggerParsed
Tworzy instancję kanału "akcja wyzwalająca". Istnieje tylko jeden obowiązkowy parametr "name", który jest używany w innych kanałach do odwołania się do tego kanału.
Akcja wyzwalająca może być użyta tylko w kanałach "BinaryParsed" i "CmdRelay".
Poniżej znajduje się przykładowa konfiguracja akcji wyzwalającej dla kanału "BinaryParsed":
Code: Select all
action_trigger:
- use: myAt2001
- on_state: [-1, 0]
- on_state_change: [0, 1, 1]
- on_value: [5, 2]
- on_value_change: [6, 7, 3]
Opublikuje akcję "0", gdy kanał wejdzie w stan "-1" (offline).
Akcja "1" zostanie opublikowana, gdy stan kanału zmieni się z "0" (wyłączony) na "1" (włączony).
Akcja "2" zostanie opublikowana, gdy wartość z parsera wynosi "5".
Akcja "3" zostanie opublikowana, gdy wartość z parsera zmieni się z "6" na "7".
Oba kanały "BinaryParsed" i "CmdRelay" mają stan, który może być równy "0" (wyłączony) lub "1" (włączony).
Dodatkowo "CmdRelay" może mieć stan "-1", który jest ustawiany, gdy kanał jest offline.
Więc "stan" odnosi się do stanu kanału raportowanego do Supla. Z kolei wartość reprezentuje wartość odczytaną z parsera.
Możemy np. pobierać dane wejściowe z pliku, który może mieć wartości od -1 do 10. Wartość "-1" dla "CmdRelay" będzie interpretowana jako "offline" (gdy "offline_on_invalid_state" jest ustawione).
Domyślnie wartość "1" jest interpretowana jako stan "on", a wszystkie inne wartości są interpretowane jako stan "off" (można to zmienić, ustawiając tablicę "state_on_values").
Akcja wyzwalająca może być skonfigurowana, gdy kanał wejdzie w wybrany stan lub wartość i dla określonego przejścia między stanami lub wartościami.
Parametry "on_state" i "on_value" skonfigurują akcję wyzwalającą do działania, gdy kanał wejdzie w wybrany stan lub wartość.
Pierwsza liczba w tablicy definiuje stan/wartość, a druga liczba definiuje numer akcji do wysłania. Format jest następujący:
Code: Select all
on_state: [STAN, AKCJA]
on_value: [WARTOŚĆ, AKCJA]
Code: Select all
on_state_change: [OD_STANU, DO_STANU, AKCJA]
on_value_change: [OD_WARTOŚCI, DO_WARTOŚCI, AKCJA]
W przypadku akcji proszę używać tylko następujących numerów: 0, 1, 2, 3, 4, 5, 6 i 10, 11, 12, 13, 14, 15.
Kiedy akcja jest używana i urządzenie jest zarejestrowane w chmurze, zostanie utworzony kanał "action trigger" z akcjami odpowiadającymi przyciskom, zdefiniowanymi w https://github.com/SUPLA/supla-device/b ... to.h#L2111
Na przykład akcja 3 odpowiada:
Code: Select all
#define SUPLA_ACTION_CAP_TOGGLE_x2 (1 << 3)
dla szczegółów). Obecnie w Supla zdefiniowane są tylko akcje dla przycisków, więc tutaj je wykorzystujemy.