Akcje warunkowe w Arduino IDE

krycha88
Posts: 5243
Joined: Fri Nov 16, 2018 7:25 am

Post

Może warunkowanie powinno w jakiś sposób reagować na wartości kanałów:

Code: Select all

TEMPERATURE_NOT_AVAILABLE
HUMIDITY_NOT_AVAILABLE
DISTANCE_NOT_AVAILABLE
teraz otrzymanie błędu wyniku zwłaszcza dla temperatury może być dość niepożądane.
https://gui-generic-builder.supla.io/
krycha88
Posts: 5243
Joined: Fri Nov 16, 2018 7:25 am

Post

czy warunkowanie zadziała dla DimmerLeds, RGBLeds oraz RGBWLeds?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Sun Mar 14, 2021 4:03 pm czy warunkowanie zadziała dla DimmerLeds, RGBLeds oraz RGBWLeds?
Warunek zależny od jasności? Nie ma tego zaimplementowanego. Co byś chciał zrobić i w jakim celu?
Widzimy się na Supla Offline Party vol. 2 :!:
krycha88
Posts: 5243
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Sun Mar 14, 2021 5:33 pm
krycha88 wrote: Sun Mar 14, 2021 4:03 pm czy warunkowanie zadziała dla DimmerLeds, RGBLeds oraz RGBWLeds?
Warunek zależny od jasności? Nie ma tego zaimplementowanego. Co byś chciał zrobić i w jakim celu?
chciałbym wyłączyć taśmy LED jeżeli urządzenie nagrzeje się do niepożądanej temperatury.
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Ok, czyli na rgbw chcesz wykonać akcję. Będzie to działać z termometrem, tylko musisz użyć odpowiednich dla rgbw akcji (przejrzyj sobie w rgbw_base.cpp)
Widzimy się na Supla Offline Party vol. 2 :!:
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

Czy dobrze rozumiem, że te akcje wykonywane są lokalnie na urządzeniu? Jeśli tak to może (o ile by się dało) dodać możliwość wywołania własnej funkcji w momencie zadziałania warunku? Wtedy można byłoby np. wysłać mail'a jako rodzaj powiadomienia o np. przekroczonej temperaturze.
User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

andrew01 wrote: Wed Mar 24, 2021 5:46 pm Czy dobrze rozumiem, że te akcje wykonywane są lokalnie na urządzeniu? Jeśli tak to może (o ile by się dało) dodać możliwość wywołania własnej funkcji w momencie zadziałania warunku? Wtedy można byłoby np. wysłać mail'a jako rodzaj powiadomienia o np. przekroczonej temperaturze.
Jest już taka możliwość.
https://www.facebook.com/groups/supladiy/
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

A podpowiesz jak to uzyskać? Nie wiem czy mówimy o tym samym ale chodziło o coś takiego:

myAction()
{
//jakieś działanie
}

termometr.addAction(myAction(), OnLess(21.8));

Czyli aby wykonała się funkcja myAction w momencie gdy np. temperatura spadnie poniżej 21.8.

Wiem, że podobną funkcjonalność można zrobić scenami itp. ale to by było dużo prostsze i bardziej elastyczne.
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

andrew01 wrote: Thu Mar 25, 2021 8:00 am A podpowiesz jak to uzyskać? Nie wiem czy mówimy o tym samym ale chodziło o coś takiego:

myAction()
{
//jakieś działanie
}

termometr.addAction(myAction(), OnLess(21.8));

Czyli aby wykonała się funkcja myAction w momencie gdy np. temperatura spadnie poniżej 21.8.

Wiem, że podobną funkcjonalność można zrobić scenami itp. ale to by było dużo prostsze i bardziej elastyczne.
Coś takiego:

Code: Select all

#include <supla/action_handler.h>

#define MOJA_AKCJA_1 1;
#define MOJA_AKCJA_2 2;

class MojaAkcja : public Supla::ActionHandler {
  public:
    void handleAction(int event, int action) {
      if (action == MOJA_AKCJA_1) {
        // zadania dla akcji 1
      } else if (action == MOJA_AKCJA_2) {
       // zadania dla akcji 2
      }  
    }
};

// setup:
MojaAkcja egzekutor;
button->addAction(MOJA_AKCJA_1, egzekutor, ON_PRESS);
Trzeba tylko pamiętać, że niektóre klasy (np. button) wykonują handleAction w ramach obsługi przerwań/timerów, więc w handleAction można dawać ograniczony zestaw poleceń (na penwo nie należy wykonywać połączeń do innych serwerów). Aby to zrobić, to w obsłudze akcji możemy przestawiać jakąś flagę i sprawdzać ją w iterate i tam wykonywać akcję.
Widzimy się na Supla Offline Party vol. 2 :!:
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

Pełna profeska, dzięki bardzo :)

Return to “Arduino IDE”