Proste dodanie dwóch guzików
-
PrzemexPL
- Posts: 23
- Joined: Fri May 01, 2020 2:14 pm
Witam. Testuję, ustawiam jednak błądzę we mgle. Potrzebuje sterować dwoma GPIO w ESPie-07 z telefonu. Nie ma fizycznych guzików. Tylko w telefonie chcę dwa kanały z guzikami które po kliknięciu działają sekundę. Na zasadzie włączenia kompa. Proszę o pomoc lub jakiś przykład. Nie do końca rozumiem też zastosowanie czegoś takiego jak 'relay' Tak jakby to był mój guzik a SUPLA::CONTROL::BUTTON to inny guzik?
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Klasy "Button" są do fizycznych przycisków podłączanych do ESP.PrzemexPL wrote: Fri Jan 24, 2025 10:45 am Witam. Testuję, ustawiam jednak błądzę we mgle. Potrzebuje sterować dwoma GPIO w ESPie-07 z telefonu. Nie ma fizycznych guzików. Tylko w telefonie chcę dwa kanały z guzikami które po kliknięciu działają sekundę. Na zasadzie włączenia kompa. Proszę o pomoc lub jakiś przykład. Nie do końca rozumiem też zastosowanie czegoś takiego jak 'relay' Tak jakby to był mój guzik a SUPLA::CONTROL::BUTTON to inny guzik?
Ty nie podłączasz przycisku, tylko przekaźnik Relay, który ma się załącyzć na "1 s".
Dlatego potrzebujesz dodać Relay.
Najlepsze suple dla Twojego domu 
-
PrzemexPL
- Posts: 23
- Joined: Fri May 01, 2020 2:14 pm
Okej czyli dodaję coś takiego:
a niżej:
??
Code: Select all
auto sw_relay = new Supla::Control::Relay(SW_BTN);
auto rst_relay = new Supla::Control::Relay(RST_BTN);
Code: Select all
auto at = new Supla::Control::ActionTrigger();
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
at->setRelatedChannel(relay);??
-
PrzemexPL
- Posts: 23
- Joined: Fri May 01, 2020 2:14 pm
Okej, mam włączniki w supli. Fajnie. A pomożesz je przerobić, ponieważ działają na zasadzie on/off a ja potrzebuję click na chwilkę i tyleklew wrote: Fri Jan 24, 2025 11:06 am AT jest do przycisków, a nie przekaźników.
Także tylko te 2x Relay
-
Pietras81
- Posts: 2409
- Joined: Sun Feb 17, 2019 6:56 am
- Location: Osielsko
- Been thanked: 1 time
Zmień funkcję w cloud na schodowy i ustaw czas.
https://pietras-81.aqi.eco/
-
PrzemexPL
- Posts: 23
- Joined: Fri May 01, 2020 2:14 pm
A programowo nie da rady tego zrobić? Chciałbym, aby użytkownik miał jak najmniej do konfiguracji. Chyba, że połączę zwykły kod z suplą i użyje delay'ów
W starym kodzie mam Bistabilny Relay
-
malarz
- Posts: 506
- Joined: Wed Jan 27, 2021 4:04 pm
- Been thanked: 2 times
Funkcję możesz zmienić:
Ale czas jest chyba z założenia ustawiany na serwerze. Jest co prawda funkcja setMinimumAllowedDurationMs, ale nie wiem czy to jakoś wpłynie na początkowe ustawienie po rejestracji urządzenia w cloudzie.
Zawsze możesz zrobić nową klasę, dziedziczącą po Relayu i tam na stałe wprowadzić długość impulsu.
Code: Select all
auto sw_relay = new Supla::Control::Relay(SW_BTN);
sw_relay->getChannel()->setDefault(SUPLA_CHANNELFNC_STAIRCASETIMER);
Zawsze możesz zrobić nową klasę, dziedziczącą po Relayu i tam na stałe wprowadzić długość impulsu.
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
-
PrzemexPL
- Posts: 23
- Joined: Fri May 01, 2020 2:14 pm
O to to to, jak to zrobićmalarz wrote: Sat Jan 25, 2025 11:54 am Zawsze możesz zrobić nową klasę, dziedziczącą po Relayu i tam na stałe wprowadzić długość impulsu.
EDIT:
Ogólnie myślałem, że mogę software'owo ustawić 1000ms który mi po prostu wyłącza guzik ale widzę w przykładach, że to nie tak łatwo się da coś co według mnie powinno być łatwe
-
malarz
- Posts: 506
- Joined: Wed Jan 27, 2021 4:04 pm
- Been thanked: 2 times
Coś takiego (piszę z głowy, nietestowane):
Code: Select all
class MojRelay : public Supla::Control::Relay {
public:
MojRelay(int pin)
: Relay(pin) {
setChannelFunction(SUPLA_CHANNELFNC_STAIRCASETIMER); // wstawiamy funkcję relay'a
}
onLoadState() override
: onLoadState() {
durationMS = 3000; // tu na siłę wrzucony czas impulsu w ms, czyli 3 sek.
}
};
a potem:
Code: Select all
auto sw_relay = new MojRelay(SW_BTN);
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
