Vytažení kabelu SDS ihned pozná a v SDS jsou obratem nastaveny tyto hodnoty:
pokud byl v tu dobu otevřený socket na server:
sys[12200] = 8; // 8 = probiha odpojovani - nasledne prejde na 0
sys[12201] = -1; // -1 = idle, nepřipojeno
sys[12202] = -2; // -2 = SDS není připojeno k brokeru
nebo pokud nebylo spojení na server:
sys[12200] = 0; // 0 = klid, nic se neprovádí, ODPOJENO
sys[12201] = -1; // -1 = idle, nepřipojeno
sys[12202] = -2; // -2 = SDS není připojeno k brokeru
Samozřejmě tím, že je kabel od SDS fyzicky odpojen, tak nemá SDS jak poslat správné ukončení spojení, a toto spojení zůstane (na straně serveru) viset až do jeho timeoutu.
Aplikace na straně SDS musí poznat, čtením příslušných sys[], že došlo k odpojení, a znovu se na MQTT server připojit (platí i pro další komunikační protokoly v rámci SDS).
Tedy chování SDS je tak jak bylo zamýšleno - při odpojení kabelu dojde ke zrušení spojení na straně SDS, a po znovu-připojení kabelu musí aplikace vše od začátku obnovit (připojení, subscribe). Je to výsledek analýzy, která ukázala, že jedině takto lze provést úplné a spolehlivé obnovení, než zkoušet spojení profukovat, zda-li se náhodou opraví (není to spolehlivé).
SDS skutečně automaticky odesílá MQTT PING (v rozmezí 15 až 300 sekund, výchozí hodnota 96 sekund). Toto je spolehlivé tak dlouho, dokud je síťové spojení nepřerušeno. Účelem PING je udržovat otevřený socket, který by jinak server, pro nečinnost uzavřel (kdyby SDS dlouho nepublishoval a server dlouho neměl co aktualizovat v rámci subscription) - což je určitě nežádoucí - a spoj je potřeba udržovat otevřený. Ale nic víc to řešit nemá, určitě ne obnovení celkového spojení při fyzickém výpadku připojení (odpojený kabel).
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !