Obsługa przycisków w SuplaDevice

Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: ndz sty 17, 2021 10:57 pm Wrzuciłem u mnie na branchu: getStoredDurationMs()
Aby to działało, to musi być ustawione "keepTurnOnDuration".
Dziękuję, napiszę jak coś mi z tego wyjdzie :)
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: ndz sty 17, 2021 10:57 pm
Pojawiły się błędy kompilacji po " Extracted cpp for VirtualRelay"

Kod: Zaznacz cały

E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.cpp:32:68: error: default argument given for parameter 1 of 'void Supla::Control::VirtualRelay::turnOn(int)' [-fpermissive]
 void Supla::Control::VirtualRelay::turnOn(_supla_int_t duration = 0) {
                                                                    ^
In file included from E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.cpp:17:0:
E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.h:30:8: error: after previous specification in 'virtual void Supla::Control::VirtualRelay::turnOn(int)' [-fpermissive]
   void turnOn(_supla_int_t duration = 0);
        ^
E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.cpp:45:69: error: default argument given for parameter 1 of 'void Supla::Control::VirtualRelay::turnOff(int)' [-fpermissive]
 void Supla::Control::VirtualRelay::turnOff(_supla_int_t duration = 0) {
                                                                     ^
In file included from E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.cpp:17:0:
E:\arduinoSync\Arduino_share\libraries\newSuplaDevice\src\supla\control\virtual_relay.h:31:8: error: after previous specification in 'virtual void Supla::Control::VirtualRelay::turnOff(int)' [-fpermissive]
   void turnOff(_supla_int_t duration = 0);
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: pn sty 18, 2021 12:14 pm
klew pisze: ndz sty 17, 2021 10:57 pm
Pojawiły się błędy kompilacji po " Extracted cpp for VirtualRelay"
Dzięki, już poprawione. Akurat kompilowałem lokalnie na Arduino mega i tam kompiltor to łyknął ;)
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: pn sty 18, 2021 12:45 pm Dzięki, już poprawione. Akurat kompilowałem lokalnie na Arduino mega i tam kompiltor to łyknął ;)
Teraz na ESP też :)
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

lukfud pisze: pn sty 18, 2021 8:00 am
klew pisze: ndz sty 17, 2021 10:57 pm Wrzuciłem u mnie na branchu: getStoredDurationMs()
Aby to działało, to musi być ustawione "keepTurnOnDuration".
Dziękuję, napiszę jak coś mi z tego wyjdzie :)
Coś mi z tego wyszło i nawet działa całkiem przyzwoicie.
Kilka sekund po zmianie funkcji przekaźnika i pierwszym wywołaniu z serwera, urządzenie uruchamia się ponownie ze zmienioną akcją przycisku. Zastanawiam się, czy można to zrobić inaczej / lepiej.
Patrzyłeś może na to co podrzucił Przemek? https://github.com/SUPLA/supla-core/blo ... rpc.h#L263
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt sty 19, 2021 2:51 pm
Patrzyłeś może na to co podrzucił Przemek? https://github.com/SUPLA/supla-core/blo ... rpc.h#L263
Z tego co się orientuję, to to jest do obsługi Digiglass i będzie miało dedykowaną obsługę po stronie serwera. Także tego się nie wykorzysta
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

@klew,
Czy jesteś w stanie dodać różne czasy przytrzymania? Najlepiej, aby można było wpisać swoje wartości.
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt lut 09, 2021 11:24 am @klew,
Czy jesteś w stanie dodać różne czasy przytrzymania? Najlepiej, aby można było wpisać swoje wartości.
Każdy button można osobno skonfigurować:
viewtopic.php?p=80291#p80291
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: wt lut 09, 2021 11:37 am
lukfud pisze: wt lut 09, 2021 11:24 am @klew,
Czy jesteś w stanie dodać różne czasy przytrzymania? Najlepiej, aby można było wpisać swoje wartości.
Każdy button można osobno skonfigurować:
viewtopic.php?p=80291#p80291
To wiem, ale mi chodzi bardziej o ON_SHORT_HOLD/PRESS i ON_LONG_HOLD/PRESS na jednym przycisku.
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt lut 09, 2021 11:42 am To wiem, ale mi chodzi bardziej o ON_SHORT_HOLD/PRESS i ON_LONG_HOLD/PRESS na jednym przycisku.
W zasadzie "ON_CLICK_xx" to jest "ON_SHORT" ;)
Samo "PRESS" nie może być ani LONG ani SHORT. PRESS jest wyzwalane w momencie wciśnięcia. Wtedy nie wiesz czy to będzie krótkie czy długie.

Implementacja ON_HOLD wyzwala akcje po przekroczeniu czasu trzymania. Dodając ON_SHORTER_HOLD nie wiadomo kiedy wykonać akcje. W zasadzie trzeba by je wykonywać dopiero po puszczeniu przycisku, a wtedy użytkownik nie wie czy trzymał wystarczająco długo, czy nie ;).

Natomiast zastanawiałem się nad dodaniem ON_LONG_CLICK_xx. Działałoby to tak, że po dłuższym przytrzymainu mamy alternatywne wielkokliki.

Samo ON_HOLD dostało też niedawno opcję powtarzania (zapomniałem się tym podzielić, poszło tylko na priv do jednego wybrańca ;P ):

Kod: Zaznacz cały

auto b1 = new Supla::Control::Button(...);
b1.setMulticlickTime(200);
b1.setHoldTime(400);
b1.repeatOnHoldEvery(200);

auto rgb = new MyRgb();
b1.addAction(Supla::ITERATE_DIM_RGB, rgb, Supla::ON_HOLD);
b1.addAction(Supla::TOGGLE_RGB, rgb, Supla::ON_CLICK_1);
Da to taki efekt, że kliknięcie przycisku będzie przełączało włączony/wyłączony. Natomiast przytrzymanie będzie wysyłalo ON_HOLD co 200 ms (ustawiane repeatOnHoldEvery). Akcja ITERATE_DIM_RGB będzie zmieniała colorBrightness (czyli jasność dla kanału RGB) o 5 (w zakresie 10-100) z lekką pauzą na 10 i 100. Poza ITERATE_DIM_RGB mamy też dostępny wariant ITERATE_DIM_W (jasność kanału białego oraz dimmer) oraz ITERATE_DIM_ALL (jasność kanałów RGB oraz W)
Dodatkowo gdy rgb jest wyłączone, to przytrzymanie przycisku uruchomi go z jasnością 10.
Widzimy się na Supla Offline Party vol. 2 :!:
ODPOWIEDZ

Wróć do „Arduino IDE”