Przekaźniki/Relay w SuplaDevice Arduino IDE

User avatar
vajera
Posts: 7289
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

mam pytanie-do sterowania nawodnieniem używam archaicznego już softu własnej produkcji zaszytego w Sonoff 4CH Pro - z uwagi na dziwną konstrukcję pomp - otwarcie i zamknięcie zaworu odbywa się za pomocą krótkich impulsów-jak w przekaźniku bistabilnym.
Gdybym chciał wykorzystać nową bibliotekę to potrzebowałbym czego w rodzaju BistableRelay z wirtualnym pinem stanu zapisywanym w EEPROM - pytanie brzmi czy muszę to sam zaimplementować czy przeoczam jakieś gotowe rozwiązanie?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

vajera wrote: Thu Mar 18, 2021 8:48 pm mam pytanie-do sterowania nawodnieniem używam archaicznego już softu własnej produkcji zaszytego w Sonoff 4CH Pro - z uwagi na dziwną konstrukcję pomp - otwarcie i zamknięcie zaworu odbywa się za pomocą krótkich impulsów-jak w przekaźniku bistabilnym.
Gdybym chciał wykorzystać nową bibliotekę to potrzebowałbym czego w rodzaju BistableRelay z wirtualnym pinem stanu zapisywanym w EEPROM - pytanie brzmi czy muszę to sam zaimplementować czy przeoczam jakieś gotowe rozwiązanie?
BistableRelay jako taki nie zna stanu przekaźnika, bo założenie jest takie, że mogą być inne źródła sterowania takim przekaźnikiem. Dlatego ta klasa wymaga podania GPIO, z którego jest odczytywany stan.
Rozumiem, że w Twoim przypadku zawory są sterowane wyłącznie z impulsów przekaźnika i chciałbyś założyć, że zawsze znasz aktualny stan na podstawie ilości jego przełączeń, tak?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7289
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

dokładnie tak-teraz soft też zapisuje to w pamięci stałej i to jest taki wirtualny pin stanu-pompa niestety nic takiego nie ma.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

vajera wrote: Thu Mar 18, 2021 9:49 pm dokładnie tak-teraz soft też zapisuje to w pamięci stałej i to jest taki wirtualny pin stanu-pompa niestety nic takiego nie ma.
Programujesz samemu?

Wydaje mi się, że wystarczyłoby podziedziczyć po klasie BistableRelay, dodać sobie "bool currentState".
Następnie nadpisać metodę "isOn()" aby zwrcała currentState.
Nadpisać metodę "internalToggle()" aby wywoływała najpierw internalToggle z klasy bazowej, a potem robiła: currentState = !currentState;
I na koniec nadpisać metodę "onInit" mniej więcej tak:

Code: Select all

void WaterRelay::onInit() {
  if (stateOnInit == STATE_ON_INIT_ON ||
      stateOnInit == STATE_ON_INIT_RESTORED_ON) {
    currentState = true;
  } else {
    currentState = false;
  }
  Supla::Io::pinMode(channel.getChannelNumber(), pin, OUTPUT);
}
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Trzeba też włączyć zapisywanie i przywracanie stanu przekaźnika.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7289
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

dzięki, postaram się to ogarnąć :-)
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
jaku2k
Posts: 920
Joined: Sun May 24, 2020 8:40 pm
Has thanked: 1 time

Post

Witam,
zaczynam przygodę z Arduino IDE (nie znam C/C++). Moim głównym celem jest dodanie obsługi przekaźników i przycisków dla Arduino MEGA. Proszę wybaczyć, jeżeli poniższe pytania są trywialne, bądź dotyczą języka, a nie SuplaDevice'a.
klew wrote: Thu Oct 01, 2020 2:02 pm

Code: Select all

#include <supla/control/relay.h>

// setup
auto r1 = new Supla::Control::Relay(pin1); // przekaźnik na pin1 sterowany stanem wysokim
auto r2 = new Supla::Control::Relay(pin2, false); // przekaźnik na pin2 sterowany stanem niskim
Czy dobrze rozumiem, że od tego momentu r1 jest równoznaczne z Supla::Control::Relay(pin1)?
Czy niewpisanie false w nawiasie po Supla::Control::Relay(pin2 oznacza to samo, co wpisanie true?
Pozdrawiam
Jakub
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

jaku2k wrote: Mon Jul 12, 2021 7:52 pm Czy dobrze rozumiem, że od tego momentu r1 jest równoznaczne z Supla::Control::Relay(pin1)?
Czy niewpisanie false w nawiasie po Supla::Control::Relay(pin2 oznacza to samo, co wpisanie true?
Tak i tak.
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
jaku2k
Posts: 920
Joined: Sun May 24, 2020 8:40 pm
Has thanked: 1 time

Post

Dziękuję za odpowiedź.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
Pozdrawiam
Jakub
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

jaku2k wrote: Tue Jul 13, 2021 11:39 am Dziękuję za odpowiedź.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
Możesz robić dowolne kombinacje. Ogranicza Cię logika oraz niewielka pamięć RAM Arduino ;)

Napisz co dokładnie chciałbyś zrobić.
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Arduino IDE”