Üdv!
Napok óta képtelen vagyok felfogni egy IP watchdog modul működését, ebben kérnék segítséget. Talán icmp protokollal kapcsolatban hiányosak az ismereteim.
A célom:
Vannak pár nehezen megközelíthető helyszínen 4G routereim. Mögöttük 1, max 2 kamera streamel folyamatosan. A mobilnet sávszélessége elegendő a streamekhez, streamelés közben router WAN-jának a pingideje 30-50ms. Sajnos előfordul néha, hogy a rendelkezésre álló sávszélesség egyik pillanatról a másikra lecsökken, kevesebb lesz mint amennyi kellene a stream továbbításhoz. Ilyenkor a pingidő értelemszerűen megnő 1000ms fölé és a problémát 1 vagy néhány router újraindítás oldja meg. Ezt az újraindítást szeretném automatizálni.
Ebből az IP relé modulból rendeltem párat: https://www.aliexpress.com/item/1005001729638858.html
Azt szeretném, hogy egy megadott IP-t pingeljen 5 másodpercenként, és ha az utolsó 10 ping idő több, mint 1000ms, akkor a relével indítsa újra a routert. (elveszi tőle áramot pár mp-re)
Bár semmi doksi sincs, de elég egyértelműnek tűnik, hogyan kell ezt beállítani. A alábbi ábrán látható "ping interval"=5, "timeout"=1, "Retry times"=10 beállításokkal szerintem pontosan ezt kellene csinálnia.

A beállított Watch IP (62.100.224.141) egy teszt VPS-em, amin magas ping időket tudok szimulálni. Jelenleg a 2000ms késletetése van, azaz minimum 2000ms a pingideje. Az eszköz szerint viszont ONLINE van, pedig 1sec a ping timeout, azaz OFFLINE kéne lennie.
Össze-vissza játszottam a beállításokkal, de egyszerűen nem jöttem rá, hogy mi a működési logika. 2 napja chatelek az állítólagos fejlesztővel de nem jutok vele semmire, mintha nem egy bolygón élnénk.
Végül az alábbi kérdést tettem fel neki:
Az alábbi beállítások esetén:
- ping interval=2
- timeout=1
- retry time=3
Az IP OFFLINE, ha az IP tényleges ping ideje 2000ms. De az IP ONLINE, ha az IP tényleges ping ideje 1500ms.
Ezt a választ kaptam, amit bevallom nem értek:
the first "ping->interval" >= "ping->timeout"
if "ping->interval" time get right flag response, "ping->timeout" is ignore
Tök jó lenne ha ezt valaki értené és el tudná magyarázni, hogy mi történik itt :)
Köszönöm szépen!
UPDATE:
További magyarázatok a kínaitól, amik szintén "kínai" nekem:
when ping the packet with flag , so the ping only receve right flag, the prev flag is ignore
example: interval=2, timeout=2, ping response=1500ms, retry times=3
ping1 with flag=1, response with in 1500ms, "retry times" clear to 0, ----> "online"
ping2 with flag=2, response with in 2500ms, "retry times" add 1 ----> "online"("retry times"=1 < 3)
ping2 with flag=3, response with in 1500ms, "retry times" clear to 0, ----> "online"
example: interval=1, timeout=2, ping response=1500ms, retry times=3, this config is not ok(interval < timeout)
ping1 with flag=1, response with in 1500ms(but ping2 with flag=2 is start), "retry times" add 1 ----> "online" ("retry times"=1 < 3)
ping2 with flag=2, response with in 1500ms(but ping3 with flag=3 is start), "retry times" add 1 ----> "online" ("retry times"=2 < 3)
ping3 with flag=3, response with in 1500ms(but ping4 with flag=4 is start), if "retry times" >= 3 ----> "offline"
ping4 with flag=4, response with in 1500ms(but ping5 with flag=5 is start), wait device restart
i think strict "ping->timeout" check is not a good idea in an Internet
what is "right flag response" ?
ping send data with flag to check last packet
example;
ping times1, flag is 1, reponse check if not "flag 1" means lost packet
ping times2, flag is 2, reponse check if not "flag 2" means lost packet
ping times3, flag is 3, reponse check if not "flag 3" means lost packet
"ping->interval" min is 1 second
if "ping->interval"=1, then ping times interval with 1 second,
if "ping->interval"=2, then ping times interval with 2 second,
...
example "ping->interval"=2, "ping->timeout"=1
"ping->interval start"|------2-------|
"ping->timeout start"|--1---|
relay toggle only when "online" -> "offline"