Wyzwalacz Akcji / Action Trigger

User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Na branchu develop https://github.com/SUPLA/supla-arduino/tree/develop wrzuciłem wstępną wersję wsparcia dla ActionTrigger (AT) dla biblioteki SuplaDevice.

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:

Code: Select all

#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);
W przypadku powiązania z buttonem, zostaną automatycznie dodane wszystkie dostępne akcje (zależnie od tego czy przycisk jest bistabilny czy monostabilny - https://github.com/SUPLA/supla-arduino/ ... to.h#L1841 ).
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:

Code: Select all

#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);
Tutaj AT będzie miał tylko wyzwalacze, które określimy w ramach metod addAction i nie ma dodanej żadnej automatyki wyłączającej inne akcje, gdy coś jest ustawione w Cloud.
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.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Wed Nov 03, 2021 2:56 pm
Wszystko jasne, dzięki :)

Po dodaniu AT konieczna będzie ponowna rejestracja urządzenia?
Zresetuje się alokacja pamięci?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

AT nie rusza pamięci, więc nic się nie zepsuje.
O ile AT dodasz na końcu, to ponowna rejestracja też nie będzie konieczna
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Wed Nov 03, 2021 3:32 pm AT nie rusza pamięci, więc nic się nie zepsuje.
O ile AT dodasz na końcu, to ponowna rejestracja też nie będzie konieczna
Ok, fakt.

Jak dobrze rozumiem, w wariancie pierwszym jeśli przypiszę AT do przycisku, a także będę miał przypisane akcje do ON_CLICK_1,2,3 to te wyzwalacze znikną z Cloud?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

lukfud wrote: Wed Nov 03, 2021 3:37 pm
klew wrote: Wed Nov 03, 2021 3:32 pm AT nie rusza pamięci, więc nic się nie zepsuje.
O ile AT dodasz na końcu, to ponowna rejestracja też nie będzie konieczna
Ok, fakt.

Jak dobrze rozumiem, w wariancie pierwszym jeśli przypiszę AT do przycisku, a także będę miał przypisane akcje do ON_CLICK_1,2,3 to te wyzwalacze znikną z Cloud?
Nie znikną. W nowej wersji Cloud pojawi się informacja, że ustawienie czegoś na tej akcji spowoduje wyłączenie lokalnej funkcji
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Wed Nov 03, 2021 3:56 pm Nie znikną. W nowej wersji Cloud pojawi się informacja, że ustawienie czegoś na tej akcji spowoduje wyłączenie lokalnej funkcji
Ok, dzięki, czas na testy :)
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

8-)
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Dodam jeszcze tylko że została też podniesiona domyślna wersja wymaganego protokołu Supli do 16.
Także jeśli ktoś używa prywatnych serwerów, to muszą być aktualne aby to działało
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Wed Nov 03, 2021 9:01 pm Dodam jeszcze tylko że została też podniesiona domyślna wersja wymaganego protokołu Supli do 16.
Także jeśli ktoś używa prywatnych serwerów, to muszą być aktualne aby to działało

Code: Select all

Clock class added
Supla - starting initialization
Storage initialization
readStorage: 8; Read: [53 55 50 4C 41 1 0 0 ]
Storage: Number of sections 0
Validating storage state section with current device configuration
Element state section size doesn't match current device configuration
 **** Digital write[0], pin: 12; value: 0
Channel[1] setting func list: 1024
Channel[1] setting func list: 3072
Channel[1] setting func list: 7168
Channel[1] setting func list: 15360
Channel[1] setting func list: 31744
Channel[1] setting func list: 64512
 **** Digital write[2], pin: 14; value: 0
Channel[3] setting func list: 1
Channel[3] setting func list: 3
Channel[3] setting func list: 7
Channel[3] setting func list: 15
Channel[3] setting func list: 31
Channel[3] setting func list: 63
Channel[3] setting func list: 127
Initializing network layer
WiFi: establishing connection with SSID: "supla_dev"
Using Supla protocol version 16
Current status: [5] SuplaDevice initialized
Current status: [8] No connection to network
Initialization of elementStateOffset: 1545
Update Storage preamble
Wrote 8 bytes to storage at 1537
Wrote 7 bytes to storage at 1545
Commit
local IP: 10.0.4.151
subnetMask: 255.255.255.0
gatewayIP: 10.0.4.1
Signal strength (RSSI): -64 dBm
Establishing Secured connection without certificate matching with: svr30.supla.org (port: 2016)
Connected to Supla Server
Current status: [10] Register in progress
Device registered (activity timeout 120 s, server version: 16, server min version: 1)
Current status: [17] Registered and ready
Changing activity timeout to 30
Activity timeout set to 30 s
Current local time: 1970-1-1 0:0:4
Received local time from server: 2021-11-3 23:5:2
AT[1] received config with active actions: 0
AT[3] received config with active actions: 0
Póki co jest dobrze :)

Testuję dla mono i bistabilnego przycisku. Mam ustawioną swoją akcję na przytrzymanie i ustawienie wyzwalacza na przytrzymanie w Cloud wyłącza lokalną akcję, ale wyczyszczenie jej w Cloud nie przywraca już lokalnej akcji. Po restarcie ESP wraca.
Przy okazji, leci u mnie "repeatOnHoldEvery" na "przełącz" w Cloud :lol:

W sumie nie tylko przytrzymanie, żadna lokalna nie wraca :(
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
local
Posts: 545
Joined: Mon Jan 27, 2020 11:33 am

Post

W przypadku braku neta w ramach jednego urządzenia nie będzie można uruchomić przekaźnika przyciskiem z AT ?
4xShelly 1, Shelly 1L, 2xShelly 2.5, Sonoff T3, 2xSonoff Basic R2, 4xNeo 16A

Return to “Arduino IDE”