Sam AT jest niezależny od innych elementów używanych do tej pory w bibliotece (jest też niezależny od przycisków).
AT posiada interfejs, który pozwala go powiązać z przyciskiem oraz z dowolnym innym elementem biblioteki, który potrafi wyzwalać wewnętrzne akcje.
Cel był taki, aby używało się go najprościej jak się tylko da.
W przypadku, gdy powiążecie AT z przyciskiem, to większość rzeczy ustawia się automatycznie podczas "onInit()".
Przykład z przyciskiem:
Kod: Zaznacz cały
#include <supla/control/action_trigger.h>
#include <supla/control/button.h>
#include <supla/control/relay.h>
// w setup:
auto relay = new Supla::Control::Relay(4);
auto button = new Supla::Control::Button(5, true, true);
auto at = new Supla::Control::ActionTrigger();
button->setMulticlickTime(800, false); // use true for bistable button
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
at->setRelatedChannel(relay); // action trigger will show under relay channel in Cloud
at->attach(button);
Powiązanie z buttonem znajdzie też "lokalne" akcje buttona, które będą mogły być wyłączone, gdy ktoś ustawi w Cloud jakąś inną akcję.
Metoda setRelatedChannel przypisuje AT do wybranego kanału. Dla urządzenia nie ma to żadnego znaczenia, natomiast w Cloud taki AT pojawi się pod wybranym kanałem, a nie jako samodzielny kanał. Jeśli nic nie przypiszemy, to AT będzie pokazywany samodzielnie.
Przykład z ręcznie definiowanymi wyzwalaczami:
Kod: Zaznacz cały
#include <supla/control/action_trigger.h>
#include <supla/control/button.h>
#include <supla/control/relay.h>
// w setup:
auto relay = new Supla::Control::Relay(4);
auto button = new Supla::Control::Button(5, true, true);
auto at = new Supla::Control::ActionTrigger();
button->setMulticlickTime(800);
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
button->addAction(Supla::SEND_AT_HOLD, at, Supla::ON_HOLD);
relay->addAction(Supla::SEND_AT_SHORT_PRESS_x1, at, Supla::ON_TURN_ON);
Biblioteka nie ma tutaj żadnych ograniczeń i wyzwalacze można przypisywać do dowolnych zdarzeń w ramach urządzenia (np. do sensorów binarnych, albo po przekroczeniu zadanej temperatury, itd.)
Lista dostępnych akcji do przypisania: https://github.com/SUPLA/supla-arduino/ ... ions.h#L78
Serwer Supli udostępnia na razie tylko akcje związane z przyciskami, natomiast to są "tylko nazwy", więc można ich używać dowolnie. Akcje dla mono i bistabilnych przycisków nie wykluczają siebie.
To jest wersja "develop". Zachęcam do testowania i sprawdzania u siebie różnych standardowych i mniej standardowych pomysłów. Interfejs może się jeszcze zmienić, choć tego nie planuję.
Powyższego kodu nie kompilowałem, więc może gdzieś się pomyliłem.
Jeśli coś nie jest jasne, to pytajcie. Postaram się też dodać jutro jakieś gotowe przykłady z użyciem AT.