Aktualizacja GUI-Generic 6.1.0

User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Wed Jun 21, 2023 10:54 am
klew wrote: Wed Jun 21, 2023 10:41 am Ogólnie wszystko "po staremu" powinno działać. Ale jeśli chciałbyś użyć tych "nowości", to należałoby zacząć używać relay->attach(button). Ogólnie to upraszcza nieco kod, bo nie musisz samemu ustawiać odpowiednich akcji na przyciskach i przekaźnikach - same się ustawiają ;)
Czyli nie używamy już addAction? A jedynie setButtonType()? Jeżeli tak to trochę to komplikuje przejście na tak uproszony mechanizm bo do tej pory była dowolność. Łatwiej byłoby z jakimś aktualnym przykładem gdzieś na forum bo nie jestem na bieżąco a dużo się zmienia.
Możesz używać nadal "addAction" i nic nie trzeba zmieniać.

Cały ten temat wynika z tego, że zachowanie przycisków zmienia się zależenie od ustawień (np. wejście w tryb cfg, albo ustawienie AT w Cloud). Wtedy urządzenie samo przestawia akcje z "on_press" na "on_click_1" itd. Analogicznie przestawi spowrotem z "on_click_1" na "on_press" jeśli wyłączysz AT w cloud. Jest tam dużo logiki i wg mnie to jest skomplikowane ;).
Samo "addAction" działa po staremu, ale nie da Ci tych możliwości jak opisane powyżej i urządzenie nie będzie rekonfigurować zachowania przycisków w locie.
Kiedy będzie Supla Offline Party / SOP#2025 ?
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Chyba doszliśmy to tego aby skorzystać z MOTION_SENSOR to najlepiej to przerobić :) Zastanawiam się jak to zrobić aby zachować stare GUI i nie popsuć aktualnych konfiguracji. Gdzie było można dowolnie ustawiać action oraz event.
https://gui-generic-builder.supla.io/
robertklepacki94
Posts: 1169
Joined: Thu Sep 02, 2021 1:06 pm

Post

Kurde nie myślałem że to aż tyle roboty :shock:
Wziąłem udział w Supla Offline Party 2023
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Wed Jun 21, 2023 10:26 am Ogólnie jest to dość zawiła funkcjonalność i nie radziłbym robić tego samemu ;). Lepiej jest dodać instancje klas Button, Relay, ActionTrigger i przycisk podłączyć do relay->attach(button); i analogicznie at->attach(button);
Reszta powinna się sama poustawiać zależnie jaki ustawisz tryb przycisku (setButtonType(mono/bi/motion..))
jak dla button->setButtonType(Supla::Control::Button::ButtonType::MONOSTABLE) ustawić aby ragowało na Supla::Event::ON_RELEASE :)
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Thu Jun 22, 2023 6:06 am
klew wrote: Wed Jun 21, 2023 10:26 am Ogólnie jest to dość zawiła funkcjonalność i nie radziłbym robić tego samemu ;). Lepiej jest dodać instancje klas Button, Relay, ActionTrigger i przycisk podłączyć do relay->attach(button); i analogicznie at->attach(button);
Reszta powinna się sama poustawiać zależnie jaki ustawisz tryb przycisku (setButtonType(mono/bi/motion..))
jak dla button->setButtonType(Supla::Control::Button::ButtonType::MONOSTABLE) ustawić aby ragowało na Supla::Event::ON_RELEASE :)
Nie ma takiej opcji ;).
Jeśli jest bardzo potrzebna to mogę na szybko dodać
Kiedy będzie Supla Offline Party / SOP#2025 ?
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Thu Jun 22, 2023 6:19 am Nie ma takiej opcji ;).
Jeśli jest bardzo potrzebna to mogę na szybko dodać
Bardzo nie jest potrzebne, ale jeżeli bym miał przerobić przyciski to taka opcja byłaby pożądana aby zachować spójność do tego co było.
https://gui-generic-builder.supla.io/
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Thu Jun 22, 2023 6:19 am Nie ma takiej opcji ;).
Jeśli jest bardzo potrzebna to mogę na szybko dodać
stary kod

Code: Select all

      if (ConfigESP->getEvent(pinButton) == Supla::ON_HOLD) {
        int holdTimeMs = String(ConfigManager->get(KEY_AT_HOLD_TIME)->getValue()).toDouble() * 1000;
        button->setHoldTime(holdTimeMs);
        button->repeatOnHoldEvery(2000);
      }

      button->addAction(ConfigESP->getAction(pinButton), relay[nrButton], ConfigESP->getEvent(pinButton));
nowy kod

Code: Select all

      switch (buttonEvent) {
        case Supla::Event::ON_PRESS:
          button->setButtonType(Supla::Control::Button::ButtonType::MONOSTABLE);
          relay[nrButton]->attach(button);
          break;

        case Supla::Event::ON_RELEASE:
          button->addAction(buttonAction, relay[nrButton], buttonEvent);
          break;

        case Supla::Event::ON_CHANGE:
          button->setButtonType(Supla::Control::Button::ButtonType::BISTABLE);
          relay[nrButton]->attach(button);
          break;

        case Supla::Event::CONDITIONAL_ON_CHANGE:
          button->setButtonType(Supla::Control::Button::ButtonType::MOTION_SENSOR);
          relay[nrButton]->attach(button);
          break;

        case Supla::Event::ON_HOLD:
          int holdTimeMs = String(ConfigManager->get(KEY_AT_HOLD_TIME)->getValue()).toDouble() * 1000;
          button->setHoldTime(holdTimeMs);
          button->repeatOnHoldEvery(2000);
          button->addAction(buttonAction, relay[nrButton], buttonEvent);
          break;
      }

      if (buttonAction == Supla::Action::TURN_ON || buttonAction == Supla::Action::TURN_OFF) {
        button->addAction(buttonAction, relay[nrButton], buttonEvent);
      }
Przerobiłem przyciski aby działały za pomocą setButtonType i mam wrażenie, że straszną ifologia wyszła. @klew spojrzysz na to? :)
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Thu Jun 22, 2023 10:39 am Przerobiłem przyciski aby działały za pomocą setButtonType i mam wrażenie, że straszną ifologia wyszła. @klew spojrzysz na to? :)
Hm, to chyba wynika z tego, że GG z poziomu GUI pozwala na taką "niskopoziomową" konfigurację przycisku, poprzez określenie rodzaju eventu na jaki ma reagować.

Ta koncepcja z przyciskiem: monostabilny, bistabilnym, czujnikiem ruchu; zakłada, że nie zagłębiamy się w takie detale, tylko user mówi, jaki ma przycisk (tak bardziej po ludzku).

Tylko nie wiem, czy to za bardzo nie ingeruje w obecne podejście do konfiguracji urządzenia w GG.

Co bym radził?
- zostawić po staremu ;)
- albo przerobić całość na nowe - z tym, że tutaj może być taka trudność, że biblioteka jeszcze nie wszędzie wspiera tą metodą "attach" - np. rolety nie mają tego.
Kiedy będzie Supla Offline Party / SOP#2025 ?

Return to “GUI Generic”