<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
		<link>https://forum.sds.an-d.cz/viewtopic.php?id=1160</link>
		<atom:link href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=1160&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Nejnovější příspěvky v [vyřešeno] přepínání relé pomocí sdc-c / mqtt.]]></description>
		<lastBuildDate>Tue, 17 Sep 2024 11:46:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7742#p7742</link>
			<description><![CDATA[<p>SUPER - TAK VŠE POTVRZUJI JAKO FUNKCNI - <br />abych také něčím přispěl - rád Vám nabídnu k volnému použití můj vzorový program na vyčítání dat pomocí MQQT brokeru (klidně ho umístěte i na wiki do manuálu k mqqt - mám vyzkoušenou komunikaci pomocí brokeru mqqt v home assistant, zpracování hodnot v node red a jejich zpětné poskytnutí do homeassistant - nyní mi již funguje i odeslání příkazu k přepnutí relé. Možná by ten program šel ještě nějak učesat - ale upřímně - zase tolik se v programování nevyznám - pro mne je obrovský úspěch že jsem to rozhýbal s vydatnou pomocí od chatgpt a s pomocí od Vás kde jste mne navedli kde dělám sice drobnou, ale naprosto zásadní chybu.</p><div class="codebox"><pre><code>main
{

// výpočet výkonu dle pulsů - vypnuto, místo toho odesílám dobu mezi pulsy a počítám v NodeRED

//var elektromer1_vykon;
//var elektromer2_vykon;
//var elektromer3_vykon;

  // elektromer1_vykon = 3600000 / sys[592];
  // ram[4] = elektromer1_vykon;

  // elektromer2_vykon = 3600000 / sys[593];
  // ram[5] = elektromer2_vykon;

  // elektromer3_vykon = 4500000 / sys[594];
  // ram[6] = elektromer3_vykon;






// network communication shall be started only after the SDS is connected to network (ethernet is up)
 echo(&#039;waiting for network availability&#039;);

waiting_ethernet:
wait(50);
 if (sys[24] == 0) goto waiting_ethernet; // 0 = no ethernet
 if (sys[27] == 0) goto waiting_ethernet; // 0 = no IP address

 // OK, now we have an ethernet connection up and running

 // EXAMPLE START:


 // connect on start
 echo(&#039;connecting to MQTT Broker... ???&#039;);

// Zadání IP adresy, jména a hesla MQQT serveru - je treba vyplnit jak máte vy - pokud odesílate data z více desek
// je třeba jedinečné client-id - pokud je stejné pro dva clienty komunikace se zasekne
 //           ip   ip   ip ip   port  client-id          username   password    keepalive(sec)
 mqtt_connect(192, 168, 1, 30, 1883, &#039;SDS-HL_Elektromer&#039;, &#039;mqtt&#039;, &#039;heslo_mqqt&#039;, 120);
 wait(150);
 // wait for a complete connection
 label waiting_for_mqqt_conn:
 wait(150);
 // error - failed ?
 if (sys[2200] &lt;= 0) goto mqtt_conn_fail; // error ? (any negative number is error code)

 // done - connected ?
 if (sys[2200] != 4) goto waiting_for_mqqt_conn; // success ? (yes only if == 4)

 // test the CONNACK result - see &quot;3.2.2.3 Connect Return code&quot; - we expect &quot;0&quot; as OK

 if (sys[2201] != 0) goto mqtt_conn_fail; // is broker&#039;s result code OK ? (OK only if == 0)

 // connected (CONNACK result is 0x00)

 echo(&#039;connected to broker: OK&#039;);

                 mqtt_publish(&#039;sds2/elektromer1&#039;, sys[493]);
                w4:
                if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                if (sys[2202] == 1) goto w4;               // still working ?
                if (sys[2202] != 2)                        // success ?
                { echo(&#039;publish error elektromer1= &#039;, sys[2202]); };

                 mqtt_publish(&#039;sds2/elektromer1_vykon&#039;, sys[592]);
                 w5:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                 if (sys[2202] == 1) goto w5;               // still working ?
                 if (sys[2202] != 2)                        // success ?
                 { echo(&#039;publish error elektromer1_vykon = &#039;, sys[2202]); };

                 mqtt_publish(&#039;sds2/elektromer2&#039;, sys[494]);
                 w6:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                 if (sys[2202] == 1) goto w6;               // still working ?
                 if (sys[2202] != 2)                        // success ?
                 { echo(&#039;publish error elektromer2 = &#039;, sys[2202]); };

                 mqtt_publish(&#039;sds2/elektromer2_vykon&#039;, sys[593]);
                 w7:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                 if (sys[2202] == 1) goto w7;               // still working ?
                 if (sys[2202] != 2)                        // success ?
                 { echo(&#039;publish error elektromer2_vykon = &#039;, sys[2202]); };

                 mqtt_publish(&#039;sds2/elektromer3&#039;, sys[495]);
                 w8:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                 if (sys[2202] == 1) goto w8;               // still working ?
                 if (sys[2202] != 2)                        // success ?
                 { echo(&#039;publish error elektromer3 = &#039;, sys[2202]); };

                 mqtt_publish(&#039;sds2/elektromer3_vykon&#039;, sys[594]);
                 w9:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
                 if (sys[2202] == 1) goto w9;               // still working ?
                 if (sys[2202] != 2)                        // success ?
                 { echo(&#039;publish error elektromer3_vykon = &#039;, sys[2202]); };

                 mqtt_subscribe(1, &#039;sds2/rele1&#039;);
                 wS:
                 if (sys[2200] &lt; 0) goto mqtt_conn_fail; // disconnected (if any negative number)
                 if (sys[2202] == 4) goto wS;            // still working... (done when != 4)
                 if (sys[2202] != 8)                     // success ? (only if == 8, otherwise error or failure)
                       {
                       // FAILED -&gt; not subscribed !
                       echo(&#039;sub error = &#039;, sys[2202]);
                       return;
                       };


                 var last1;
                          last1 = 1;
                          loop:
                          if (last1 != sys[2291])  // sys[2291] je casove razitko for index #1
                          {
                          last1 = sys[2291];
                          }
                          echo(&#039;MQQT cesta Topic #1: &quot;&#039;, sys[2211], &#039;&quot; hodnota sys[2251] aktualizovana na: &quot;&#039;, sys[2251], &#039;&quot; &#039;);

                                           wait(50);
                                           sprintf(text[0], sys[2251]); // nejprve prekopirujeme string z sys[2251] do pole text, a to od pozice 0 v poli text[]
                                           atoi(text[0]); // prevede obsah text (od pozice 0] na cislo, vysledek prevodu da do sys[62]
                                           sys[231] = sys[62]; // vysledek zapiseme do ovladani rele
                                           echo(&#039;promenna sys[2251] &#039; sys[2251]);
                                           echo(&#039;promenna sys[62] &#039; sys[62]);
                                           echo(&#039;promenna sys[231] &#039; sys[231]);
                                          

                          // Unsubscribe from topic
                          mqtt_unsubscribe_index(1);
                          wU:
                          if (sys[2200] &lt; 0) goto error; // disconnected
                          if (sys[2202] &lt; 0) goto error; // error (if any negative number)
                          if (sys[2202] != 16) goto wU;  // waiting until done (done when result == 32)

                       echo(&#039;unsubscribed&#039;);






                 // go
            mqtt_disconnect();

            // we shall wait until the connection is properly closed
        wait_for_disconnect:
        if (sys[2200] &lt;= 0) goto error;                // error ?
        if (sys[2200] == 8) goto wait_for_disconnect;  // success, or still working ?

        // done !
 echo(&#039;DISCONNECTED from broker&#039;);

 wait(250);

 // EXIT the example - we are DONE
 return;


 // error handling
 label mqtt_conn_fail:
 echo(&#039;unable to connect... error=&#039;, sys[2200],&#039; connack=&#039;, sys[2201]);

 // error handling
 label error:
 echo(&#039;error&#039;);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Tue, 17 Sep 2024 11:46:29 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7742#p7742</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7741#p7741</link>
			<description><![CDATA[<p>pokud by jste potřeboval nějakou kooperaci - případně třeba i dálkový přístup k běžícímu prostředí - můžeme se nějak domluvit - nemám problém Vám přes teamviewer pustit na chvíli k SDS desce včetně MQQT brokeru a nodeRed - můžete to ověřit na nainstalovaném prostředí se vším všudy.</p>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Mon, 16 Sep 2024 08:20:16 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7741#p7741</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7740#p7740</link>
			<description><![CDATA[<div class="quotebox"><cite>technomagg napsal:</cite><blockquote><p>... - ale když jsem se snažil pracovat s sys[2251] tak bylo jedno co je obsahem sys[2251] vždy byl výsledek chybný jak kdyby to pro něj nebylo číslo.</p></blockquote></div><p>Ano, není to číslo:</p><div class="codebox"><pre><code>sys[2250] 09 s R   poslední přijatý Value z Brokeru (broker publish)</code></pre></div><p>Všimněte si toho &quot;09 s R&quot; což znamená: <br />- 09: dostupné od verze SDS-C č. 09<br />- s: proměnná je TEXT (STRING)<br />- R: pouze pro čtení</p><p>To znamená, že z MQTT brokeru nedostáváte číslo, ale TEXT (to je princip MQTT, vše přenáší jako text, resp. binární blob).<br />Tento text je potřeba nejprve převést na číslo.</p><p>Takže toto SPRÁVNĚ NEFUNGUJE, protože nelze přiřadit do číselné proměnné (integer) text (string):<br /></p><div class="codebox"><pre><code> sys[231] = sys[2250];  // nelze</code></pre></div><p>Řešení je takové: nejprve převést text na číslo, a pak s výsledkem převodu až dále pracovat. Samozřejmě přes MQTT může přijít i cokoliv jiného, ne jen čisté číslo (ale někdo tam může poslat i písmena, a MQTT to samozřejmé a správně předá dále, ale je na přijemci, aby si to pak ohlídal).<br /></p><div class="codebox"><pre><code>  sprintf(text[0], sys[2251]); // nejprve prekopirujeme string z sys[2251] do pole text, a to od pozice 0 v poli text[]
  atoi(text[0]); // prevede obsah text (od pozice 0] na cislo, vysledek prevodu da do sys[62]
  sys[232] = sys[62]; // vysledek zapiseme do ovladani rele</code></pre></div><p>Popis funkce sprintf() a funkce atoi() je na wiki. Funkci sprintf() je potřeba použít, protože atoi() pracuje jen s poli text[] nebo share[]. </p><p>Práce s texty v SDS-C není jednoduchá. Proto, pokud v tomto směru potřebujete často pracovat, doporučím přejít na FULL-C, tedy použít odpovídající HW (SDS-BIG).</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Mon, 16 Sep 2024 07:32:34 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7740#p7740</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7739#p7739</link>
			<description><![CDATA[<p>Tak někde je problém: </p><p>pokud udělám toto: <br /></p><div class="codebox"><pre><code>if (sys[2251] == 255){
ram[1] = 20;
echo(&#039;ram[1] je: &quot;&#039;ram[1]]);
} else {
    echo(&#039;chyba prevodu&#039;);
echo(&#039;stav promenne ram[1]  &#039;ram[1]);
echo(&#039;stav promenne sys[2251]  &#039;sys[2251]);</code></pre></div><p>je odpověď tato:<br /></p><div class="codebox"><pre><code>Cekam na dostupnost site
pripojuji k MQTT Broker... ???
pripojeno k brokeru: OK
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;255&quot; 
promenna sys[2251] 255
promenna sys[231] 0
chyba prevodu
stav promenne ram[1]  0
stav promenne sys[2251]  255</code></pre></div><p>ALE pokud udělám toto:<br /></p><div class="codebox"><pre><code>rele1 = 10;
if (rele1 == 10){
ram[1] = 20;
echo(&#039;ram[1] je: &quot;&#039;ram[1]]);
} else {
    echo(&#039;chyba prevodu&#039;);
echo(&#039;stav promenne ram[1]  &#039;ram[1]);
echo(&#039;stav promenne sys[2251]  &#039;sys[2251]);</code></pre></div><p>JE ODPOVĚĎ SPRÁVNÁ - VIZ:<br /></p><div class="codebox"><pre><code>Cekam na dostupnost site
pripojuji k MQTT Broker... ???
pripojeno k brokeru: OK
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;255&quot; 
promenna sys[2251] 255
promenna sys[231] 0
ram[1] je: &quot;20</code></pre></div><p>Z toho mi přijde že SDS neumí s tou proměnnou sys[2251] správně a korektně pracovat - nevím proč to tak je - ale i když přijde odpověď správně - tak ji neumí v podmínkách nijak zpracovat. Správně mi to v druhém případě kdy jsem nepracoval s sys[2251] ale s var rele1 provedlo blok kodu - ale když jsem se snažil pracovat s sys[2251] tak bylo jedno co je obsahem sys[2251] vždy byl výsledek chybný jak kdyby to pro něj nebylo číslo.</p>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Sun, 15 Sep 2024 20:11:05 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7739#p7739</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7738#p7738</link>
			<description><![CDATA[<p>Tak nevím - nějak mi to nefunguje - tady je celý můj subscribe blok - už jsem se do toho asi úplně zamotal - ale prostě se příkaz neprovede jak očekávám<br /></p><div class="codebox"><pre><code>  mqtt_subscribe(1, &#039;sds2/rele1&#039;);

 // wait for the successful subscribe
 wS:
 if (sys[2200] &lt; 0) goto mqtt_conn_fail; // disconnected (if any negative number)
 if (sys[2202] == 4) goto wS;            // still working... (done when != 4)
 if (sys[2202] != 8)                     // success ? (only if == 8, otherwise error or failure)
 {
   // FAILED -&gt; not subscribed !
   echo(&#039;sub error = &#039;, sys[2202]);
   return;
 };

 // nyní, když jsme přihlášeni, budeme sledovat jakoukoli příchozí aktualizaci (změnu hodnoty):

 var last1;
 last1 = 1;

loop:
sys[196] = 2;

// nejaka zmena ? (jakakoliv nova zprava?)
if (last1 != sys[2291])  // sys[2291] je casove razitko for index #1
 {
    // ulozit, abychom to mohli pozdeji znovu porovnat
    last1 = sys[2291];

    // vypis zmeny do konzole
    echo(&#039;TOPIC #1: &quot;&#039;,sys[2211],&#039;&quot; update to: &quot;&#039;,sys[2251],&#039;&quot; &#039;);

    // aplikuje novou hodnotu - ovladani rele
    sys[231] = sys[2251];  // do ovladani rele 2., predame hodnotu z prijate MQTT polozky #1

echo(&#039;promenna sys[2251] &quot;&#039;sys[2251]);
echo(&#039;promenna sys[231]&quot;&#039;sys[231]);

//echo(&#039;rele zapnuto&#039;last1);

//rele1 = sys[2251];


//echo(&#039;stav promenne rele1  &#039;rele1);
//if (sys[2251] == 1){
//    sys[231] = 1;  // Zapni relé
//        echo(&#039;rele zapnuto&#039;);
//} if (sys[2251] == 2) {
//    sys[231] = 0;  // Vypni relé
//    echo(&#039;rele vypnuto&#039;);
//} else {
//    echo(&#039;chyba prevodu&#039;);

//    echo(&#039;TOPIC #1: &quot;&#039;,sys[2211],&#039;&quot; stav rele je: &quot;&#039;,sys[231],&#039;&quot; &#039;);
// }
}
 if (sys[2200] &lt; 0) goto mqtt_conn_fail;    // disconnected ?
 if (sys[2202] == 1) goto loop;               // still working ?
 if (sys[2202] != 2)                        // success ?

 // continue loop
 goto loop;</code></pre></div><br /><p>A TOTO JE VÝSTUP Z LOGU PROGRAMU: (napřed jsem posílal hodnotu 255 a pak jsem poslal hodnotu 1 - ani jedno se nepropsalo - zůstala tam pořád nula na sys[231] - co dělám špatně ? Když napíšu do programu sys[231] = 1 nebo sys[231] = 255 tak se to normálně provede - ale v okamžiku kdy to porovnávám s proměnnou 2251 tak se žádné porovnání neprovede a vždy je výsledek zápisu nula - nemůže to být nějaký bug? Přijde mi že to neumí porovnat hodnotu 2251 - jak kdyby to nebylo číslo i když echo číslo zobrazuje - ale já tam neposílám string ale number - toto jsem kontroloval a zkoušel i přenastavit.<br /></p><div class="codebox"><pre><code>ekam na dostupnost site
pripojuji k MQTT Broker... ???
pripojeno k brokeru: OK
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;255&quot; 
promenna sys[2251] &quot;255
promenna sys[231]&quot;0
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;1&quot; 
promenna sys[2251] &quot;1
promenna sys[231]&quot;0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Sun, 15 Sep 2024 19:51:33 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7738#p7738</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7737#p7737</link>
			<description><![CDATA[<p>Tady bude asi ten problém<br /></p><div class="quotebox"><cite>technomagg napsal:</cite><blockquote><p>proc když rele2 je definovane jako sys 2251 ...</p></blockquote></div><p>To co jste tam napsal (rele2=sys[2251]), ale není &quot;definice&quot; nýbrž &quot;předání hodnoty&quot;, a to je dost zásadní rozdíl.</p><br /><p>Poud chcete ovládat fyzické relé na desce modulu SDS, musíte zapsat správnou hodnotu do správného sys[] indexu.</p><p>Jednotlivé sys[] jsou popsány zde: https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp</p><p>Pro ovládání relé č. 2 je potřeba zapsat hodnotu do sys[232].</p><p>Současně je potřeba mít přiřazené ovládání relé přes SDSC, a to se dá udělat buď tlačítkem ve webovém rozhraní, nebo (pro relé č. 2) zápisem té správné konkrétní hodnoty do sys[197] (viz odkaz výše).</p><p>Takže, pokud vám z MQTT přijde hodnota do sys[], tak ji předáte do relé č. 2 (nebo jinam - úpravou toho indexu) takto:<br /></p><div class="codebox"><pre><code> // do ovladani rele 2., predame hodnotu z prijate MQTT polozky #1
 sprintf(text[0], sys[2251]); // nejprve prekopirujeme string z sys[2251] do pole text, a to od pozice 0 v poli text[]
 atoi(text[0]); // prevede obsah text (od pozice 0] na cislo, vysledek prevodu da do sys[62]
 sys[232] = sys[62]; // vysledek zapiseme do ovladani rele</code></pre></div><p>Tedy celý vzorový kód:<br /></p><div class="codebox"><pre><code> // nejaka zmena ? (jakakoliv nova zprava?)
 if (last1 != sys[2291])  // sys[2291] je casove razitko for index #1
 {
    // ulozit, abychom to mohli pozdeji znovu porovnat
    last1 = sys[2291];

    // vypis zmeny do konzole
    echo(&#039;TOPIC #1: &quot;&#039;,sys[2211],&#039;&quot; update to: &quot;&#039;,sys[2251],&#039;&quot; &#039;);

    // aplikuje novou hodnotu - ovladani rele
    sprintf(text[0], sys[2251]); // nejprve prekopirujeme string z sys[2251] do pole text, a to od pozice 0 v poli text[]
    atoi(text[0]); // prevede obsah text (od pozice 0] na cislo, vysledek prevodu da do sys[62]
    sys[232] = sys[62]; // vysledek zapiseme do ovladani rele
 }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Sat, 14 Sep 2024 07:49:43 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7737#p7737</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7736#p7736</link>
			<description><![CDATA[<p>Metodou pokus / omyl jsem trošku pokročil - problém je s tím že sice přečtu hodnotu SYS 2251 ale nejsem schopen ji předat - testoval jsem to na proměnných RAM 1 a RAM 2<br /></p><div class="codebox"><pre><code>                       if (sys[2251] == 10) 
                       {
                       sys[231] = 1;  // Nastavení relé na zapnuto
                       echo(&#039;rele zapnuto&#039;);
                       }
                       if (sys[2251] == 20) 
                       {
                       sys[231] = 0;  // Nastavení relé na vypnuto
                       echo(&#039;rele vypnuto&#039;);
                       } else 
                       {
                       echo(&#039;chyba prevodu&#039;);
                       }
                       echo(&#039;po provedeni sys[231] je &#039; sys[231]);
                       echo(&#039;po provedeni sys[2251] je &#039; sys[2251]);

echo(&#039;test &#039; sys[2251]);
#define VSTUP1 sys[2251]
echo(&#039;vstup1  je &#039; VSTUP1);
ram[1] = VSTUP1;
echo(&#039;ram[1]  je &#039; ram[1]);
#define VSTUP2 55
ram[2] = VSTUP2;
echo(&#039;ram[2]  je &#039; ram[2]);</code></pre></div><p>A výstup z programu je tento:<br /></p><div class="codebox"><pre><code>Cekam na dostupnost site
pripojuji k MQTT Broker... ???
pripojeno k brokeru: OK
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;20&quot; 
sys[231] je 0
sys[2251] je 20
chyba prevodu
po provedeni sys[231] je 0
po provedeni sys[2251] je 20
test 20
vstup1  je 20
ram[1]  je 0
ram[2]  je 55</code></pre></div><p>Dle toho to vypadá že prostě odmítá použít SYS 2251 - pokud mu v RAM2 místo promenne podstrcim pevne cislo tak to funguje - ale já potřebuji abych mohl ten program ovládat externe abych dokázal na základě příchozí SYS 2251 přepsat SYS 231 a tím přepnout relé - je to poslední věc aby mi fungovalo vše co potřebuji, ale nedokáži přijít na to kde je chyba.</p>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Fri, 13 Sep 2024 10:44:05 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7736#p7736</guid>
		</item>
		<item>
			<title><![CDATA[[vyřešeno] přepínání relé pomocí sdc-c / mqtt]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=7735#p7735</link>
			<description><![CDATA[<p>Dobrý den,</p><p>snažím se přepnout relé pomocí sds-c a vůbec se mi nedaří - snažím se o debug, ale nechová se to podle očekávání. - blok mám takto:<br /></p><div class="codebox"><pre><code> // nejaka zmena ? (jakakoliv nova zprava?)
 if (last1 != sys[2291])  // sys[2291] je casove razitko for index #1
  {
    // ulozit, abychom to mohli pozdeji znovu porovnat
    last1 = sys[2291];

    // pouzij novou hodnotu!!!
    echo(&#039;TOPIC #1: &quot;&#039;,sys[2211],&#039;&quot; update to: &quot;&#039;,sys[2251],&#039;&quot; &#039;);


    echo(&#039;sys[231] je &#039; sys[231]);
    echo(&#039;sys[2251] je &#039; sys[2251]);
                  
rele1 = sys[231];
echo(&#039;rele1 je &#039; rele1);

rele2 = sys[2251];
echo(&#039;rele2 je &#039; rele2);

    ram[10] = sys[2251];
    echo(&#039;ram[10] je &#039; ram[10]);
    echo(&#039;promenna rele1 je &#039; sys[231]);
                 
};</code></pre></div><br /><p>a výstup v sds je tento: ¨<br /></p><div class="codebox"><pre><code>Cekam na dostupnost site
pripojuji k MQTT Broker... ???
pripojeno k brokeru: OK
TOPIC #1: &quot;sds2/rele1&quot; update to: &quot;1&quot; 
sys[231] je 0
sys[2251] je 1
rele1 je 0
rele2 je 0
ram[10] je 0
promenna rele1 je 0</code></pre></div><p>proc když rele2 je definovane jako sys 2251 se stale ukazuje jako nula ? kde mám chybu prosím o radu. Stejne se mi to chová kdyz se snazim misto o echo o zmenu stavu rele - stale tam mam nulu i kdyz je vstup z 2251 na hodnote 1 nebo 2</p>]]></description>
			<author><![CDATA[null@example.com (technomagg)]]></author>
			<pubDate>Fri, 13 Sep 2024 07:48:13 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=7735#p7735</guid>
		</item>
	</channel>
</rss>
