Nie zmieniają się wszystkie stany za pomocą channelValueChanged

User avatar
pzygmunt
Posts: 6687
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Jun 10, 2019 2:41 pm

setStatusFuncImp to funkcja która jest wywoływana jak zmienia się stan połączenia z serwerem z wifi.
Jak zmienisz przyciskiem stan przekaźnika to serwer nie zostanie powiadomiony.

Coś źle nadal robisz jak masz takie opóźnienia. Może Cię rozłącza. Musisz sobie to bardziej precyzyjnie zdebugować.
krycha88
Posts: 358
Joined: Fri Nov 16, 2018 7:25 am

Mon Jun 10, 2019 2:48 pm

pzygmunt wrote:
Mon Jun 10, 2019 2:41 pm
setStatusFuncImp to funkcja która jest wywoływana jak zmienia się stan połączenia z serwerem z wifi.
Jak zmienisz przyciskiem stan przekaźnika to serwer nie zostanie powiadomiony.
Dzięki tej funkcji chcę tylko ustawić zapisany stany przekaźnika w apce po nawiązaniu połączenia. Obsługę przekaźników mam zrobioną w SuplaDevice.setDigitalWriteFuncImpl.

Jeszcze raz dziękuje za pomoc :)
vajera
Posts: 179
Joined: Wed Oct 31, 2018 7:58 am

Mon Jun 10, 2019 3:23 pm

krystianmen wrote:
Mon Jun 10, 2019 2:30 pm
w setup() dodałem SuplaDevice.setStatusFuncImpl(&status_func) później:

Code: Select all

void status_func(int status, const char *msg) {
  if ( status == 17 ) {
    Serial.println("wczytano stan przelacznikow");
    SuplaDevice.channelValueChanged(0, read_supla_relay_state(0));
    SuplaDevice.channelValueChanged(1, read_supla_relay_state(1));
    SuplaDevice.channelValueChanged(2, read_supla_relay_state(2));
  }
}
Chyba jest to już lepsze rozwiązanie niż moje pierwotne? Nie wiem jak bym miał do tego wykorzystać impl_arduino_timer.
Właśnie o coś takiego pytałem :D
EDIT: przy okazji to chyba dobre miejsce na sprawdzanie połączenia z serwerem:
if (status == STATUS_DISCONNECTED) {wejdź w tryb pracy samodzielnej - termostat, pompy itp.)
Post Reply