Obsługa przycisków w SuplaDevice

Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

Dzięki !!!
A ja tego szukałem, szukałem w SuplaDevice.
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Patryk pisze: pn kwie 12, 2021 9:20 pm Dzięki !!!
A ja tego szukałem, szukałem w SuplaDevice.
Tam też jest ;)
https://www.facebook.com/groups/supladiy/
Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

lukfud pisze: pn kwie 12, 2021 9:11 pm
dodaj jeszcze:

Kod: Zaznacz cały

button->setStep(1);
Jak dodam:

Kod: Zaznacz cały

button->setStep(1);
mam błąd kompilacji (GUI-Generic v2.0.5):

Kod: Zaznacz cały


sketch\SuplaDeviceGUI.cpp: In function 'void Supla::GUI::addRGBWLeds(uint8_t)':

SuplaDeviceGUI.cpp:315:15: error: 'class Supla::Control::Button' has no member named 'setStep'

       button->setStep(1); // nowy

               ^

exit status 1

'class Supla::Control::Button' has no member named 'setStep'

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

Patryk pisze: pn kwie 19, 2021 4:02 am
Wybacz, pomyliłem się..

Kod: Zaznacz cały

rgbw->setStep(1);
zamiast "button->"
https://www.facebook.com/groups/supladiy/
Tomasz_D
Posty: 4
Rejestracja: pt lip 02, 2021 1:53 pm

Witam

Mam problem w zdefiniowaniu wejść dla przycisków dla płytki ESP32.
Przyciski nie chcą działać na większości GPIO.
W załączonym kodzie działają przyciski P3 i P4 podłączone pod wejścia 34 i 35.
Czy trzeba zdefiniować w jakiś sposób wejścia?
Wszystkie 4 przekaźniki działają z aplikacji, tylko 3 i 4 z przycisków.
Wg opisu GPIO 32 i 33 realizują zarówno wejścia jak i wyjścia

Czy ktoś może pomóc?

/*
próba sterowania 4 przekaźników 4 przyciskami
*/


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


uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};

#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("xxxxx", "xxxxxx");


Supla::Control::Relay K1(12 ,false); //D12 / lewa strona 4 / przód garaż
Supla::Control::Relay K2(2 ,false); //D2 / prawa strona 4 / przód weście
Supla::Control::Relay K3(3 ,false); //RX / prawa srona 13 / przód kuchnia
Supla::Control::Relay K4(4 ,false); //D4 / prawa strona 5 / tył salon 1 (prawa)
Supla::Control::Button P1(32, true);
Supla::Control::Button P2(33, true);
Supla::Control::Button P3(34, true); //D34 / lewa strona 12
Supla::Control::Button P4(35, true); //D35 / lewa strona 11

void setup() {

Serial.begin(115200);


// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {xxxxx};

// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {xxxxxx;





P1.addAction(Supla::TOGGLE, K1, Supla::ON_PRESS);
P2.addAction(Supla::TOGGLE, K2, Supla::ON_PRESS);
P3.addAction(Supla::TOGGLE, K3, Supla::ON_PRESS);
P4.addAction(Supla::TOGGLE, K4, Supla::ON_PRESS);

SuplaDevice.begin(GUID, // Global Unique Identifier
"xxxxxxx", // SUPLA server address
"xxxxxxx", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key

}

void loop() {
SuplaDevice.iterate();
} Pozdrawiam

Tomasz
vajera
Posty: 387
Rejestracja: śr paź 31, 2018 7:58 am

ESP32 nie jest chyba obsługiwany?
Awatar użytkownika
lukosław
Posty: 116
Rejestracja: pn paź 28, 2019 8:20 am

Cześć, proszę o podpowiedź.

Zdefiniowałem sobie button i 2 przekaźniki

Kod: Zaznacz cały

  auto buttonLight = new Supla::Control::Button(EX_OUTPUT, PIN_BUTTON_LIGHT);
  auto relayLight = new Supla::Control::Relay(EX_OUTPUT, PIN_RELAY_LIGHT, false);
  auto modeVirtualRelay = new Supla::Control::VirtualRelay();

  buttonLight->setHoldTime(2000);
  buttonLight->addAction(Supla::TOGGLE, relayLight, Supla::ON_RELEASE);
  buttonLight->addAction(Supla::TOGGLE, modeVirtualRelay, Supla::ON_HOLD);
Chciałbym aby krótkie wciśnięcie włączyło przekaźnik relayLight, a długie przytrzymanie virtualRelay. Przytrzymanie działa, ale wykonuje się też akcja dla krótkiego wciśnięcia. Czy powinienem jeszcze coś ustawić?
zzrr
Posty: 343
Rejestracja: śr paź 26, 2022 7:35 pm

lukosław pisze: śr gru 20, 2023 9:41 pm Cześć, proszę o podpowiedź.

Zdefiniowałem sobie button i 2 przekaźniki

Kod: Zaznacz cały

  auto buttonLight = new Supla::Control::Button(EX_OUTPUT, PIN_BUTTON_LIGHT);
  auto relayLight = new Supla::Control::Relay(EX_OUTPUT, PIN_RELAY_LIGHT, false);
  auto modeVirtualRelay = new Supla::Control::VirtualRelay();

  buttonLight->setHoldTime(2000);
  buttonLight->addAction(Supla::TOGGLE, relayLight, Supla::ON_RELEASE);
  buttonLight->addAction(Supla::TOGGLE, modeVirtualRelay, Supla::ON_HOLD);
Chciałbym aby krótkie wciśnięcie włączyło przekaźnik relayLight, a długie przytrzymanie virtualRelay. Przytrzymanie działa, ale wykonuje się też akcja dla krótkiego wciśnięcia. Czy powinienem jeszcze coś ustawić?
No to jeśli żeby włączyło to spróbuj TURN_ON zamias TOGGLE. I nie wiem czy zamiast ON_RELEASE nie powinno być ON_PRESS
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

lukosław pisze: śr gru 20, 2023 9:41 pm

Kod: Zaznacz cały

buttonLight->addAction(Supla::TOGGLE, relayLight, Supla::ON_CLICK_1);
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
lukosław
Posty: 116
Rejestracja: pn paź 28, 2019 8:20 am

lukfud pisze: śr gru 20, 2023 10:08 pm
lukosław pisze: śr gru 20, 2023 9:41 pm

Kod: Zaznacz cały

buttonLight->addAction(Supla::TOGGLE, relayLight, Supla::ON_CLICK_1);
Działa pięknie. Dziękuję!
ODPOWIEDZ

Wróć do „Arduino IDE”