Oczywiście, że wszystko trzeba z głową robić.
Dlatego też w swoich kompilacjach unikam rozwiązań nazbyt uniwersalnych, przy których niedoświadczeni użytkownicy mogą mieć problemy wynikające z niewłaściwej konfiguracji/zastosowania danego GPIO.
Obsługa przycisków w SuplaDevice
-
- Posts: 2301
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Dobrze kojarzysz. Podegrałem przed chwilą najnowszą wersję biblioteki. Zostawiłem jeden przycisk na gpio0 i dodałem na gpio4.klew wrote: Wed Feb 19, 2020 11:11 pm
Dobrze kojarzę, że button masz ustawiony na GPIO0 a relay01 na GPIO15?
GPIO0 jest "pulled up", więc tam ustawianie input pullup nic nie zmienia. W związu z tym musiałbyś tworząc buttona ustawić mu trzeci parametr na "true", aby odwrócić logikę:Druga sprawa to używanie GPIO0 do przycisku nie jest najlepszym pomysłem, bo jeśli podczas resetu układu, przycisk będzie wciśnięty, to płytka wejdzie w tryb flashowania i program się nie odpali.Code: Select all
Button(0, true, true)
Problemu z przekaźnikiem nie udało mi się zaobserwować u mnie. Napisz coś więcej - mówisz o fizycznym stanie przekaźnika (sterujesz low czy high) ? Jaki jest stan przekaźnika widoczny w aplikacji?
pinMode nie ustawiaj samemu. Klasy button, relay same sobie to ustawią bazując na parametrach, które podasz podczas ich tworzenia.
Code: Select all
Supla::Control::Button touch_button(0, true, true);
Supla::Control::Button switch_button(4);
touch_button.willTrigger(*relay01, Supla::Control::Button::ON_RELEASE, Supla::Control::Relay::TOGGLE);
- zwiera do GND
touch_button.setSwNoiseFilterDelay(100);
switch_button.willTrigger(*relay02, Supla::Control::Button::ON_PRESS, Supla::Control::Relay::TOGGLE);
- zwiera do V3,3 + 4k7
Code: Select all
Supla::Control::Button switch_button(4, true); - zwiera do GND bez rezystora.
You do not have the required permissions to view the files attached to this post.
https://www.facebook.com/groups/supladiy/
-
- Posts: 393
- Joined: Tue Oct 09, 2018 7:16 pm
- Location: Orzesze
Cześć,
Jako że szukam rozwiązania na moje problemy z InCanem (samozałączanie, niespodziewana zmiana stanu przekaźników itp.) postanowiłem przetestować obsługę przycisków w nowej SuplaDevice.
Użyłem przykładu jak wyżej. Skompilowany dla Wemosa D1 (tak sądzę, bo nie ma oznaczeń, ale to "ta duża" płytka).
Podłączone dwa przekaźniki i dwa micro switche zwierające do masy (bez PullUp'u).
Po pierwsze po podłączeniu modułu przekaźniki załączają się i wyłączają od razu po czym załączają ponownie pozostając w tym stanie.
Zarówno app jak cloud pokazują stan odwrotny (urządzenie wyłączone). Wyłączenie/załączenie przekaźników fizycznym m-switchem powoduje zmianę stanu w app i cloud na przeciwny.
Sterowanie z app i clouda powiedziałbym, że nie działa lub działa w kompletnie dla mnie niezrozumiały sposób.
Czasem próba wywołania włącz lub wyłącz z clouda powoduje pojawienie się komunikatu "Błąd wykonania akcji w Supla-Server"
Sterowanie z poziomu App w telefonie działa czasem. Natomiast mam wrażenie sporego opóźnienia.
Równocześnie sterowanie innymi urządzeniami działa bez problemu.
Dodatkowo - nie zauważam żadnej różnicy w działaniu trzeciego parametru dla Supla::Control::Button".
Np. "Supla::Control::Button button_1(D5, true, true);".
Wyjaśnię tylko - nie jestem programistą. Jestem poszukującym rozwiązania problemu człowieczkiem, który próbując analizować różne przykłady stara się zrozumieć co nieco z magii, którą tu tworzycie
Jako że szukam rozwiązania na moje problemy z InCanem (samozałączanie, niespodziewana zmiana stanu przekaźników itp.) postanowiłem przetestować obsługę przycisków w nowej SuplaDevice.
Code: Select all
Supla::Control::Relay relay_1(D1);
Supla::Control::Button button_1(D5, true);
Supla::Control::Relay relay_2(D7);
Supla::Control::Button button_2(D6, true);
button_1.willTrigger(relay_1, Supla::Control::Button::ON_RELEASE, Supla::Control::Relay::TOGGLE);
button_1.setSwNoiseFilterDelay(50);
button_2.willTrigger(relay_2, Supla::Control::Button::ON_RELEASE, Supla::Control::Relay::TOGGLE);
button_2.setSwNoiseFilterDelay(50);
Podłączone dwa przekaźniki i dwa micro switche zwierające do masy (bez PullUp'u).
Po pierwsze po podłączeniu modułu przekaźniki załączają się i wyłączają od razu po czym załączają ponownie pozostając w tym stanie.
Zarówno app jak cloud pokazują stan odwrotny (urządzenie wyłączone). Wyłączenie/załączenie przekaźników fizycznym m-switchem powoduje zmianę stanu w app i cloud na przeciwny.
Sterowanie z app i clouda powiedziałbym, że nie działa lub działa w kompletnie dla mnie niezrozumiały sposób.
Czasem próba wywołania włącz lub wyłącz z clouda powoduje pojawienie się komunikatu "Błąd wykonania akcji w Supla-Server"
Sterowanie z poziomu App w telefonie działa czasem. Natomiast mam wrażenie sporego opóźnienia.
Równocześnie sterowanie innymi urządzeniami działa bez problemu.
Dodatkowo - nie zauważam żadnej różnicy w działaniu trzeciego parametru dla Supla::Control::Button".
Np. "Supla::Control::Button button_1(D5, true, true);".
Wyjaśnię tylko - nie jestem programistą. Jestem poszukującym rozwiązania problemu człowieczkiem, który próbując analizować różne przykłady stara się zrozumieć co nieco z magii, którą tu tworzycie
-
- Posts: 10203
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Napisz jeszcze jakie masz przekaźniki? Sterowane stanem wysokim czy niskim? Jak to masz podłączone? Może jakieś zdjęcie?tomkowski wrote: Sun Mar 01, 2020 3:14 pm Cześć,
Jako że szukam rozwiązania na moje problemy z InCanem (samozałączanie, niespodziewana zmiana stanu przekaźników itp.) postanowiłem przetestować obsługę przycisków w nowej SuplaDevice
-
- Posts: 393
- Joined: Tue Oct 09, 2018 7:16 pm
- Location: Orzesze
Przekaźniki z transoptorami zasilane 3.3V/5V z możliwością osobnego zasilania cewek przekaźników (5V).
Sterowanie stanem niskim (GND na wejście sygnałowe załącza przekaźnik).
Buttony NO zawierające określone GPIO do masy. Bez rezystorów.
Sterowanie stanem niskim (GND na wejście sygnałowe załącza przekaźnik).
Buttony NO zawierające określone GPIO do masy. Bez rezystorów.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 10203
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Relay sterowane stanem niskim konfiguruje się drugim parametrem:tomkowski wrote: Sun Mar 01, 2020 7:42 pm Przekaźniki z transoptorami zasilane 3.3V/5V z możliwością osobnego zasilania cewek przekaźników (5V).
Sterowanie stanem niskim (GND na wejście sygnałowe załącza przekaźnik).
Buttony NO zawierające określone GPIO do masy. Bez rezystorów.
IMG_20200301_203555.jpg
IMG_20200301_203443.jpg
Code: Select all
Relay(D1, false);
Code: Select all
Button(D5, true, true);
-
- Posts: 393
- Joined: Tue Oct 09, 2018 7:16 pm
- Location: Orzesze
Pięknie dziękuję!
Zabrakło mi wiedzy o drugim parametrze dla Relay.
Oczywiście działa.
Zabrakło mi wiedzy o drugim parametrze dla Relay.
Oczywiście działa.
-
- Posts: 5420
- Joined: Fri Nov 16, 2018 7:25 am
Czy planujesz dodać opcję przywracania stanu przekaźnika po restarcie ESP?
https://gui-generic-builder.supla.io/
-
- Posts: 10203
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Ogólnie tak. Zostało mi jeszcze parę rzeczy do przepisania "po nowemu" i wtedy między innymi zajmę się też zapisywaniem konfiguracji i stanów.krycha88 wrote: Thu Mar 05, 2020 10:22 am Czy planujesz dodać opcję przywracania stanu przekaźnika po restarcie ESP?
Dla niektórych kanałów jest to konieczne (np. rolety, liczniki impulsów). Zapamiętanie stanu przekaźnika będzie opcjonalne.