<?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 - Pomoc s programem]]></title>
	<link rel="self" href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=635&amp;type=atom" />
	<updated>2015-01-09T22:24:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.sds.an-d.cz/viewtopic.php?id=635</id>
		<entry>
			<title type="html"><![CDATA[Re: Pomoc s programem]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=4759#p4759" />
			<content type="html"><![CDATA[<p>Asi njk takto:</p><div class="codebox"><pre><code>//deklaracia premennych
var doba_behu;          //ako dlho bezi program od posledneho restaru
var count_err_com;      //pocitadlo neprenesenych paketov
var ping_seq;           //sekvencia pre ping
var doba;               //premenna pre ping
var vlhko;
var teplo;
var tlako;
var den;
var mes;
var rok;
var hod;
var min;
var sek;
var teplota;
var limit;
var hystereze;
var email_odeslan;

init
{
 //zakladni nastaveni
 limit=2300;  //teplota *100 - cili 23st
 hystereze=50;  //teplota *100 - cili 0.5st
 email_odeslan=0;
 echoclear();
}

odosli                          //rutina pre odoslanie dat na web
{
 //nacitanie hodnot
 vlhko = sys[431];
 tlako = sys[433];
 count_err_com = sys[144];      //nacitanie poctu chyb

//teplo = sys[310];
label pockaj:
 if (sys[350] == 2)  //stav cidla teploty ok
{
 teplo = sys[310];
}
 else                //cidlo teploty nie je v stave ready
{
 goto pockaj;
}

//nacitanie premennych datumu a casu
 doba_behu = sys[3];
 den = sys[5];
 mes = sys[6];
 rok = sys[7];
 hod = sys[8];
 min = sys[9];
 sek = sys[10];


//spustim rucne IP (ziskane rucne) za xxx doplnit IP adresu a za domena doplnit vlastnu domenu
//nazvy premennych tempV a humV je nutne dodrzat!!! Su pouzite v programe index.php
 //http_get(xxx,xxx,xxx,xxx,&#039;domena.sk&#039;,&#039;/adresar/index.php?tempV=&#039;,teplo,&#039;&amp;humV=&#039;,vlhko,&#039;&amp;pressV=&#039;,tlako);
 wait(5000);

//ak má server problém:
 if ((sys[65] != 1024)||(sys[75] != 200))   //server nie je schopny prijat data
{
  goto chyba_www_serveru;
}

//nie je problem, takze ok  a toto vypise na konzole
 echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Data odoslane - OK.     Doba behu = &#039;,doba_behu,&#039;    Chyby comm. = &#039;,count_err_com,&#039;   P = &#039;,tlako,&#039;   T = &#039;,teplo,&#039;   H = &#039;,vlhko);

//vsetko hotovo
 return;

label chyba_www_serveru:
//obsluha chyby - www server
 count_err_com++ ;                //pripocita 1 k hodnote chyb
 sys[144] = count_err_com;        //zapis poctu chyb do pamate

 //vypis na konzolu so stavovym kodom
 echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Chyba komunikacie s www serverom, http: &#039;, sys[75]);
 return;
}

mam_1_min
{
//toto je zavolane vzdy v prvej sekunde, odoslem data na web, presne kazdu minutu
odosli();
}

teplota_ok
{
  sys[231] = 0; //RELE1 vypnuto
  email_odeslan = 0; //povolime odeslani emailu pri pristim prekroceni limitu
}

hlasim_prekroceno
{
  //pokud jsem uz odeslal email, nebudu ho posilat znovu
  if (email_odeslan == 0)
  {
    //jeste jsem email neodeslal, takze...
    smtp_send(&#039;muj@email.cz&#039;,&#039;Kotel odstaven!!!&#039;, &#039;Akumulacky jsou nabite!!!&#039;);
    echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Alarm odstaveni odeslany.&#039;); //vypis na konzolu
    //a zapamatuji si odeslani
    email_odeslan = 1;
  }
  sys[231] = 255;  //RELE1 zapnuto
}

main
{
 sys[144] = 0;
 echo(&#039;   Start programu OK. &#039;);        //vypis na konzolu

//pockam 1 sekundu na rozbehnutie systemu
 wait(1000);

label pingam:                           //kontrola dostupnosti vlastneho routeru
 ping_seq++;
 ping(192,168,2,1,ping_seq);            //IP routera v pripade potreby zmenit
 doba = sys[4];

cakacia_slucka:
 //uz uplynulo 500 msec?
 if (sys[4] - doba &gt; 500) goto pingam;
 //uz prisla odpoved?
 if (sys[92] != 8) goto cakacia_slucka;

 echo (&#039;   Ping na router OK&#039;);          //vypis na konzolu
label cakam_cas:
 if (sys[7] == 1970)                     //kontrola, ci uz je z NTP nacitany spravny datum a cas
{
  echo (&#039;   Cakam na presny cas...&#039;);    //vypis na konzolu
  wait(1000);
  goto cakam_cas;
}
else
{
  echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Presny cas OK. &#039;);  //vypis na konzolu
}

// poslat email pri zapnuti - po vypadku a znovuzapnuti napajania
 smtp_send(&#039;adresa@domena.sk&#039;, &#039;Vypadok el. energie a meteostanice&#039;, &#039;Po vypadku je znova zapnuta dodavka elektrickej energie dna &#039;,sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; o &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039; hod.&#039;);
 echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Email bol odoslany.&#039;); //vypis na konzolu
 wait(1000);


label opakovat:
//pockam na patnastu sekundu v minute - nedoporucujem posielat v nultej sekunde, cas servera nemusi byt spravne nastaveny!
 if (sys[10] == 15) mam_1_min();

  //kontrola na teplotu a pripadne odeslani emailu
  teplota = sys[311];  //zadne deleni pracujeme s integery
  if (teplota &lt; limit - hystereze) teplota_ok();
  if (teplota &gt; limit) hlasim_prekroceno();

  wait(500);
  goto opakovat;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[j@m]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=5</uri>
			</author>
			<updated>2015-01-09T22:24:47Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=4759#p4759</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Pomoc s programem]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=4758#p4758" />
			<content type="html"><![CDATA[<p>Dobry den,</p><p>nedavno sem poridil SDS Micro.<br />Nasel sem tu programek <a href="http://forum.merenienergie.cz//viewtopic.php?pid=838#p838">http://forum.merenienergie.cz//viewtopi … d=838#p838</a> do ktereho bych potreboval dosadit kus programku z wiki, ale nejak se v tom nemuzu prozatim vyznat. Poradi nekdo jak spravne dosadit do odkazovaneho programku?</p><p>Stavajici:<br />Doplnit o tento:</p><div class="codebox"><pre><code>teplota_ok
{
  sys[231] = 0; //RELE1 vypnuto
  email_odeslan = 0; //povolime odeslani emailu pri pristim prekroceni limitu
}

hlasim_prekroceno
{
  //pokud jsem uz odeslal email, nebudu ho posilat znovu
  if (email_odeslan == 0)
  {
    //jeste jsem email neodeslal, takze...
    smtp_send(&#039;muj@email.cz&#039;,&#039;Kotel odstaven!!!&#039;, &#039;Akumulacky jsou nabite!!!&#039;);
    echo(sys[5],&#039;.&#039;,sys[6],&#039;.&#039;,sys[7],&#039; - &#039;,sys[8],&#039;:&#039;,sys[9],&#039;:&#039;,sys[10],&#039;   Alarm odstaveni odeslany.&#039;); //vypis na konzolu
    //a zapamatuji si odeslani
    email_odeslan = 1;
  }
  sys[231] = 1;  //RELE1 zapnuto
}

 smycka_rizeni:
 teplota = (sys[311] / 100);  //musime delit 100 aby to byly cele stupne Celsia
   if (teplota &lt; limit - hystereze) teplota_ok();
   if (teplota &gt; limit) hlasim_prekroceno()</code></pre></div><p>Diky vsem za ochotu</p>]]></content>
			<author>
				<name><![CDATA[pjotros]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11586</uri>
			</author>
			<updated>2015-01-08T12:58:24Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=4758#p4758</id>
		</entry>
</feed>
