<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - MQTT disconnect]]></title>
	<link rel="self" href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=1146&amp;type=atom" />
	<updated>2024-07-23T09:09:27Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.sds.an-d.cz/viewtopic.php?id=1146</id>
		<entry>
			<title type="html"><![CDATA[Re: MQTT disconnect]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7721#p7721" />
			<content type="html"><![CDATA[<p>Já si publish a subscribe optimalizuji pomocí vlastních metod a tabulky, kde si udržuji poslední úspěšně odeslanou hodnotu. Při obnově připojení všechno opět odešlu, jinak odesílám jen tehdy, pokud se hodnota změnila. Takže mi to takto vyhovuje.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2024-07-23T09:09:27Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7721#p7721</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: MQTT disconnect]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7720#p7720" />
			<content type="html"><![CDATA[<p>Vytažení kabelu SDS ihned pozná a v SDS jsou obratem nastaveny tyto hodnoty:</p><p>pokud byl v tu dobu otevřený socket na server:<br /> sys[12200] = 8; // 8 = probiha odpojovani - nasledne prejde na 0<br /> sys[12201] = -1; // -1 = idle, nepřipojeno<br /> sys[12202] = -2; // -2 = SDS není připojeno k brokeru<br />nebo pokud nebylo spojení na server:<br /> sys[12200] = 0; // 0 = klid, nic se neprovádí, ODPOJENO<br /> sys[12201] = -1; // -1 = idle, nepřipojeno<br /> sys[12202] = -2; // -2 = SDS není připojeno k brokeru</p><p>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.</p><p>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).</p><p>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é).</p><p>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).</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2024-07-22T13:18:17Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7720#p7720</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: MQTT disconnect]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7715#p7715" />
			<content type="html"><![CDATA[<p>No já to tak řeším a funguje mi to dobře. Takže spíš jen aby to odpovídalo popisu. <img src="https://forum.sds.an-d.cz/img/smilies/wink.png" width="15" height="15" alt="wink" /></p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2024-07-22T07:39:29Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7715#p7715</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: MQTT disconnect]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7714#p7714" />
			<content type="html"><![CDATA[<p>V principu u všech síťových funkcí, určitě doporučim průběžné sledování stavových hodnot. Typicky stačí (resp. je doporučeno, respektive - je nutné) ověřit stav vždy před voláním kterékoliv síťové funkce, někdy i po dobu jejího průběhu (např. http_get() a jiné neblokující funkce), a pak po skončení procesu dané zavolané funkce.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2024-07-20T07:38:49Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7714#p7714</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[MQTT disconnect]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7696#p7696" />
			<content type="html"><![CDATA[<p>K MQTT: V dokumentaci se píše, že &quot;připojení je potřeba provést &#039;jen jednou&#039; na začátku, a SDS automaticky udržuje spojení (MQTT PING, tedy formou protokolového keep alive)&quot;. To se mi ale nějak nedaří, po odpojení a připojení kabelu zůstává stav připojení v proměnné 12200 různý od nuly. Je třeba asi tedy znovu navázat spojení a znovu zaregistrovat všechny odběry. Musím tedy v programu neustále sledovat stav proměnné 12200 a v případě odpojení zareagovat?</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2024-02-21T15:06:18Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7696#p7696</id>
		</entry>
</feed>
