Obsługa przycisków w SuplaDevice

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

Post

Wczoraj dodałem pierwszy zarys obsługi przycisków. Kod na razie jest na moim githubie: https://github.com/klew/arduino

Na chwilę obecną pojawiła się tam klasa Supla::Control::Button z obsługą dwóch zdarzeń "ON_PRESS" i "ON_RELEASE".
Przycisk może na razie pracować z klasą Supla::Control::Relay i wywoływać akcje TURN_ON, TURN_OFF i TOGGLE.

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/button.h>

Supla::ESPWifi wifi("ssid", "password");

const char* srv_addr        = "svr1.supla.org";
const char* srv_email       = "email@email.com";

Supla::Control::Relay relay(D9);
Supla::Control::Button button(D13, true);

void setup() {
  Serial.begin(115200);
  uint8_t mac[6];
  WiFi.macAddress(mac);
  char GUID[SUPLA_GUID_SIZE] = { ... };
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {...};

  button.willTrigger(relay, Supla::ON_PRESS, Supla::TOGGLE);
//  button.willTrigger(relay, Supla::ON_RELEASE, Supla::TURN_OFF);

  SuplaDevice.begin(GUID,srv_addr,srv_email,AUTHKEY);
}
void loop() {
  SuplaDevice.iterate();
}
To tylko zarys wsparcia przycisków i będzie to jeszcze rozbudowane.
Logika przycisku też działa na odwrót na chwilę obecną ;)

Do przycisku będzie można przypisać dodolne akcje i dowolną ilość triggerowanych obiektów.
Nawet termostat da się na tym zrobić ;P - ale o tym później.
Kiedy będzie Supla Offline Party / SOP#2025 ?
User avatar
QLQ
Posts: 2341
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Post

klew wrote: Sat Feb 15, 2020 9:03 am Wczoraj dodałem pierwszy zarys obsługi przycisków. Kod na razie jest na moim githubie: https://github.com/klew/arduino

Na chwilę obecną pojawiła się tam klasa Supla::Control::Button z obsługą dwóch zdarzeń "ON_PRESS" i "ON_RELEASE".
Przycisk może na razie pracować z klasą Supla::Control::Relay i wywoływać akcje TURN_ON, TURN_OFF i TOGGLE.

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/button.h>

Supla::ESPWifi wifi("ssid", "password");

const char* srv_addr        = "svr1.supla.org";
const char* srv_email       = "email@email.com";

Supla::Control::Relay relay(D9);
Supla::Control::Button button(D13, true);

void setup() {
  Serial.begin(115200);
  uint8_t mac[6];
  WiFi.macAddress(mac);
  char GUID[SUPLA_GUID_SIZE] = { ... };
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {...};

  button.willTrigger(relay, Supla::Control::Button::ON_PRESS, Supla::Control::Relay::TOGGLE);
//  button.willTrigger(relay, Supla::Control::Button::ON_RELEASE, Supla::Control::Relay::TURN_OFF);

  SuplaDevice.begin(GUID,srv_addr,srv_email,AUTHKEY);
}
void loop() {
  SuplaDevice.iterate();
}
To tylko zarys wsparcia przycisków i będzie to jeszcze rozbudowane.
Logika przycisku też działa na odwrót na chwilę obecną ;)

Do przycisku będzie można przypisać dodolne akcje i dowolną ilość triggerowanych obiektów.
Nawet termostat da się na tym zrobić ;P - ale o tym później.
Ooo w końcu będę mógł zaszaleć :mrgreen: :mrgreen:
jak coś nie działa to włącz zasilanie.....
daniel
Posts: 34
Joined: Thu Feb 15, 2018 7:29 am

Post

@klew jak dodałem przekaźnik w setup() tak jak podałeś tu viewtopic.php?f=61&t=5486&start=200#

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/button.h>

Supla::ESPWifi wifi("ssid", "password");

const char* srv_addr        = "svr1.supla.org";
const char* srv_email       = "email@email.com";

Supla::Control::Relay *relay = nullptr;
Supla::Control::Button button(4, true);

