Do tej, pory w głównej pętli programu odbywało się odpytywanie wszystkich urządzeń zasilanych z sieci o ich stan i na tej podstawie wykrywane było, np. fizyczna nieobecność urządzenia.
W tej pętli odbywało się też odpytywanie stanu niektórych modeli liczników elektrycznych przez co ten mechanizm stawał się coraz mniej wydolny i coraz bardziej podatny na błędy, więc się go pozbyłem
Aktualnie wygląda to tak:
każdy przekaźnik pracuje na swoich indywidualnych parametrach keepalive i timeout
keepalive - określa odstęp czasowy (w sekundach), po którym bramka próbuje sprawdzić obecność urządzenia wysyłając ping
timeout- określa odstęp czasowy (w sekundach), po którym bramka przełącza kanał w tryb offline, jeżeli w tym czasie nie zarejestrowała żadnej aktywności ze strony urządzenia, włącznie z brakiem odpowiedzi na ping
identyczne parametry ma każdy licznik elektryczny - tutaj pojawia się jeszcze jeden parametr refresh
refresh - określa odstęp czasowy (w sekundach), po którym bramka wysyła do licznika zapytanie o V/A/W
W przypadku urządzeń złożonych, w skład których wchodzi, np. kilka przekaźników lub przekaźnik + licznik elektryczny bramka monitoruje każdą aktywność w obrębie jednego urządzenia, co ozacza, że jeżeli np. licznik wysłał pomiar prądu a 5 sekund później wypadałby czas na ping gniazdka to zostanie on pominięty żeby zmniejszyć ilość komunikatów wysyłanych do bramki.
Z tego powodu liczniki dostały ten dodatkowy parametr refresh, który wymusi odczyt parametrów elektrycznych nawet, jeżeli chwilę wcześniej urządzenie wysłało np. sygnał ON.
W zasadzie w przypadku licznika elektrycznego można zdefiniować albo refresh i timeout - jeżeli chcemy otrzymywać regularny odczyt parametrów licznika albo keepalive i timeout (wtedy refresh należy ustawić na 0) - ma to sens gdy nasz licznik sam wysyła wartości w przypadku zmiany albo reaguje na polecenie configure-reporting.
Wartości tych parametrów można ustawić w GUI lub za pomocą konsoli:
update-device-timings numer_kanału nazwa_parametru wartość_w_sekundach
gdzie nazwa parametru może przyjmować następujące wartości: keepalive, timeout, refresh
