Relay to zwykły przekaźnik. Może być sterowany stanem niskim lub wysokim. Przykład:
Code: Select all
#include <supla/control/relay.h>
// setup
auto r1 = new Supla::Control::Relay(pin1); // przekaźnik na pin1 sterowany stanem wysokim
auto r2 = new Supla::Control::Relay(pin2, false); // przekaźnik na pin2 sterowany stanem niskim
Code: Select all
r1->setDefaultStateOn(); // po uruchomieniu urządzenia, przekaźnik będzie włączony
r2->setDefaultStateOff(); // po uruchomieniu urządzenia, przekażnik będzie wyłączony (domyślne ustawienie)
r1->setDefaultStateRestore(); // po uruchomieniu urządzenia, przekaźnik wróci do stanu sprzed
// wyłączenia zasilania urządzenia (wymaga Storage)
r1->keepTurnOnDuration(); // przekaźnik zapamięta czas wysłany ostatnio przez serwer i będzie używał go przy
// włączeniu przekaźnika z lokalnego przycisku, lub z kodu. Aby urządzenie
// zapamiętał czas włączenia, wymagany jest Storage. Bez Storage, czas
// będzie zapamiętany tylko do resetu.
Skonfigurowanie tego spowoduje dopisanie dodatkowych danych w pamięci. Aktualnie zmiana obszaru zapisywania danych powoduje, że cały obszar jest zapisywany od nowa i dane poprzednio zapisane są tracone. Dlatego wszystkie elementy naszego urządzenia należy skonfigurować "na stałe" i nie modyfikować tych ustawień później.
Przy keepTurnOnDuration, najlepiej jest zostawić "default state OFF". Przy "restore" nie będzie przywrócony pozostały czas świecenia - w takim wypadku, jeśli urządzenie wyłączyło się, gdy przekaźnik był włączony np na 2 min i pozostało 15 s, to po resecie włączy się ponownie na 2 min.
Klasa Relay ma dostępne następujące metody, które możemy wywoływać z kodu:
Code: Select all
r1->turnOn(); // włącza przekaźnik. Jeśli mamy ustawione "keepTurnOnDuration", to
// zostanie użyty zapisany wcześniej czas włączenia
r1->turnOn(czas_w_milisekundach); // włącza przekaźnik na określony czas
r1->turnOff(); // wyłącza przekaźnik
r1->toggle(); // przeałącza przekaźnik
r1->isOn(); // zwraca true/false w zależności od tego czy przekaźnik jest włączony czy nie
Code: Select all
auto b1 = new Supla::Control::Button(pin3, true, true); // przycisk na pin3, z input pullup i odwróconą logiką (zwieranie do gnd)
b1->addAction(Supla::TURN_ON, r1, Supla::ON_PRESS);
TURN_ON - włącza przekaźnik - jeśli był ustawiony keepTurnOnDuration, to przekaźnik włączy się na wcześniej zapisany okres czasu.
TURN_OFF- wyłącza przekaźnik
TOGGLE - przełącza przekaźnik. Jeśli był ustawiony keepTurnOnDuration, to przy włączeniu przekaźnika będzie on włączony na określony czas.
VirtualRelay działa analogicznie jak Relay, z tą różnicą, że jest to wirtualny przekaźnik bez powiązania z fizycznym pinem.
Code: Select all
#include <supla/control/virtual_relay.h>
new Supla::Control::VirtualRelay();
LightRelay to przekaźnik dedykowany do oświetlenia z opcją programowania czasu żywotności źródła światła. Taki kanał po kliknięciu w aplikacji na ikonkę (i) pozwala zobaczyć dodatkowe informacje związane z żywotnością źródła światła oraz łącznym czasem włączenia. Z aplikacji można ustawić żywotność oraz resetować licznik. Użycie tej klasy wymaga Storage.
Code: Select all
#include <supla/control/light_relay.h>
new Supla::Control::LightRelay(pin, true); // drugi parametr oznacza sterowanie stanem wysokim (true)
BistableRelay służy do sterowania zewnętrznym przekaźnikiem bistabilnym. BistableRelay podaje krótkie impulsy 200 ms do przełączania stanu przekaźnika. Do prawidłowego działania potrzebny jest dodatkowe wejście na pin ze stanem przekaźnika. Jeśli pin stanu nie jest zdefiniowany, to urządzenie nie wie w jakim stanie jest przekaźnik bistabilny i będzie wyłał impuls 200 ms na każdą akcję i może mieć odwrotne działanie do oczekiwanego (np. włączenie przekaźnika może go w rzeczywistości wyłączyć).
Code: Select all
#include <supla/control/bistable_relay.h>
new Supla::Control::BistableRelay(pinRelay, pinStatus, statusPullUp, statusHighIsOn, relayHighIsOn);
statusHighIsOn - wartość true oznacza, że stan wysoki na pinStatus oznacza, że przekaźnik jest włączony
relayHighIsOn - true - sterownie stanem wysokim, false - sterowanie stanem niskim