vajera wrote: Fri Mar 08, 2019 7:56 am
Dodałem kod ze strony 11 do procedury WiFi_up(), ale przy braku WiFi przekaźniki dalej nie działają

Dopiero teraz analizując Primary GUI doszedłem do wniosku, że ten kod powinien też pojawić się w pętli loop żeby w przypadku braku połączenia mogła zadziałać metoda Iterate - dobrze myślę? I jeszcze jedno - czy ta modyfikacja kodu może mieć jakiś wpływ na to, że nie mogę się zalogować do modułu po IP?
ja rozwiązałem sobie to poprawiając w SuplaDeviceClass::iterate w pliku SuplaDevice oraz WiFi_up() w taki sposób jak to napisałeś.
Code: Select all
if (!Params.cb.svr_connected()) {
status(STATUS_DISCONNECTED, "Not connected");
registered = 0;
last_response = 0;
last_sent = 0;
last_ping_time = 0;
if (!Params.cb.svr_connect(Params.reg_dev.ServerName, 2015)) {
supla_log(LOG_DEBUG, "Connection fail. Server: %s", Params.reg_dev.ServerName);
Params.cb.svr_disconnect();
wait_for_iterate = millis() + 2000;
return;
}
}
na
Code: Select all
if (!Params.cb.svr_connected()) {
status(STATUS_DISCONNECTED, "Not connected");
registered = 0;
last_response = 0;
last_sent = 0;
last_ping_time = 0;
if (time_diff > 0) {
for (a = 0; a < Params.reg_dev.channel_count; a++) {
iterate_relay( & channel_pin[a], &Params.reg_dev.channels[a], time_diff, a);
iterate_sensor( & channel_pin[a], &Params.reg_dev.channels[a], time_diff, a);
iterate_thermometer( & channel_pin[a], &Params.reg_dev.channels[a], time_diff, a);
iterate_relaybutton( & channel_pin[a], &Params.reg_dev.channels[a], time_diff, a);
}
last_iterate_time = millis();
}
if (!Params.cb.svr_connect(Params.reg_dev.ServerName, 2015)) {
supla_log(LOG_DEBUG, "Connection fail. Server: %s", Params.reg_dev.ServerName);
Params.cb.svr_disconnect();
wait_for_iterate = millis() + 2000;
return;
}
}