void setup() {
  Serial.begin(115200);
  uint8_t mac[6];
  WiFi.macAddress(mac);
  char GUID[SUPLA_GUID_SIZE] = {};
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {};
  relay = new Supla::Control::Relay(2);
  button.willTrigger(relay, Supla::Control::Button::ON_PRESS, Supla::Control::Relay::TOGGLE);
//  button.willTrigger(relay, Supla::Control::Button::ON_RELEASE, Supla::Control::Relay::TURN_OFF);

  SuplaDevice.begin(GUID,srv_addr,srv_email,AUTHKEY);
}
void loop() {
  SuplaDevice.iterate();
}
to wyrzuca:

Code: Select all

/home/daniel/Arduino/szkice/test/test.ino:21:92: error: no matching function for call to 'Supla::Control::Button::willTrigger(Supla::Control::Relay*&, Supla::Control::Button::Event, Supla::Control::Relay::Action)'
:cry:
User avatar
klew
Posts: 9632
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

daniel wrote: Tue Feb 18, 2020 2:34 pm to wyrzuca:

Code: Select all

/home/daniel/Arduino/szkice/test/test.ino:21:92: error: no matching function for call to 'Supla::Control::Button::willTrigger(Supla::Control::Relay*&, Supla::Control::Button::Event, Supla::Control::Relay::Action)'
:cry:
"willTrigger" przyjmuje referencję na obiekt, a u Ciebie "relay" jest wskaźnikiem. Zrób tak:

Code: Select all

 button.willTrigger(*relay, Supla::Control::Button::ON_PRESS, Supla::Control::Relay::TOGGLE);
 
Kiedy będzie Supla Offline Party / SOP#2025 ?
daniel
Posts: 34
Joined: Thu Feb 15, 2018 7:29 am

Post

Dzięki działa :D , przy okazji zapytam czy analogicznie do przekaźnika można dodać przycisk w setupie, i jak w setupie aktywować wifi na ESP.
User avatar
klew
Posts: 9632
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

daniel wrote: Tue Feb 18, 2020 2:58 pm Dzięki działa :D , przy okazji zapytam czy analogicznie do przekaźnika można dodać przycisk w setupie, i jak w setupie aktywować wifi na ESP.
Można, tylko trzeba odpowiednio używać wskaźników i zmiennych
Kiedy będzie Supla Offline Party / SOP#2025 ?
daniel
Posts: 34
Joined: Thu Feb 15, 2018 7:29 am

Post

Ok, dzięki. Swoją drogą nowa wersja SuplaDevice to już kawał dobrej roboty. Powodzenia!
User avatar
lukfud
Posts: 2258
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Sat Feb 15, 2020 9:03 am Wczoraj dodałem pierwszy zarys obsługi przycisków. Kod na razie jest na moim githubie: https://github.com/klew/arduino
Na chwilę obecną pojawiła się tam klasa Supla::Control::Button z obsługą dwóch zdarzeń "ON_PRESS" i "ON_RELEASE".
Przycisk może na razie pracować z klasą Supla::Control::Relay i wywoływać akcje TURN_ON, TURN_OFF i TOGGLE.
To tylko zarys wsparcia przycisków i będzie to jeszcze rozbudowane.
Logika przycisku też działa na odwrót na chwilę obecną ;)
Do przycisku będzie można przypisać dodolne akcje i dowolną ilość triggerowanych obiektów.
Nawet termostat da się na tym zrobić ;P - ale o tym później.
Czy przy tej obsłudze, będzie przewidziane podwójne sprawdzanie stanu (filtr), które stosujemy przy np. Sonoff MINI?
https://www.facebook.com/groups/supladiy/
User avatar
klew
Posts: 9632
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

lukfud wrote: Wed Feb 19, 2020 8:35 am Czy przy tej obsłudze, będzie przewidziane podwójne sprawdzanie stanu (filtr), które stosujemy przy np. Sonoff MINI?
Tak, dodam to. Ogólnie przycisk będzie rozbudowany również o detekcję wieloklików, przytrzymania itp. Jak ktoś ma jakieś pomysły na to co można tam zrobić (np. wystukanie melodii), to niech pisze.
Kiedy będzie Supla Offline Party / SOP#2025 ?
User avatar
lukfud
Posts: 2258
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Sat Feb 15, 2020 9:03 am Na chwilę obecną pojawiła się tam klasa Supla::Control::Button z obsługą dwóch zdarzeń "ON_PRESS" i "ON_RELEASE".
Wydaje mi się, że działanie jest odwrotne, bynajmniej u mnie działa odwrotnie.
https://www.facebook.com/groups/supladiy/

Return to “Arduino IDE”