Proszę o pomoc lub poradę, napisałem kawałek kodu, który się dobrze kompiluje. Moim zamysłem jest zastosowanie obiektu Virtual relay, którego stan true/false chcę wykorzystać w kodzie do warunkowania operacji if(). Kod kompiluje się poprawnie, obiekty dają się opisać i przesuwać w aplikacji, jednak nie przynoszą efektu na funkcję warunkową w pętli loop{}. temat zaczerpnąłem z exampli ale nie wiem czemu nie działa u mnie. Wrzucę istotne fragmenty kodu : definicję , setup i loop :
Code: Select all
Supla::Control::Relay *relayK1 = nullptr;
Supla::Control::VirtualRelay *tryb = nullptr;
Supla::Control::VirtualRelay *stan = nullptr;
Supla::Control::VirtualRelay *logika = nullptr;
bool lastRelayState1 = false;
bool auto_man = false;
...
void setup() {
...
relayK1 = new Supla::Control::Relay(RELAY_PIN, true);
auto tryb = new Supla::Control::VirtualRelay(); //auto <> manual
tryb->setDefaultFunction(SUPLA_CHANNELFNC_POWERSWITCH);
tryb->setDefaultStateRestore();
...
}
void loop() {
SuplaDevice.iterate();
if ( tryb != nullptr) {
bool auto_man = tryb->isOn();
if (currentState1 != lastRelayState1) {
lastRelayState1 = currentState1;
if (currentState1) { auto_man=true; }
else { auto_man=false; }
}
...
if(auto_man==true){ relayK1->turnOn();}
else{ relayK1->turnOff();}
}być może to nie jest dobry obiekt do ustawiania warunku w pętli loop??
proszę o pomoc. Dziękuję serdecznie
