SDS micro light E - měření výkonu

Automatizace pomocí jednotek SDS, programování, logování, připojení, montáž senzorů, rady, tipy, návody, praktické poznatky, zkušenosti.
Odpovědět
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Ahoj kluci,

mám regulátor EPsolar, který když připojíte k PC, tak vidíte kolik je napětí, proud a výkon na panelech atd.
Protože mám rád každý watt, nechci aby dotyčný počítač stále běžel a ubíral mi cca 100W. PC je daleko a připojuji se na něj vzdálenou plochou.
Proto jsem si koupil SDS micro light E. Ale zjistil jsem až nyní, že sám od sebe dokáže měřit jen napětí. Proud pokud koupíte čidlo. Co mě ale nejvíce zajímá je, jestli existuje nějaké čidlo, které by dokázalo měřit výkon co dodávají panely.
Modul SDS micro light E má SNMP, ze kterého bych odečítal hodnoty výkonu, grafoval a měl ohromnou radost.

Nemáte s tím někdo zkušenost? Děkuji za každé nakopnutí.
Pepa
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Asi jsem položil špatně otázku.

Dá se s SDS micro light E nějak měřit výkon? Pokud ano, tak jak.
Děkuji za odpovědi.
Pepa
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: SDS micro light E - měření výkonu

Příspěvek od rottenkiwi »

DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Děkuji za odpověď,

toto vše vím. P=U*I je jasný,
umí SDS ve webovém rozhraní přímo ukázat výkon?
Díky
mobilik
Příspěvky: 2673
Registrován: úte úno 04, 2014 9:06 am
Reputace: 265
Bydliště: Neďaleko Košic (SR)
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od mobilik »

Podla mna sds je hlupa masinka, dnes uz existuju omnoho lepsie a lacnejsie a hlavne modularne veci... Kludne aj mescontrol.sk ...

Odoslané z Lenovo Vibe Z2 Pro.
Čo bolo bolo, bude len horšie...
Uživatelský avatar
Frenky
Příspěvky: 815
Registrován: pon led 21, 2013 6:36 pm
Reputace: 131
Lokalita: Doubravička
Systémové napětí: 48V
Výkon panelů [Wp]: 8700
Kapacita baterie [kWh]: 25
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Doubravička

Re: SDS micro light E - měření výkonu

Příspěvek od Frenky »

Peroslav píše:Děkuji za odpověď,

toto vše vím. P=U*I je jasný,
umí SDS ve webovém rozhraní přímo ukázat výkon?
Díky
Ano, umí. Co se takhle podívat na podpůrné stránky výrobce a jejich wiky? :D

fórum http://forum.merenienergie.cz/

moje řešení (překonáno jest) :mrgreen:
můj výtvor
můj výtvor
24x Solární panel JINKO SOLAR 225 Pmpp=225W, 2x Regulátor STUDER VT-80, 2x Střídač Studer XTM 4000-48, BSP, RCC, 1x AKU 48V LFP200Ah 1x AKU 48 V LFP280Ah. Řizení a dohled, SDS, vlastní vyčítání arduinem DUE v krabičce (ARMOSY), export dat do RPi s databází a html stránkou.
http://95.85.214.80, viewtopic.php?t=4809
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: SDS micro light E - měření výkonu

Příspěvek od rottenkiwi »

Ak som si istý, že bude podpora zo strany dodávateľa HW a SW, tak záleží len na cene systému
a spotrebe, príp- možnostiach upgrade-u, update-u v budúcnosti.

A mi stačí 16 vstupov a 50 výstupov a spotreba 1 W, tak Arduino s vlastným serverom je bezkonkurenčné,
lebo nový modul si tam dorobím za 5 min a stojí ma to 0.0 €. :)

A ak mám pevnú IP alebo najakú službu / no-ip.com /, tak to mám aj s dátami kdekoľvek
a možem diaĺkovo sledovať a ovládať x Arduín.

Ono to pojde aj na Rasp. Pi, ale tam už napísať vlastný derivát OS nie je triviálna vec na 5 min. roboty.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Díky Frenky,

tvůj výtvor by mě úplně stačil. Nemůžeš sem prosím dát presně tu stránku diskuze?
Nemohu to na foru SDS najít.
Děkuji Pepa
Uživatelský avatar
Frenky
Příspěvky: 815
Registrován: pon led 21, 2013 6:36 pm
Reputace: 131
Lokalita: Doubravička
Systémové napětí: 48V
Výkon panelů [Wp]: 8700
Kapacita baterie [kWh]: 25
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Doubravička

Re: SDS micro light E - měření výkonu

Příspěvek od Frenky »

Peroslav píše:Díky Frenky,

tvůj výtvor by mě úplně stačil. Nemůžeš sem prosím dát presně tu stránku diskuze?
Nemohu to na foru SDS najít.
Děkuji Pepa
Tam přesně tvůj problém není, je to o programování v kódu SDS-ka a html stránky, dále o pochopení činnosti SDS, jeho omezeních apod.
Jak tady psali jiní, dnes bych asi do SDS nešel. Je mnoho daleko sofistikovanějších krabiček, které toho umějí daleko více.

- arduino s Rapsberry
- SIEMENS logo
- SIEMENS S1200

Záleží na tom, zda umíš, či neumíš programovat. A taky v čem. Pak také záleží na tom jaké komponenty (jakých výrobců) máš v systému

Existuje také celá řada hotových řešení.
1) microlog zde na fóru, včetně logování zde na fóru (pro přenos dat se musí pomocí SZ kontaktovat admin). Pracuje se se zařízením arduino MEGA 2560
2) Systém VALC od uživatelky VATA kontaktuj http://vati.cz/eshop/index.php?route=pr ... ry&path=62. Pracuje se zařízením SDS.

Určitě jsem si na všechny řešení nevzpomněl. :geek:
24x Solární panel JINKO SOLAR 225 Pmpp=225W, 2x Regulátor STUDER VT-80, 2x Střídač Studer XTM 4000-48, BSP, RCC, 1x AKU 48V LFP200Ah 1x AKU 48 V LFP280Ah. Řizení a dohled, SDS, vlastní vyčítání arduinem DUE v krabičce (ARMOSY), export dat do RPi s databází a html stránkou.
http://95.85.214.80, viewtopic.php?t=4809
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Už asi rozumím,

a nemohl bys sem dát zdrojový kod toho tvého print screenu?
Takto by mi to úplně stačilo.
Uživatelský avatar
Frenky
Příspěvky: 815
Registrován: pon led 21, 2013 6:36 pm
Reputace: 131
Lokalita: Doubravička
Systémové napětí: 48V
Výkon panelů [Wp]: 8700
Kapacita baterie [kWh]: 25
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Doubravička

Re: SDS micro light E - měření výkonu

Příspěvek od Frenky »

Peroslav píše:Už asi rozumím,

a nemohl bys sem dát zdrojový kod toho tvého print screenu?
Takto by mi to úplně stačilo.
Tak tohle je hlavní program do sds

Kód: Vybrat vše

/*
Program pro ovladani a dohled  male FVE
Verze pro SDS MACRO s komunikaci RS232 pro releovou desku QUIDO od Papouch + ovladani a dohled FV systemu
Datum otestovani programu: 29.5.2016 16:00 hod

***********  obsahuje  **************
1)  Program pro odesilani informaci na portal eportal.merenienergie.cz (autor viz portal)
2)  Uprava pro merení napeti a proudu na AD1-AD4, proudy pomoci cidel Amploc (autor Ing. Lastovicka Jaromir)
3)  Uprava pro ctení promennych pro html pres ram (autor Ing. Lastovicka Jaromir)
4)  Ovladani releove desky QUIDO od papouch přes RS232 a WEB stranku (autor diskuzni forum mereni energie)
5)  Oprava ovladani releove desky QUIDO. (verze z fora posilala instrukce pro neexistujici rele "0")
6)  Uvolneni RAM(0-100) prechod na "TEXT" (TEXT[400-420])
7)  Posilani hodnot ram na uzivatelsky WEB
8)  Posilani hlaseni o vykonech na elektromerech do konzole
9)  Statistiky (Ing. Nešvara)
10) Vypis hodnot na LCD displej s prepinanim obrazovek pomoci volnych opto vstupu opto1-opto4.
11) Ovladani ventilatoru rozvadece dle teplotnich cidel jednotlivych komponentu (XTS, VT-80, cidlo rozvadec)
12) Ovladani spotreby (zapinani XTS) pres rele Re3 dle napeti AKU LiFePo
13) Posilani dat na server raspberry
//------------------------------------------  obsazení RAM ------------------------------------------------------------
RAM[60-63]   prenos statistik
RAM[101-104] prenos statistik
RAM[180-194] prenos statistik
RAM[111-130] rs232 - (16 pozic)
RAM[131]     prenos informace o vybijeni/nabijeni baterie na uzivatelsky WEB
RAM[135-138] prenos AD1-AD4 na uzivatelsky WEB
RAM[139-145] prenos vypocitanych udaju na uzivatelsky WEB
RAM[148-149] vypocty proudu (AD3 a AD4)
RAM[150-155] lcdtime a echotime pouziva
RAM[156-161] lcddate a echodate pouziva
RAM[162-165] stanoveni hodnot systemu RAM[162-165] misto povodnich SYS[140-147]
RAM[190-195] vypocty elektromeru do konzole
RAM[201-219] vypocty teploty s teplomeru na displej
RAM[220-225] vypocty elektromeru na displej

pokud se bude pouzivat dalsi http_get, e-mail, atd., pozor na timeouty pro dobehnuti GETu
pozor na pouzivani sys[64] odpocitavani casu - muze dojit k omezeni funkce portalu
*/
//-----------------------------  promenne define -----------------------------------------------
#define ODPOCITAVAC_SEKUND sys[64]
#define POCET_MERENI 10           // mereni napeti Baterie na AD1-AD4
#define CYKLUS_TEPLOTA 1          // mereni teploty
#define REL_DEL 5 //1-155 a 0.5 s // stanoveni casoveho spozdeni rele (QUIDO)
#define SEC2MIN 166
#define SEC2HR 2777
#define MAXPAGE 5                 // pocet stranek hlavniho menu
#define MAXPAGERELE 22            // pocet stranek rele (pocet rele 16 + 5)
#define STOZAP 267                // Hladina napeti Ubat LiFePo kdy sepne Re3 (Vystup ze stridace STUDER) (267 = 26,7V)
#define STOVYP 250                // Hladina napeti Ubat LiFePo kdy vypne Re3 (Vystup ze stridace STUDER) (264 = 25,0V)
//-----------------------------  promenne k odesilani udaju na portal ----------------------------
var _portal_vstup;       //index S0 vstupu
var _portal_konst;       //prepoctova konst S0 vstupu
var _portal_ram;         //index ram pole
var _portal_pom;         //pomocna
var _portal_dns;         //je dostupny preklad dns
var _portal_data;        //typ odesilanych dat
var _portal_timeout;     //timeout pro odesilani dat
var _portal_timeoutget;  //timeout pro chybu serveru
var _portal_timeoutdns;  //timeout pro dns_resolve
var _disp;               //display sds macro ano/ne
var _PHP_timeout, _PHP_timeout1,  _teploty_timeout;
//-----------------------------  promenne FVE -----------------------------------------------
var PV_volt_a, PV_volt_b, PV_curr_a, PV_curr_b;
var b1_volt_a, b1_volt_b, b2_volt_a, b2_volt_b, b3_amp_v, b4_amp_v;
var b3_amp_a, b3_amp_b, b4_amp_a, b4_amp_b;
var PV_volt, PV_curr, b1_volt, b2_volt, batt_chrg, b3_amp, b4_amp;
var batwat, panelbat;
var last_volt;
var nabijim, vybijim, stav;
var znak,_text;
var c, i, ct;
var _pruchod, _val, _rs232in, _ram, _ram2, _sys, _txt, _pom, _rs232s, _relspo, H, _rele, _va;
var relst1, relst2, relst3, relst4, D0;
var _consoletime, _consoletime2, _consoletime3, _consoletime4, _termostattime, _raspberrytime;
var sec2Hr;  //Prevod wat-sekunda na kWh
var _beh_min;   //probihajici minuta
var _beh_min24; //probihajici minuta 1x za 24hod
var VDC, DCB, DCP, SDC, SDCm, NBAT, SBAT;
var VDCmin, SDCmin, NBATmin, sec2min, VDCm1, SDCm1, NBATm1;
var VDC24h, SDC24h, NBAT24h, VDC24, SDC24, VDCd, SDCd;
var page, maxpage, pageindex, pagerele, maxpagerele, _r, _q, SoC, _a, automat;
var teplotaStuder, teplotaTristar, teplotaRozvadec, email1, email2, email3, email4;
//--------------------  procedury ziskani analogovych hodnot AD1-AD4  ----------------------------------------
//------------------------------------------  AD1 ------------------------------------------------------------
nacti_hodnoty
{
  // snimani z cidel 0-30V , sejmuta hodnota je 0-1023
  //pri deleni je nutne desetinna mista doplnovat po jednom (delit 10)!

  b1_volt = 0;

  c = POCET_MERENI;         //mereni napeti baterie LiFePo 24V na AD1
  label cyklus1:
  b1_volt += sys[431];       //secteni x vzorku (pocet mereni)
  wait(1);
  c--;
  if(c > 0) goto cyklus1;

  b1_volt = b1_volt / POCET_MERENI;  //prumerovani
  b1_volt_a = sys[431] * 100 / sys[436];   //vypocet pred desetinnou teckou
  b1_volt_b = (((sys[431] * 100) % sys[436]) * 100) / sys[436]; //vypocet za desetinnou teckou
  ram[135] = sys[431] * 100000 / sys[436];  //vypocet napeti pro WEB
//------------------------------------------  AD2 ------------------------------------------------------------
  b2_volt = 0;

  c = POCET_MERENI;         //mereni napeti baterie Pb 12V na AD2
  label cyklus2:
  b2_volt += sys[432];       //secteni x vzorku (pocet mereni)
  wait(1);
  c--;
  if(c > 0) goto cyklus2;

  b2_volt = b2_volt/POCET_MERENI;  //prumerovani
  b2_volt_a = (sys[432] * 100) / sys[440];   //vypocet pred desetinnou teckou
  b2_volt_b = ((sys[432] * 100) % sys[440])*100) / sys[440]; //vypocet za desetinnou teckou
  ram[136] = sys[432] * 100000 / sys[440];  //vypocet napeti pro WEB
//------------------------------------------  AD3 ------------------------------------------------------------
  b3_amp = 0;

  c = POCET_MERENI;         //mereni proudu FV panelu na AD3
  label cyklus3:
  b3_amp += sys[433];       //secteni x vzorku (pocet mereni)
  wait(1);
  c--;
  if(c > 0) goto cyklus3;

  b3_amp = b3_amp / POCET_MERENI;  //prumerovani
  b3_amp_v = sys[433] * 100000 / sys[444] - 2500; //vypocet napeti cidla (odecteni půlky (5V))
  ram[137] = sys[433] * 100000 / sys[444];        //vypocet napeti cidla pro WEB
  ram[142] = (b3_amp_v * 1000) / 37;              //vypocet proudu cidla (37 mV = Amploc 25A)

  ram[148] = (b3_amp_v * 100) / 37;
  b3_amp_a = ram[148] / 100; //vypocet pred desetinnou teckou
  b3_amp_b = ram[148] % 100; //vypocet za desetinnou teckou
       if (b3_amp_b >= 0) goto minuss; // osetreni zaporneho cisla desetinne tecky
  b3_amp_b = 0 - b3_amp_b; // rucni doplneni cisla 0 pokud hodnota je 0-9
  label minuss:
//------------------------------------------  AD4 ------------------------------------------------------------
  b4_amp = 0;

  c = POCET_MERENI;         //mereni proudu baterie LiFePo 24V na AD4
  label cyklus4:
  b4_amp += sys[434];       //secteni x vzorku (pocet mereni)
  wait(1);
  c--;
  if(c > 0) goto cyklus4;

  b4_amp = b4_amp / POCET_MERENI;  //prumerovani
  b4_amp_v = (sys[434] * 100000) / sys[448] - 2500; //vypocet napeti cidla
  ram[138] = sys[434] * 100000 / sys[448];          //vypocet napeti cidla pro WEB
  ram[143] = (b4_amp_v * 10000) / 95;               //vypocet proudu cidla (9,5 mV = Amploc 100A)

  ram[149] = (b4_amp_v * 1000) / 95;
  b4_amp_a = ram[149] / 100; //vypocet pred desetinnou teckou
  b4_amp_b = ram[149] % 100; //vypocet za desetinnou teckou
       if (b4_amp_b >= 0) goto minus; // osetreni zaporneho cisla desetinne tecky
  b4_amp_b = 0 - b4_amp_b; // rucni doplneni cisla 0 pokud hodnota je 0-9
  label minus:

//------------------------------------------  vypocty ------------------------------------------------------------
  batwat =   ((ram[135]) * (ram[143] / 100)) / 10000; //vypocet vykonu baterie pro displej
  panelbat = ((ram[135]) * (ram[142] / 100)) / 10000;

  ram[139] = (ram[135] / 1000) * (ram[143] /10 ;     //vypocet vykonu baterie pro WEB
  ram[140] = (ram[135] / 1000) * (ram[142] /10 ;     //vypocet vykonu panelu pro WEB

// vypocet teploty procesoru (matematicka kouzla dle dokumentace na Wiky)
  ram[213] = 879 * sys[46]; //1426910
  ram[214] = 590000 - ram[213]; //16192700
  ram[215] = 5 * ram[214]; //80963500
  ram[216] = ram[215] / 2; //40481750
  ram[217] = ram[216] / 10000;
  ram[218] = ram[215] / 200;
  ram[219] = ram[218] % 100;
  ram[146] = ram[216] / 100;
}
//------------------------------------------  globalni procedury --------------------------------------------------
echorele
 {
 echo('stav rele QUIDO: ',ram[111],',',ram[112],',',ram[113],',',ram[114],',',ram[115],',',ram[116],',',ram[117],',',ram[118],','
                         ,ram[119],',',ram[120],',',ram[121],',',ram[122],',',ram[123],',',ram[124],',',ram[125],',',ram[126]);
}

echotime         // cas do konzole
{
 ram[150] = sys[8] / 10;
 ram[151] = sys[8] % 10;
 ram[152] = sys[9] / 10;
 ram[153] = sys[9] % 10;
 ram[154] = sys[10] / 10;
 ram[155] = sys[10] % 10;
 echo (ram[150], ram[151]':', ram[152], ram[153]':', ram[154], ram[155]);
}
//------------------------------------------  procedury portalu ------------------------------------------------------------
 portal_ad
{
 _portal_vstup = 431;
 _portal_konst = 436;
 _portal_ram = 101;

 label portal_ad_1:
 //AD
 _portal_pom = sys[_portal_vstup]*100000/sys[_portal_konst];  //3205 jako 3.205 V
 ram[_portal_ram] = _portal_pom;   //schovat akt.napeti

 _portal_vstup++;
 _portal_konst += 4;
 _portal_ram++;
 if (_portal_vstup < 435) goto portal_ad_1;
}

odesli_data_na_portal
{
 if (_portal_timeoutget == 0) goto odesli_data_na_portal_get;   //odeslat data
 //pred odeslanim dat zkontrolovat zda nebezi predchozi pozadavek
 if (sys[65] == 0 && _portal_timeoutget >= sys[3]) goto odesli_data_na_portal_end;    //jeste bezi, ale mam cas delam neco jineho
 if (_portal_timeoutget < sys[3]) goto odesli_data_na_portal_chyba;                 //uz neni cas - chyba
 if ((sys[65] != 1024) || (sys[75] != 200)) {
  goto odesli_data_na_portal_chyba;
 } else {
  if (_portal_data == 1) {
   echotime();
   echo('S0 odeslano na server, OK.');
  }
  if (_portal_data == 2) {
   echo('Temp A odeslano na server, OK.');
  }
  if (_portal_data == 3) {
   echo('AD odeslano na server, OK.');
//   echo('FVE panely: ',b3_amp_a,'.',b3_amp_b,' A');
//   echo('Baterie: ',b4_amp_a,'.',b4_amp_b,' A');
   echo('MPPT:    Napeti ',b1_volt_a,'.',b1_volt_b,' V',' Proud ',b3_amp_a,'.',b3_amp_b,' A',' Vykon ',panelbat,' W',' Energia za 1 den ',VDCd,' Wh');
   echo('Baterie: Napeti ',b1_volt_a,'.',b1_volt_b,' V',' Proud ',b4_amp_a,'.',b4_amp_b,' A',' Vykon ',batwat,' W',' Energia za 1 den ',SDCd,' Wh');

  }
  _portal_data++;
  _portal_timeoutget = 0;
  if (_portal_data > 3) {
   _portal_timeout=sys[3] + 90000;    //90000 = 15 min interval mereni
   _portal_data = 0;                  //vynulovat
   goto odesli_data_na_portal_end;
  }
 }

label odesli_data_na_portal_get:
 if (_portal_dns == 1) {
  //mam dns
  if (_portal_data == 1) {
   http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/datas0.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&t0v1=', sys[493], '&t0v2=', sys[494], '&t0v3=', sys[495], '&t0v4=', sys[496], '&t0v5=', sys[497], '&t0v6=', sys[498], '&t0v7=', sys[499], '&t0v8=', sys[500], '&t1v1=', sys[526], '&t1v2=', sys[527], '&t1v3=', sys[528], '&t1v4=', sys[529], '&t1v5=', sys[530], '&t1v6=', sys[531], '&t1v7=', sys[532], '&t1v8=', sys[533], '&av1=', sys[592], '&av2=', sys[593], '&av3=', sys[594], '&av4=', sys[595], '&av5=', sys[596], '&av6=', sys[597], '&av7=', sys[598], '&av8=', sys[599], '&tt=', sys[459]);
  }
  if (_portal_data == 2) {
   http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/datatemp.php?ver=1&line=a&devid=', 'tady nahraj tvuj kod od eportal', '&t1=', sys[310], '&t2=', sys[311], '&t3=', sys[312], '&t4=', sys[313], '&t5=', sys[314], '&t6=', sys[315], '&t7=', sys[316], '&t8=', sys[317], '&t9=', sys[318], '&t10=', sys[319], '&t11=', sys[320], '&t12=', sys[321], '&t13=', sys[322], '&t14=', sys[323], '&t15=', sys[324], '&t16=', sys[325]);
  }
  if (_portal_data == 3) {
   portal_ad();
   http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/dataad.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&ad1=', ram[101], '&ad2=', ram[102], '&ad3=', ram[142], '&ad4=', ram[143]);
  }
  } else {
  //nemam dns
  if (_portal_data == 1) {
   http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/datas0.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&t0v1=', sys[493], '&t0v2=', sys[494], '&t0v3=', sys[495], '&t0v4=', sys[496], '&t0v5=', sys[497], '&t0v6=', sys[498], '&t0v7=', sys[499], '&t0v8=', sys[500], '&t1v1=', sys[526], '&t1v2=', sys[527], '&t1v3=', sys[528], '&t1v4=', sys[529], '&t1v5=', sys[530], '&t1v6=', sys[531], '&t1v7=', sys[532], '&t1v8=', sys[533], '&av1=', sys[592], '&av2=', sys[593], '&av3=', sys[594], '&av4=', sys[595], '&av5=', sys[596], '&av6=', sys[597], '&av7=', sys[598], '&av8=', sys[599], '&tt=', sys[459]);
  }
  if (_portal_data == 2) {
   http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/datatemp.php?ver=1&line=a&devid=',  'tady nahraj tvuj kod od eportal', '&t1=', sys[310], '&t2=', sys[311], '&t3=', sys[312], '&t4=', sys[313], '&t5=', sys[314], '&t6=', sys[315], '&t7=', sys[316], '&t8=', sys[317], '&t9=', sys[318], '&t10=', sys[319], '&t11=', sys[320], '&t12=', sys[321], '&t13=', sys[322], '&t14=', sys[323], '&t15=', sys[324], '&t16=', sys[325]);
  }
  if (_portal_data == 3) {
   portal_ad();
   http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/dataad.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal, '&ad1=', ram[101], '&ad2=', ram[102], '&ad3=', ram[142], '&ad4=', ram[143]);
  }
  }

 _portal_timeoutget=sys[3] + 1500;   //15 s pro potvrzeni ze serveru
 goto odesli_data_na_portal_end;

label odesli_data_na_portal_chyba:
 echo('Chyba komunikace s www serverem, http: ', sys[75]);
 _portal_timeout = sys[3] + 90000;    //90000 = 5 min interval
 _portal_data = 0;                    //vynulovat
 _portal_timeoutget = 0;              //vynulovat
 _portal_timeoutdns = 0;              //vynulovat

label odesli_data_na_portal_end:
}

portal_nastav
{
 _portal_timeout = 0;     //zrovna se odesilaji data
 _portal_timeoutget = 0;  //vynulovat timeout predchozich get pozadavku
 _portal_timeoutdns = 0;  //vynulovat timeout predchoziho dns resolveru
 _portal_dns = 0;         //nemam dns
 _portal_data = 1;
}

portal_dns
{
 if (_portal_timeoutdns == 0) {
  echotime();
  echo('dns_resolv()');
  dns_resolv('eportal.merenienergie.cz');
  _portal_timeoutdns = sys[3] + 1500;    //15 s timeout
 }
 if (sys[65] == 512) {
  echotime();
  echo ('dns_resolv() OK:', sys[65]);
  _portal_dns = 1;
  return;
 }
 if (_portal_timeoutdns < sys[3] ) {
  echotime();
  echo ('dns_resolv() chyba:', sys[65]);
  _portal_dns = 2;
 }
}
//----------------------------  procedury pro ovladani rele QUIDO po sbernici RS232  ------------------------------------
// rs232 pouziva TEXT[400-420] pro prijem dat po serial_text_out
// rs232 pouzivá RAM[111-126] pro stav rele 1-16
//*B$OS1H zapnuti 1.Rele
//*B$OS1L vypnuti 1.Rele
//*B$OT1L2 vypnuti 1.Rele se spozdenim 1s (1-255 a 0,5s)
//0x48 je hexa H
//0x4c je hexa L
//0x30 je hexa 0
//0x31 je hexa 1

 rs232
{
 _pruchod = 0;
 rs232_0:
// serial_text_out('*B$OS1H', 0x0D); //sepnuti 1.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS2H', 0x0D); //sepnuti 2.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS3H', 0x0D); //sepnuti 3.rele pred HW zmenou (rozpinaci rele)
// wait(50);
 ram[111] = 0; //ovladani barvy tlacitka 1.rele na panelu v user.htm
 ram[112] = 0; //ovladani barvy tlacitka 2.rele na panelu v user.htm
 ram[113] = 0; //ovladani barvy tlacitka 3.rele na panelu v user.htm
 if (_val > 0 && _val < 4) {  //ovladani 1. - 3. rele <RESTART>
  _rs232in=0x30+_val;     //stanoveni tlacitka 1-16 0+sys[141] (user.htm) 
  _relspo=0x30+REL_DEL;   //0+DEFINE=delka spozdeni rele pri restartu
  H=0x48;
  serial_text_out('*B$OT', _rs232in, H, _relspo, 0x0D);
 }
 if (_val > 3 && _val < 10) {  //ovladani 4. - 9. rele <ZAP/VYP>
  _rs232in = 0x30 + _val;      //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
  serial_text_out('*B$OS', _rs232in, _rs232s, 0x0D);
 }
 if (_val >= 10 && _val <= 16) {//ovladani 10. - 16. rele <ZAP/VYP>
  _rs232in = 0x30 + _val - 10;    //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
  serial_text_out('*B$OS', 0x31, _rs232in, _rs232s, 0x0D);
  } 
  wait(50);  //dat mu cas na odezvu
 _txt = 400;
 //celou odpoved do pole
 if(sys[48] == 0) { // pokud je nejaky znak prijaty ze seriove sbernice
  rs232_1:
  text[_txt] = sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole text[]
  _txt++; // dalsi pozice v text[], kam se zapise dalsi znak
  if (sys[48] == 0  && _txt < 420) goto rs232_1;  //at se odpoved nedostane do text[420] !!!
 }
 text[_txt] = 0x00; //konec pro echo
 //potvrzeni OK - porovnej prijate znaky ulozene v ram[]
 if (text[400] == 42 && text[401] == 66 && text[402] == 49 && text[403] == 48 && text[404] == 13) {
  _pom= _val + 110;
  // zpracuj hodnotu                    
  if (_rs232s == 0x48) {   //hexa H
   if (_val > 0){      //odstraneni automatickeho vysilani "0 zapnuto"
//   echotime();
   echo (_val, ' Zapnuto');
   lcd_echo(1, 400, 0, 'Rele QUIDO ', _val, ' ZAP');
   wait(1000);
   lcd_echo(1, 400, 0, '                      ');
   ram[_pom]=1;
   }
  } else {
    if (_val > 0){      //odstraneni automatickeho vysilani "0 vypnuto"
//   echotime();
   echo (_val, ' Vypnuto');
   lcd_echo(1, 400, 0, 'Rele QUIDO ', _val, ' VYP');
   wait(1000);
   lcd_echo(1, 400, 0, '                      ');
   ram[_pom] = 0;
   }
  }
  goto rs232_end;
 }
 //akce se nezdarila opakuju
 wait(50);
 _pruchod++;
 if (_pruchod > 5) {
  if (_rs232s == 0x48) {  //hexa H
   if (_val > 0){      //odstraneni automatickeho vysilani "0 zapnuti se nezdarilo!"
   echotime();
   echo ('Zapnuti se nezdarilo!');
   }
  } else {
   if (_val > 0){      //odstraneni automatickeho vysilani "0 vypnuti se nezdarilo!"
   echotime();
   echo ('Vypnuti se nezdarilo!');
    }
   }
  goto rs232_end;
 }
 goto rs232_0;
label rs232_end:
}
nastav232
{
 _val = sys[141];  //1-16
 if (_val == 0 || _val > 16) goto nastav232_end;  //zadna zmena
 echotime();
 echo ('Pozadavek na rs232 sepni/vypni rele - ', _val);
 _pom = 110 + _val;
 if (ram[_pom] == 0) {
  _rs232s = 0x48;  //zap    hexa H
  rs232();
 } else {
  _rs232s = 0x4c;  //vyp    hexa L
  rs232();
 }
 sys[141] = 0;  //vynulovat prikaz

 //Vypis stavu rele QUIDO, nesouvisi s predchozim kodem
 echotime();
 echorele();
label nastav232_end:
 }
//Pozn. sys[141] je pouzit pro ovladani tohoto programu - je to hodnota tzv. uzivatelske promenne nastavitele pres web (viz webove rozhrani vyrobku SDS - stranka SDS-C - odkaz uzivatelske promenne

//------------------------  procedury pro zobrazování stavu akumulátoru  ------------------------------------------
akustav
 {
// if (ram[131] == 0) {                 // if (ram[136] == 0) {  // podminka kdyz zrovna nenebijim
  if (sys[431] <= 809)                  { stav = 0; ram[141] = stav; }   // 804/3370=0,2385 to je 23,85 V
  if (sys[431] == 810)                  { stav = 1; ram[141] = stav; }   // 806/3370=0,2391 to je 23,91 V
  if (sys[431] == 811)                  { stav = 2; ram[141] = stav; }
  if (sys[431] == 812)                  { stav = 3; ram[141] = stav; }
  if (sys[431] == 813)                  { stav = 4; ram[141] = stav; }
  if (sys[431] == 814)                  { stav = 5; ram[141] = stav; }
  if (sys[431] == 815)                  { stav = 6; ram[141] = stav; }
  if (sys[431] == 816)                  { stav = 7; ram[141] = stav; }
  if (sys[431] == 817)                  { stav = 8; ram[141] = stav; }
  if (sys[431] == 818)                  { stav = 9; ram[141] = stav; }
  if (sys[431] == 819)                  { stav = 10; ram[141] = stav; }
  if (sys[431] == 820)                  { stav = 11; ram[141] = stav; }
  if (sys[431] == 821)                  { stav = 12; ram[141] = stav; }
  if (sys[431] == 822)                  { stav = 13; ram[141] = stav; }
  if (sys[431] == 823)                  { stav = 14; ram[141] = stav; }
  if (sys[431] == 824)                  { stav = 15; ram[141] = stav; }
  if (sys[431] == 825)                  { stav = 16; ram[141] = stav; }
  if (sys[431] == 826)                  { stav = 17; ram[141] = stav; }
  if (sys[431] == 827)                  { stav = 18; ram[141] = stav; }
  if (sys[431] == 828)                  { stav = 19; ram[141] = stav; }
  if (sys[431] == 829)                  { stav = 20; ram[141] = stav; }  // 808/3370=0,2397 to je 23,97 V
  if (sys[431] == 830)                  { stav = 21; ram[141] = stav; }
  if (sys[431] == 831)                  { stav = 22; ram[141] = stav; }
  if (sys[431] == 832)                  { stav = 23; ram[141] = stav; }
  if (sys[431] == 833)                  { stav = 24; ram[141] = stav; }
  if (sys[431] == 834)                  { stav = 25; ram[141] = stav; }
  if (sys[431] == 835)                  { stav = 26; ram[141] = stav; }
  if (sys[431] == 836)                  { stav = 27; ram[141] = stav; }
  if (sys[431] == 837)                  { stav = 28; ram[141] = stav; }
  if (sys[431] == 838)                  { stav = 29; ram[141] = stav; }
  if (sys[431] == 839)                  { stav = 30; ram[141] = stav; }
  if (sys[431] == 840)                  { stav = 31; ram[141] = stav; }
  if (sys[431] == 841)                  { stav = 32; ram[141] = stav; }
  if (sys[431] == 842)                  { stav = 33; ram[141] = stav; }
  if (sys[431] == 843)                  { stav = 34; ram[141] = stav; }
  if (sys[431] == 844)                  { stav = 35; ram[141] = stav; }
  if (sys[431] == 845)                  { stav = 36; ram[141] = stav; }
  if (sys[431] == 846)                  { stav = 37; ram[141] = stav; }
  if (sys[431] == 847)                  { stav = 38; ram[141] = stav; }
  if (sys[431] == 848)                  { stav = 39; ram[141] = stav; }
  if (sys[431] == 849)                  { stav = 40; ram[141] = stav; }
  if (sys[431] == 850)                  { stav = 41; ram[141] = stav; }
  if (sys[431] == 851)                  { stav = 42; ram[141] = stav; }
  if (sys[431] == 852)                  { stav = 43; ram[141] = stav; }
  if (sys[431] == 853)                  { stav = 44; ram[141] = stav; }
  if (sys[431] == 854)                  { stav = 45; ram[141] = stav; }
  if (sys[431] == 855)                  { stav = 46; ram[141] = stav; }
  if (sys[431] == 856)                  { stav = 47; ram[141] = stav; }
  if (sys[431] == 857)                  { stav = 48; ram[141] = stav; }
  if (sys[431] == 858)                  { stav = 49; ram[141] = stav; }
  if (sys[431] == 859)                  { stav = 50; ram[141] = stav; }
  if (sys[431] == 860)                  { stav = 51; ram[141] = stav; }
  if (sys[431] == 861)                  { stav = 52; ram[141] = stav; }
  if (sys[431] == 862)                  { stav = 53; ram[141] = stav; }
  if (sys[431] == 863)                  { stav = 54; ram[141] = stav; }
  if (sys[431] == 864)                  { stav = 55; ram[141] = stav; }
  if (sys[431] == 865)                  { stav = 56; ram[141] = stav; }
  if (sys[431] == 866)                  { stav = 57; ram[141] = stav; }
  if (sys[431] == 867)                  { stav = 58; ram[141] = stav; }
  if (sys[431] == 868)                  { stav = 59; ram[141] = stav; }
  if (sys[431] == 869)                  { stav = 60; ram[141] = stav; }
  if (sys[431] == 870)                  { stav = 61; ram[141] = stav; }
  if (sys[431] == 871)                  { stav = 62; ram[141] = stav; }
  if (sys[431] == 872)                  { stav = 63; ram[141] = stav; }
  if (sys[431] == 873)                  { stav = 64; ram[141] = stav; }
  if (sys[431] == 874)                  { stav = 65; ram[141] = stav; }
  if (sys[431] == 875)                  { stav = 66; ram[141] = stav; }
  if (sys[431] == 876)                  { stav = 67; ram[141] = stav; }
  if (sys[431] == 877)                  { stav = 68; ram[141] = stav; }
  if (sys[431] == 878)                  { stav = 69; ram[141] = stav; }
  if (sys[431] == 879)                  { stav = 70; ram[141] = stav; }
  if (sys[431] == 880)                  { stav = 71; ram[141] = stav; }
  if (sys[431] == 881)                  { stav = 72; ram[141] = stav; }
  if (sys[431] == 882)                  { stav = 73; ram[141] = stav; }
  if (sys[431] == 883)                  { stav = 74; ram[141] = stav; }
  if (sys[431] == 884)                  { stav = 75; ram[141] = stav; }
  if (sys[431] == 885)                  { stav = 76; ram[141] = stav; }
  if (sys[431] == 886)                  { stav = 77; ram[141] = stav; }
  if (sys[431] == 887)                  { stav = 78; ram[141] = stav; }
  if (sys[431] == 888)                  { stav = 79; ram[141] = stav; }
  if (sys[431] == 889)                  { stav = 80; ram[141] = stav; }
  if (sys[431] == 890)                  { stav = 81; ram[141] = stav; }
  if (sys[431] == 891)                  { stav = 82; ram[141] = stav; }
  if (sys[431] == 892)                  { stav = 83; ram[141] = stav; }
  if (sys[431] == 893)                  { stav = 84; ram[141] = stav; }
  if (sys[431] == 894)                  { stav = 85; ram[141] = stav; }
  if (sys[431] == 895)                  { stav = 86; ram[141] = stav; }
  if (sys[431] == 896)                  { stav = 87; ram[141] = stav; }
  if (sys[431] == 897)                  { stav = 88; ram[141] = stav; }
  if (sys[431] == 898)                  { stav = 89; ram[141] = stav; }
  if (sys[431] == 899)                  { stav = 90; ram[141] = stav; }
  if (sys[431] == 900)                  { stav = 91; ram[141] = stav; }
  if (sys[431] == 901)                  { stav = 92; ram[141] = stav; }
  if (sys[431] == 902)                  { stav = 93; ram[141] = stav; }
  if (sys[431] == 903)                  { stav = 94; ram[141] = stav; }
  if (sys[431] == 904)                  { stav = 95; ram[141] = stav; }
  if (sys[431] == 905)                  { stav = 96; ram[141] = stav; }
  if (sys[431] == 906)                  { stav = 97; ram[141] = stav; }
  if (sys[431] == 907)                  { stav = 98; ram[141] = stav; }
  if (sys[431] == 908)                  { stav = 99; ram[141] = stav; }
//  if (sys[431] > 902 && sys[431] < 905) { stav = 90; ram[141] = stav; }  // 852/3370=0,2528 to je 25,28 V
//  if (sys[431] > 907 && sys[431] < 911) { stav = 95; ram[141] = stav; }  // 856/3370=0,2540 to je 25,24 V
  if (sys[431] > 905)                   { stav = 100; ram[141] = stav; } // 860/3370=0,2551 to je 25,51 V

// zmena barvy napisu Proud Baterie v user html
  if (ram[143] >= 0)   {   //stanoveni nabijim-vybijim pro USER.htm
  ram[131] = 1;
    } else {
  ram[131] = 0;
   }
 }

//------------------------  ovladani rele SDS  ------------------------------------------
releon
{
 sys[_rele] = 255;
 _pom = _rele - 230;
 if (_disp == 1) { // pokud je zapnuty displej
  lcd_echo(1, 400, 0, 'Rele ', _pom, ' ZAP');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
 }
 echotime();
 echo('Rele ', _pom, ' ZAP');
 if (_pom == 2) {
  lcd_echo(1, 400, 0, 'Vetrak zapnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  }
}

releoff
{
 sys[_rele] = 0;
 _pom = _rele - 230;
 if (_disp == 1) { // pokud je zapnuty displej
  lcd_echo(1, 400, 0, 'Rele ', _pom, ' VYP');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
 }
 echotime();
 echo('Rele ', _pom, ' VYP');
 if (_pom == 2) {
  lcd_echo(1, 400, 0, 'Vetrak vypnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  }
}

nastavrele
{
 _va = sys[143];  //1-4 rele, 5 D0
 if (_va == 0 || _va > 5) goto nastavrele_end;  //zadna zmena
 echo ('Pozadavek na rele - ', _va);
 if (_va == 5) {
 echo ('Pozadavek na S0');
  _rele = 301;
  if (sys[_rele] == 0) {
   sys[_rele] = 1;
    echotime();
    echo ('S0 sepnut');
    lcd_echo(1, 400, 0, 'S0 ZAP           ');
    wait(1000);
    lcd_echo(1, 400, 0, '                 ');
    } else {
    sys[_rele] = 0;
    echotime();
    echo ('S0 vypnut') ;}
    lcd_echo(1, 400, 0, 'S0 VYP           ');
    wait(1000);
    lcd_echo(1, 400, 0, '                 ');
 } else {
  _rele = 230 + _va;
  if (sys[_rele] == 0) { releon(); } else { releoff(); }
 }
 sys[143] = 0;  //vynulovat prikaz
 
label nastavrele_end:
}
//-------------------------------  posilani mailu pri akcich  ---------------------------------------------------
posli_email1
{ // odesilani poplacove informace o zapnuti ventilatoru
  email1 = 1; // pamatuj si ze si to poslal
  echotime();
  echo('Vetrak zapnut - email poslan');
  lcd_echo(1, 400, 0, 'Vetrak zapnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VENTILATOR ZAPNUT"\n'ram[150], ram[151]':' ,ram[152], ram[153]':', ram[154], ram[155]' hod\nTeplota Stridace XTS = ' ram[201] ,'.', ram[202], ' st. C\nTeplota MPPT VT-80 = ' ram[205], '.',ram[206], ' st. C\nTeplota ROZVADEC = ' ram[203], '.',ram[204], ' st. C');
}

posli_email2
{ // odesilani poplacove informace o zapnuti ventilatoru
  email2 = 1; // pamatuj si ze si to poslal
  echotime();
  echo('Vetrak vypnut - email poslan');
  lcd_echo(1, 400, 0, 'Vetrak vypnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VENTILATOR VYPNUT"\n'ram[150], ram[151]':' ,ram[152], ram[153]':', ram[154], ram[155]' hod\nTeplota Stridace XTS = ' ram[201] ,'.', ram[202], ' st. C\nTeplota MPPT VT-80 = ' ram[205], '.',ram[206], ' st. C\nTeplota ROZVADEC = ' ram[203], '.',ram[204], ' st. C');
}

posli_email3
{ // odesilani poplacove informace o zapnuti ventilatoru
  email3 = 1; // pamatuj si ze si to poslal
  echotime();
  echo('Vystup stridace zapnut - email poslan');
  lcd_echo(1, 400, 0, 'Vystup stridace zapnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VYSTUP STŘÍDAČE ZAPNUT"\n');
}

posli_email4
{ // odesilani poplacove informace o zapnuti ventilatoru
  email4 = 1; // pamatuj si ze si to poslal
  echotime();
  echo('Vystup stridace vypnut - email poslan');
  lcd_echo(1, 400, 0, 'Vystup stridace vypnut');
  wait(1000);
  lcd_echo(1, 400, 0, '                 ');
  smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VYSTUP STŘÍDAČE VYPNUT"\n');
}
//---------------------------------------------  procedura termostatu  ---------------------------------------------------
termostat
{
// if (_termostattime>=sys[4]) return;

teplotaStuder = (sys[310] / 100);
teplotaRozvadec = (sys[311] / 100);
teplotaTristar = (sys[312] / 100);

// kdyz teplota kterehokoli prvku presahne stanovene meze, tak zapni ventilator
 if (teplotaStuder > sys[147] || teplotaRozvadec > sys[147] || teplotaTristar > sys[147]) {
  sys[232] = 255;
  if (email1 == 0) posli_email1();
  email2 = 0;
 }
// kdyz vsechny prvky budou mit stanovenou teplotu "MINTEPLOTA", tak vypni ventilator
 if (teplotaStuder < sys[146] && teplotaRozvadec < sys[146] && teplotaTristar < sys[146]) {
  sys[232] = 0;
  if (email2 == 0) posli_email2();
  email1 = 0;
  }
}
//-------  procedura pro ovladani rele Re3 (vystup ze studeru) -----------------------------------------------
ovlrele
{
ram[144] = STOZAP*100;
ram[145] = STOVYP*100;
// kdyz napeti presahne napeti 27,7V (27700) zapne Re3 (vystup ze studeru)
 if (ram[135] > ram[144]) {
  sys[233] = 255;
  if (email3 == 0) posli_email3();
  email4 = 0;
 }
// kdyz napeti presahne napeti 26,0V (26000) vypne Re3 (vystup ze studeru)
 if (ram[135] < ram[145]) {
  sys[233] = 0;
  if (email4 == 0) posli_email4();
  email3 = 0;
  }
}
//------------------------  procedury pro cteni stavu rele astavu D0  ------------------------------------------
ctirele
 {
 if (sys[231] == 255) { relst1 = 1; } else { relst1 = 0; }
 if (sys[232] == 255) { relst2 = 1; } else { relst2 = 0; }
 if (sys[233] == 255) { relst3 = 1; } else { relst3 = 0; }
 if (sys[234] == 255) { relst4 = 1; } else { relst4 = 0; }
 if (sys[301] == 255) { D0 = 1; } else { D0 = 0; }
 if (automat == 1) { _a = 1; } else { _a = 0; }
 }
//------------------------  procedury pro zobrazování na displeji  ------------------------------------------
ShowScreen1  // uvodni obrazovka
{
// lcd_clear(0);
 lcd_echo(22, 100, 1, '1');// cislo obrazovky
 lcd_echo(0, 100, 0, '  Poloostrovni FVE   ');
 lcd_echo(0, 200, 0, '   Mlada Boleslav     ');
 lcd_echo(0, 300, 0, '    V.04-23 2015      ');
 lcd_echo(0, 400, 0, '  SDS MACRO + QUIDO   ');
}


ShowScreen2 // hodnoty FVE
{
// lcd_clear(0);
  ram[226] = ram[182] / 10000;
  ram[227] = ram[183] / 10000;

 lcd_echo(22, 100, 1, '2');// cislo obrazovky
 ram[150] = sys[8] / 10;
 ram[151] = sys[8] % 10;
 ram[152] = sys[9] / 10;
 ram[153] = sys[9] % 10;
 ram[154] = sys[10] / 10;
 ram[155] = sys[10] % 10;
 lcd_echo(12, 100, 0, ram[150], ram[151]':', ram[152], ram[153]':', ram[154], ram[155]);
 
 ram[156] = sys[5] / 10;
 ram[157] = sys[5] % 10;
 ram[158] = sys[6] / 10;
 ram[159] = sys[6] % 10;
 ram[160] = sys[7] / 10;
 ram[161] = sys[7] % 10;
 lcd_echo(1, 100, 0, ram[156], ram[157], '.', ram[158], ram[159], '.', ram[160], ram[161], ' ');
 
 lcd_echo(1, 2, 0, 'B ', b1_volt_a, '.', b1_volt_b, 'V', ' ', b4_amp_a, '.', b4_amp_b, 'A ', batwat,'W');
//  lcd_echo(1,200,0,text[0];
 lcd_echo(1, 3, 0, 'MPPT ', b3_amp_a, '.', b3_amp_b, 'A ', panelbat,'W');
// lcd_echo(1, 4, 0, 'V ', VDCd, 'Wh ', 'S ' ,SDCd, 'Wh');
 lcd_echo(1, 4, 0, 'V ', ram[226], 'Wh ', 'S ' ,ram[227], 'Wh');
}

ShowScreen3 // rele
{
 lcd_echo(22, 100, 1, '3');// cislo obrazovky
 lcd_echo(1, 100, 0, 'RELE QUIDO       SDS');
 lcd_echo(1, 200, 0, '1234567890123456 12345');
 lcd_echo(1, 300, 0, ram[111], ram[112], ram[113], ram[114], ram[115], ram[116], ram[117], ram[118], ram[119], ram[120], ram[121], ram[122], ram[123], ram[124], ram[125], ram[126]);
 lcd_echo(18, 300, 0, relst1, relst2, relst3, relst4, sys[301];
 lcd_echo(1, 400, 0, _a, '                    ');
}

PageRele
{
// RELE na SDS-ku
 if (pagerele == 1) { _r = 1; lcd_echo(18, 400, 0, 'r=', _r); } // 1.rele SDS
 if (pagerele == 2) { _r = 2; lcd_echo(18, 400, 0, 'r=', _r); } // 2.rele SDS
 if (pagerele == 3) { _r = 3; lcd_echo(18, 400, 0, 'r=', _r); } // 3.rele SDS
 if (pagerele == 4) { _r = 4; lcd_echo(18, 400, 0, 'r=', _r); } // 4.rele SDS
// RELE na vstupu D0
 if (pagerele ==5) { _r = 5; lcd_echo(18, 400, 0, 'r=', _r); } // rele na S0
// RELE v sade QUIDO
 if (pagerele == 6) { _q = 1; lcd_echo(18, 400, 0, 'q=', _q); } // 1.rele QUIDO
 if (pagerele == 7) { _q = 2; lcd_echo(18, 400, 0, 'q=', _q); } // 2.rele QUIDO
 if (pagerele == 8) { _q = 3; lcd_echo(18, 400, 0, 'q=', _q); } // 3.rele QUIDO
 if (pagerele == 9) { _q = 4; lcd_echo(18, 400, 0, 'q=', _q); } // 4.rele QUIDO
 if (pagerele == 10) { _q = 5; lcd_echo(18, 400, 0, 'q=', _q); } // 5.rele QUIDO
 if (pagerele == 11) { _q = 6; lcd_echo(18, 400, 0, 'q=', _q); } // 6.rele QUIDO
 if (pagerele == 12) { _q = 7; lcd_echo(18, 400, 0, 'q=', _q); } // 7.rele QUIDO
 if (pagerele == 13) { _q = 8; lcd_echo(18, 400, 0, 'q=', _q); } // 8.rele QUIDO
 if (pagerele == 14) { _q = 9; lcd_echo(18, 400, 0, 'q=', _q); } // 9.rele QUIDO
 if (pagerele == 15) { _q = 10; lcd_echo(18, 400, 0, 'q=', _q); } // 10.rele QUIDO
 if (pagerele == 16) { _q = 11; lcd_echo(18, 400, 0, 'q=', _q); } // 11.rele QUIDO
 if (pagerele == 17) { _q = 12; lcd_echo(18, 400, 0, 'q=', _q); } // 12.rele QUIDO
 if (pagerele == 18) { _q = 13; lcd_echo(18, 400, 0, 'q=', _q); } // 13.rele QUIDO
 if (pagerele == 19) { _q = 14; lcd_echo(18, 400, 0, 'q=', _q); } // 14.rele QUIDO
 if (pagerele == 20) { _q = 15; lcd_echo(18, 400, 0, 'q=', _q); } // 15.rele QUIDO
 if (pagerele == 21) { _q = 16; lcd_echo(18, 400, 0, 'q=', _q); } // 16.rele QUIDO
 
 if (pagerele == 22) { automat = 1; lcd_echo(18, 400, 0, 'a=', _a); } //
}

ShowScreen4  // Teploty
{
 lcd_echo(22, 100, 1, '4'); // cislo obrazovky
// 1.teplomer (stridac STUDER XTS)
 ram[201] = sys[310] / 100;
 ram[202] = sys[310] % 100;

// 2.teplomer (ROZVADEC)
 ram[203] = sys[311] / 100;
 ram[204] = sys[311] % 100;

// 3.teplomer (regulator MPPT VT-80)
 ram[205] = sys[312] / 100;
 ram[206] = sys[312] % 100;

// 5.teplomer (BATERIE)
 ram[207] = sys[314] / 100;
 ram[208] = sys[314] % 100;

// 6.teplomer (VENKOVNI)
 ram[209] = sys[315] / 100;           // pred desetinou tecko
 ram[210] = sys[315] % 100;           // za desetinou tecko
 
if (ram[210] >= 0) goto celsius1;    // osetreni zaporneho cisla desetinne tecky
 ram[210] = 0 - ram[210];             // rucni doplneni cisla 0 pokud hodnota je 0-9
  label celsius1:

// 7.teplomer (FV Panel)
 ram[211] = sys[316] / 100;
 ram[212] = sys[316] % 100;

 if (ram[212] >= 0) goto celsius2;    // osetreni zaporneho cisla desetinne tecky
 ram[212] = 0 - ram[212];             // rucni doplneni cisla 0 pokud hodnota je 0-9
  label celsius2:

// vypocet teploty procesoru
// ram[213] = 879 * sys[46]; //1426910
// ram[214] = 590000 - ram[213]; //16192700
// ram[215] = 5 * ram[214]; //80963500
// ram[216] = ram[215] / 2; //40481750
// ram[217] = ram[216] / 10000;
// ram[218] = ram[215] / 200;
// ram[219] = ram[218] % 100;

 lcd_echo(0, 100, 0, 'TEPLOTY ', email1, '  ');
 lcd_echo(12, 100, 0, 'SDS ', ram[217], '.', ram[219], 'C', '  ');
 lcd_echo(0, 2, 0, 'XTS ', ram[201], '.', ram[202], 'C VT  ', ram[205], '.', ram[206], 'C     ');
 lcd_echo(0, 3, 0, 'BAT ', ram[207], '.', ram[208], 'C ROZ ', ram[203], '.', ram[204], 'C     ');
 lcd_echo(0, 4, 0, 'OUT ', ram[209], '.', ram[210], 'C FVP ', ram[211], '.', ram[212], 'C     ');
}

ShowScreen5  // Cteni hodnot z elektromeru
{
//lcd_clear(0);

lcd_echo(22, 100, 1, '5'); // cislo obrazovky
lcd_echo(0, 100, 0, 'ELEKTROMERY          ');

ram[220] = 360000000 / (sys[592] * (sys[559]/10));
ram[221] = sys[493] / 1000;
lcd_echo(0, 2, 0, 'DS P=', ram[220], 'W E=', ram[221], 'kWh       ');

ram[222] = 360000000 / (sys[593] * (sys[560]/10));
ram[223] = sys[494] / 1000;
lcd_echo(0, 400, 0, '?? P=', ram[222], 'W E=', ram[223], 'kWh       ');

ram[224] = 360000000 / (sys[594] * (sys[561]/10));
ram[225] = sys[495] / 1000;
lcd_echo(0, 300, 0, 'FV P=', ram[224], 'W E=', ram[225], 'kWh       ');
}

LCD2
{
if (_disp == 0) {

lcd_echo(1, 100, 0, 'NEMAS ZAPNUTY DISPLEJ');
echo('NEMAS ZAPNUTY DISPLEJ');
} else {
// rolovani menu obrazovky
//if((ODPOCITAVAC_SEKUND == 0 || sys[151] == 0) && automat == 1) {
if(sys[151] == 0) {
  page++;
  if (page > MAXPAGE){
    page = 1;
    }
  }
// ZAP/VYP rele na SDS-ku+D0
if (pagerele > 0 && pagerele < 6) {
if(sys[152] == 0) {
 sys[143] = _r;
  }
 }

if (pagerele > 6 && pagerele < 22) {
if(sys[152] == 0) {
 sys[141] = _q;
  }
 }
 
if (pagerele == 23) {
if(sys[152] == 0) {
 _a = 0;
  }
 }

// rolovani cisel rele
if (sys[153] == 0) {
  pagerele++;
  if (pagerele > MAXPAGERELE){
    pagerele = 1;
   }
  }

  
if (sys[154] == 0) {
  pagerele--;
  if (pagerele < 1){
    pagerele = MAXPAGERELE; // MAXPAGERELE = 21 16 rele quido + 4 rele SDS + D0
   }
  }
 }
}

RefreshLCD
{
  if (page == 1) { ShowScreen1();}
  if (page == 2) { ShowScreen2();}
  if (page == 3) { ShowScreen3(); PageRele(); }
  if (page == 4) { ShowScreen4();}
  if (page == 5) { ShowScreen5();}
  
 LCD2();
 nastavrele();
 ctirele();
}
//------------------------  procedury pro zobrazování stavu elektromeru do konzole  ---------------------------------------
writeconsole
{
 if (_consoletime>=sys[4]) return;
ram[190] = 360000000 / (sys[592]* (sys[560]/10));
ram[191] = sys[493] / 1000;
 echotime();
 echo('OPTO 1 Verejna sit: ' 'imp.time=', sys[592], 'msec, konstanta (imp./kWh)=', sys[559], ', akt.vykon=', ram[190], 'W, energie=' ram[191], 'kWh');
ram[192] = 360000000 / (sys[593] * (sys[561]/10));
ram[193] = sys[494] / 1000;
 echo('OPTO 2 Zaloha:      ' 'imp.time=', sys[593], 'msec, konstanta (imp./kWh)=', sys[560], ', akt.vykon=', ram[192], 'W, energie=' ram[193], 'kWh');
ram[194] = 360000000 / (sys[594] * (sys[562]/10));
ram[195] = sys[495] / 1000;
 echo('OPTO 3 FVE:         ' 'imp.time=', sys[594], 'msec, konstanta (imp./kWh)=', sys[561], ', akt.vykon=', ram[194], 'W, energie=' ram[195], 'kWh');
 _consoletime=sys[4] + 3600;  //dalsi kontrola za x vterin
}

raspberry  // popdprogram na odesilani dat do raspberry
{
if (_raspberrytime>=sys[4]) return;

 sys[77]=2; //nastaveni modu http_get
 http_get(192,168,1,4,'192.168.1.4','/sdsmacro.php?&t1=',sys[310],'&t2=',sys[311],'&t3=',sys[312],'&t4=',sys[313],'&t5=',sys[314],'&t6=',sys[315],'&t7=',sys[316],'&t8=',sys[317],'&t9=',sys[318],'&t10=',sys[319],'&t11=',sys[320],'&t12=',sys[321],'&t13=',sys[322],'&t14=',sys[323],'&t15=',sys[324],'&t16=',sys[325],
 '&tov1=',sys[493],'&tov2=',sys[494],'&tov3=',sys[495],'&kon1=',sys[559],'&kon2=',sys[560],'&kon3=',sys[561],'&av1=', sys[592],'&av2=', sys[593],'&av3=', sys[594],'&tsds=',sys[46]);
// echotime();
// echo('Teploty odeslany na raspberry, OK.');

_raspberrytime = sys[4] + 60;  //dalsi kontrola za x vterin
}

//*********  kazdou minutu zobrazeni aktualnich vykonu do konzole *************
minuta
{
if (_consoletime4>=sys[4]) return;

   VDCm1 += ram[140];        // Soucet DC energie panelu za minutu
   SDCm1 += ram[139];        // Soucet energie baterie +/- za minutu
   ram[60] = VDCm1;
   ram[61] = SDCm1;

_consoletime4 = sys[4] + 10;  //dalsi kontrola za x vterin

   VDCmin = VDCm1 / 45;    // Energie panel za 60 s

   if (SDCm1 < 0) {
     SDCmin = SDCm1 / 45;  // 7 puvodne, Energie baterie za 60 s
   } else {
     SDCmin = 0;
       }
if (_consoletime2>=sys[4]) return;

// if (sys[10] == 30 || sys[10] == 34){
   VDC24h += VDCmin / 60;          // Soucet DC energie panelu
   SDC24h += SDCmin / 60;          // 36 puvodne, Soucet energie baterie +/-
   ram[62] = VDC24h;
   ram[63] = SDC24h;
   VDCd = VDC24h / 10;
   SDCd = SDC24h / 10;

   _consoletime2=sys[4] + 60;  //dalsi kontrola za x vterin
   VDCm1 = 0;             // nuluj kazdou minutu
   SDCm1 = 0;
   NBATm1 = 0;
//   }
}

mam_24_hod           //nulovani pocitadel kdyz je dany cas
{
  if ( sys[8] == 0 && (sys[9] == 0 || sys[9] == 2)) {        // kazdy den o pulnoci
  sys[140] = sys[493] ;  // stav v pulnoci SPOTREBA 220 CEZ
  echo('zapis den SPOTREBA 220V') ;

  sys[142] = sys[495] ;  // stav v pulnoci VYROBA 220 STRIDAC
  echo('zapis den VYROBA 220V stridac') ;

  sys[144] = VDC24h ;  // stav v pulnoci VYROBA DC za MPPT
  echo('zapis den VYROBA DC za MPPT') ;

  sys[145] = SDC24h ;  // stav v pulnoci SPOTREBA DC BATERIE
  echo('zapis den SPOTREBA DC z BATERIE') ;

//  sys[147] = NBAT24h ;  // stav v pulnoci SPOTREBA dohledu FVE
//  echo('zapis den SPOTREBA DC dohledu FVE') ;

  VDCd = 0;
  SDCd = 0;
  }

  if ( sys[5] == 1 && sys[8] == 0  && (sys[9] == 0 || sys[9] == 2) ) { // kazdého 1 v mesici
  sys[100] = sys[493] ;  // 1 v mesici stav v pulnoci SPOTREBA 220 CEZ
  echo('zapis mesic SPOTREBA 220V') ;

  sys[101] = sys[495] ;  // 1 v mesici stav v pulnoci VYROBA 220 STRIDAC
  echo('zapis mesic VYROBA 220V stridac') ;

  sys[102] = VDC24h ;  // 1 v mesici stav v pulnoci VYROBA DC za MPPT
  echo('zapis mesic VYROBA DC za MPPT') ;

  sys[103] = SDC24h ;  // 1 v mesici stav v pulnoci SPOTREBA DC BATERIE
  echo('zapis mesic SPOTREBA DC z BATERIE') ;

  sys[104] = NBAT24h ;  // 1 v mesici stav v pulnoci SPOTREBA dohledu FVE
  echo('zapis mesic SPOTREBA DC dohledu FVE') ;
  }

  if (   sys[5] == 1 &&  sys[6] == 1 &&  sys[8] == 0  && (sys[9] == 0 || sys[9] == 2)  )  // kazdeho 1 v roce S I L V E S T R A
  {
  sys[105] = sys[493] ;  // 1.1 v roce stav v pulnoci SPOTREBA 220 CEZ
  echo('zapis rok SPOTREBA 220V') ;

  sys[106] = sys[495] ;  // 1.1 v roku stav v pulnoci VYROBA 220 STRIDAC
  echo('zapis rok VYROBA 220V stridac') ;

  sys[107] = VDC24h ;  // 1.1 v roce stav v pulnoci VYROBA DC za MPPT
  echo('zapis rok VYROBA DC za MPPT') ;

  sys[108] = SDC24h ;  // 1.1 v roce stav v pulnoci SPOTREBA DC BATERIE
  echo('zapis rok SPOTREBA DC z BATERIE') ;

  sys[109] = NBAT24h ;  // 1.1 v roce stav v pulnoci SPOTREBA dohledu FVE
  echo('zapis rok SPOTREBA DC dohledu FVE') ;
  }
  _beh_min24 = sys[9]; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde
}
//------------------------------------  startovaci procedury  ------------------------------------------------------
init
{
 sys[146] = 45; // vychozi teplota vypnuti vetraku
 sys[147] = 50; // vychozi teplota zapnuti vetraku

 echotime();
 echo('Start programu');
 if (_disp == 1) {
  lcd_clear(0);
  lcd_echo(1, 400, 1, 'vitej v SDS');
 }
// sys[77]=0;  //http_get odpovet nechci do ram[]
// sys[78]=0;  //http_get odpovet nechci do ram[]
 _portal_timeout = 1;     //odeslat data ihned

 // *******  uzivatelsky nastavitelne promenne  ***********
 _disp=1;     //display na sds macro (0-vypnuty, 1-zapnuty)
 sys[140] = sys[493];
 sys[142] = sys[495];

 // -------  vase promenne sem  -------

   serial_set(9600, 8, 1, 0);

ShowScreen2();
 }
 
//------------------------------------  H L A V N I    P R O G R A M  -----------------------------------------------
main
{
  //statistiky
  _beh_min = -1; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde po zacatku programu
  _beh_min24 = -1; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde po zacatku programu

 //odeslani dat na portal v nastaveny interval
 if (_portal_timeout > 0 && _portal_timeout < sys[3])  {
 portal_nastav();
 }
// if (_portal_timeout > 0) {
// php();
// }
 if (_portal_dns == 0) portal_dns();
 if (_portal_dns != 0 && _portal_data > 0) odesli_data_na_portal();
 
  // -------  volani vlastnich procedur sem  -------
 rs232();
 nastav232();
 akustav();
 writeconsole();
 minuta();
 termostat();
 ovlrele();
 raspberry;

 ODPOCITAVAC_SEKUND = 2;

 cekej_dale:
 nacti_hodnoty();
 RefreshLCD();

//  label cekej:

 if (sys[8] == 0 && (sys[9] == 0 || sys[9] == 2) && sys[10] == 0 && sys[9] != _beh_min24 ) mam_24_hod();  //každy den v 00 a 02 hod NES + zajisteni neopakovani funkce v teze sekunde po zacatku programu
          // (jen pro jistotu jeste navic v 02, ponevadz se to obcas neprovedlo)

 if (sys[10] == 40 && sys[9] != _beh_min )  //každou minutu ve čtyřicáté sekundě NES + zajisteni neopakovani funkce v teze sekunde po zacatku programu

 {
 ram[180] = 1000 * (sys[493] - sys[140] ) / sys[559]; // do ram[180] se zapise 24 hod SPOTREBA 220V od CEZ
 ram[181] = 1000 * (sys[495] - sys[142] ) / sys[561]; // do ram[181] se zapise 24 hod VYROBA 220V STRIDAC
 ram[182] = 1000 * (VDC24h - sys[144] );              // do ram[182] se zapise 24 hod VYROBA DC za MPPT
 ram[183] = 1000 * ((SDC24h - sys[145]) * (-1));      // do ram[183] se zapise 24 hod SPOTREBA DC BATERIE
// ram[184] = 1000 * (NBAT24h - sys[147] );           // do ram[184] se zapise 24 hod SPOTREBA dohledu FVE

 ram[185] = 1000 * (sys[493] - sys[100] ) / sys[559]; // do ram[185] se zapise mesicni SPOTREBA 220V od CEZ
 ram[186] = 1000 * (sys[495] - sys[101] ) / sys[561]; // do ram[186] se zapise mesicni VYROBA 220V STRIDAC
 ram[187] = 1000 * (VDC24h - sys[102] );              // do ram[187] se zapise mesicni VYROBA DC za MPPT
 ram[188] = 1000 * ((SDC24h - sys[103]) * (-1));      // do ram[188] se zapise mesicni SPOTREBA DC BATERIE
 ram[189] = 1000 * (NBAT24h - sys[104] );             // do ram[189] se zapise mesicni SPOTREBA dohledu FVE

 ram[190] = 1000 * (sys[493] - sys[105] ) / sys[559]; // do ram[190] se zapise rocni SPOTREBA 220V od CEZ
 ram[191] = 1000 * (sys[495] - sys[106] ) / sys[561]; // do ram[191] se zapise rocni VYROBA 220V STRIDAC
 ram[192] = 1000 * (VDC24h - sys[107] );              // do ram[192] se zapise rocni VYROBA DC za MPPT
 ram[193] = 1000 * ((SDC24h - sys[108]) * (-1));      // do ram[193] se zapise rocni SPOTREBA DC BATERIE
 ram[194] = 1000 * (NBAT24h - sys[109] );             // do ram[194] se zapise rocni SPOTREBA dohledu FVE

 _beh_min = sys[9];  // zajisteni neopakovani funkce v teze sekunde po zacatku programu - dalsi krok
 _beh_min24 = sys[9]; // zajisteni neopakovani funkce v teze sekunde po zacatku programu - dalsi krok
}

 if (ODPOCITAVAC_SEKUND > 0) goto cekej_dale;
 
 //konec - main bude spusteno automaticky znovu
}
a tohle je program uživatelské stránky SDS

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>  
<TITLE>SDS-MACRO RS485 control panel</TITLE>
<TITLE>Verze 4.1 ze dne 13.4.2013 19:00 hod</TITLE>

<META content="text/html; charset=windows-1250" http-equiv=Content-Type>  
<META content="jaromir.lastovicka" name=author>
<META content="sds-macro, sds-micro, sds, macro, micro, onlinetechnology, csphone" name=keywords>
<META content="sds-macro, sds-micro, sds, macro, micro, onlinetechnology, csphone" name=description>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">  
<META HTTP-EQUIV="EXPIRES" CONTENT="0">

  <STYLE title=currentStyle type=text/css media=screen>   
body {
    font-family:verdana, arial, sans-serif; font-size:12px;
    word-wrap:break-word; background:#000; padding:20px;
   }
   a {text-decoration:none;color:#FEFEA3;}
   a:hover {text-decoration:none;color:#FEFEA3;}

   #toppanel {}
   #webcam {background:#222; width:640px; height:480px;}
   #control {float:right; width:450px;}
   #outputs {background:#aaa; float:right; width:450px;}
   #bottpanel {background:#000000; width:640px; margin:10px 0px 0px 0px;}
   #tempa {width:360px; float:left; margin:0px 0px 0px 0px;}
   #tempb {width:310px; float:right; margin:0px 0px 0px 10px;}
  
   #header {color:#aaa}
   #footer {clear:both; padding-top:30px;}
   #footer p {color:#3366CC;}
   #footer a {color:#FEFEA3;}
   #footer a:hover {text-decoration:none;}

   h1 {font-size:18px; margin:0; padding-bottom:10px; color:#ddd;}
   h2 {font-size:15px; margin:0; padding-bottom:5px; color:#3366CC;}

   fieldset.rs232 {
    border:1px solid #777;
    margin: 0px 0px 2px 0px;
    padding: 0px 0px 10px 10px;
    color:#fff;
    text-align:right;
   }

   fieldset {
    border:1px solid #777;
    margin: 0px 0px 10px 0px;
    padding: 0px 0px 10px 10px;
    color:#fff;
    text-align:left;
   }

   legend {
    margin-left: 0px;
    padding: 0.2em 0.5em;
    border:1px solid #777;
    color:#0cc;
    font-size:14px;
    font-weight:bold;
   }

   .tlacitko{
    margin: 10px 10px 0px 0px;
    padding: 5px;
    color:#FEFEA3;
    text-align:left;
    width:60px;
    height:15px;
    display:block;
    border:1px solid #777;
    float:left;
    text-align:center;
   }

   .cislo0, .cislo1{
    margin: 10px 0px 0px 0px;
    padding: 5px 0px 5px 0px;
    color:#0cc;
    text-align:center;
    width:25px;
    height:15px;
    border-width: 1px 0px 1px 1px;
    border-style: solid;
    border-color: #777;
    float:left;
    background:#FF3300;
   }
   .cislo0{
    color:#777;
    background:#000;
   }
   .cislo1{
    color:#000;
    background:#33FF33;
   }

   .cislo10, .cislo11{
    width:200px;
    color:#000;
    line-height:20x;
    margin: 0px 0px 0px 0px;
    background:#000;
   }
   .cislo10{
    color:#FF0000;
    background:#000;
   }
   .cislo11{
    color:#33CC00;
    background:#000;
   }

   .col1, .col5 {
    color:#ccc;
    line-height:20px;
    margin: 3px 0px 0px 0px;
    }
    .col1{
    color:#ccc;
    background:#000;
    }
   .col5{
    width:200px;
    color:#000;
    text-align:center;
    line-height:20x;
    margin: 0px 0px 0px 150px;
    background:#33FF33;
   }
   .col2 {
    width:250px;
    color:#ccc;
    line-height:20x;
    float:right;
   }
   .col23 {
    width:145px;
    color:#ccc;
    line-height:20px;
    float:right;
   }
   .col3 {
    width:50px;
    color:#FEFEA3;
    line-height:20px;
    float:right;
   }

   .col1t {
    color:#ccc;
    line-height:20px;
    margin: 3px 0px 0px 0px;
   }
   .col2t {
    width:120px;
    color:#ccc;
    line-height:20px;
    float:right;
   }

   input{
    height:17px;
   }

   .pwm {
    width:30px;
   }

  </STYLE>  
  
  <!--[if lte IE 7]>   
  <style type="text/css">    
  body {word-wrap:break-word;}
    #outer2 {float:left; display:inline; margin-left:10px; margin-right:10px;}
    #wrapper {display:inline-block;}
   </style>  
   <![endif]-->
     
   <!-- 
   sys141 - ovládání RS232
   rb1, rb2, rb3, rb4, db0 - ovládací tlačítka na rele a D0
   rs1, rs2, rs3, rs4, ds0 - label pro zobrazeni stavu rele a D0
   sys146 - kmitičet PWM
   d0 - ovládání PWM
   a1, c1, a2, c2, a3, c3, a4, c4 - aktuální, celková spotřeba kwh
   o1, o2, o3 - cena za energii
   ad1, ad2, ad3, ad4 - napěťové vstupy
   cas - aktuální čas
   ip - adresa watchdog (EGON)
   temp1...temp32 - čidla teploty
   t1 .... t16 - čidla teploty z druhého SDS
  -->  

  <script type="text/javascript">
   var tt;
   var pom;
   var req232=false;    //rs232
   var reqRele=false;   //rele
   var reqS0=false;     //vykony
   var reqAD=false;     //AD a cas
   var reqTemp=false;   //D0 a teploty
   var reqProud=false;  //Uzivatelske promenne sys[140]- sys[147]
   var reqRam=false;    //Hodnoty ram[137] - ram[141]
   var reqDENMESROK=false; //statistiky
   var firstTime=true;  //jen poprve nastavit
   var dc;              //dc hodnoty
   

   //Ovladani rele QUIDO tlacitky pres RS 232 rele 1 - rele 3 (RESTART)
  function req232aComplete(){
    if(req232a.readyState == 4){
     if(req232a.status == 200){
      var rE=req232a.responseText.split("|");
      if (rE.length==3) {
       for (i=0;i<3;i++) {
        if (rE[i]==0) {
         document.getElementById("cis"+(i+1)).className="cislo0";
         document.getElementById("btn"+(i+1)).innerHTML="RESTART";
        } else {
         document.getElementById("cis"+(i+1)).className="cislo1";
         document.getElementById("btn"+(i+1)).innerHTML="DELAM";
        }
       }
      }
     }
    }
   }

    //Ovladani rele QUIDO tlacitky pres RS 232 rele 4 - rele 16 (ZAP/VYP) 
   function req232bComplete(){
    if(req232b.readyState == 4){
     if(req232b.status == 200){
      var rE=req232b.responseText.split("|");
      if (rE.length==16) {
       for (i=3;i<16;i++) {
        if (rE[i]==0) {
         document.getElementById("cis"+(i+1)).className="cislo0";
         document.getElementById("btn"+(i+1)).innerHTML="ZAPNI";
        } else {
         document.getElementById("cis"+(i+1)).className="cislo1";
         document.getElementById("btn"+(i+1)).innerHTML="VYPNI";
        }
       }
      }
     }
    }
   }
   
    //Změna barvy tlacitka Nabijeni Baterie v závislosti na hodnote ram[131]
   function reqIbComplete(){
    if(reqIb.readyState == 4){
     if(reqIb.status == 200){
      var rE=reqIb.responseText.split("|");
       if (rE[0]==0) {
         document.getElementById("Icis").className="cislo10";
         document.getElementById("Ibtn").innerHTML="NABIJIM";
        } else {
         document.getElementById("Icis").className="cislo11";
         document.getElementById("Ibtn").innerHTML="VYBIJIM";
        }
       }
      }
     }
       
    //Hodnoty ram[139] - ram[146]
   function reqRamComplete(){
    if(reqRam.readyState == 4){
     if(reqRam.status == 200){
     var rE=reqRam.responseText.split("|");
     document.getElementById("ram139").innerHTML=rE[0]/100+" W";
     document.getElementById("ram140").innerHTML=rE[1]/100+" W";
     document.getElementById("ram141").innerHTML=rE[2]+" %";
     document.getElementById("ram142").innerHTML=rE[3]/1000+" A";
     document.getElementById("ram143").innerHTML=rE[4]/1000+" A";
     document.getElementById("ram144").innerHTML=rE[5]/1000+" V";
     document.getElementById("ram145").innerHTML=rE[6]/1000+" V";
     document.getElementById("ram146").innerHTML=rE[7]/100+" °C";
     }
    }
   }

  //rele
   function reqReleComplete(){
    if(reqRele.readyState == 4){
     if(reqRele.status == 200){
      var rE=reqRele.responseText.split("|");
      for (i=1;i<=4;i++) {
       if (rE[i-1]==0) {
        document.getElementById("rs"+i).className="cislo0";
        document.getElementById("rb"+i).innerHTML="ZAPNI";
       } else {
        document.getElementById("rs"+i).className="cislo1";
        document.getElementById("rb"+i).innerHTML="VYPNI";
       }
      }
     }
    }
   }


   //ventilator
   function reqVENComplete(){
    if(reqVEN.readyState == 4){
     if(reqVEN.status == 200){
      var rE=reqVEN.responseText.split("|");
      document.getElementById("sys146").value=rE[0];
      document.getElementById("sys147").value=rE[1];
     }
    }
   }

   //vykony
   function reqS0Complete(){
    if(reqS0.readyState == 4){
     if(reqS0.status == 200){
      var rE=reqS0.responseText.split("|");
       document.getElementById("p1a").innerHTML=rE[5];
       document.getElementById("p1c").innerHTML=rE[5];
       document.getElementById("p1d").innerHTML=rE[5];
       document.getElementById("a1").innerHTML=rE[8];
       document.getElementById("c1").innerHTML=rE[6];
       document.getElementById("o1").innerHTML=rE[9];
       document.getElementById("p2a").innerHTML=rE[12];
       document.getElementById("p2c").innerHTML=rE[12];
       document.getElementById("p2d").innerHTML=rE[12];
       document.getElementById("a2").innerHTML=rE[15];
       document.getElementById("c2").innerHTML=rE[13];
       document.getElementById("o2").innerHTML=rE[16];
       document.getElementById("p3a").innerHTML=rE[19];
       document.getElementById("p3c").innerHTML=rE[19];
       document.getElementById("p3d").innerHTML=rE[19];
       document.getElementById("a3").innerHTML=rE[22];
       document.getElementById("c3").innerHTML=rE[20];
       document.getElementById("o3").innerHTML=rE[23];
       document.getElementById("p4a").innerHTML=rE[26];
       document.getElementById("p4c").innerHTML=rE[26];
       document.getElementById("a4").innerHTML=rE[29];
       document.getElementById("c4").innerHTML=rE[27];
       }
     }
    }
   
   //AD + cas + IP
   function reqADComplete(){
    if(reqAD.readyState == 4){
     if(reqAD.status == 200){
      var rE=reqAD.responseText.split("|");
      document.getElementById("ad1").innerHTML=rE[12];
      document.getElementById("ad2").innerHTML=rE[13];
      document.getElementById("ad3").innerHTML=rE[14];
      document.getElementById("ad4").innerHTML=rE[15];
      document.getElementById("cas").innerHTML=rE[17];
      document.getElementById("ip").innerHTML=rE[16];
      }
    }
   }

   //D0 + teploty
   function reqTempComplete(){
    if(reqTemp.readyState == 4){
     if(reqTemp.status == 200){
      if (reqTemp.responseText!='') {
       var rE=reqTemp.responseText.split("|");
       if (rE[0]==0) {
        document.getElementById('ds0').className="cislo0";
        document.getElementById('db0').innerHTML="ZAPNI";
       } else {
        document.getElementById('ds0').className="cislo1";
        document.getElementById('db0').innerHTML="VYPNI";
       }
       var cidlo='';
       for (i=1;i<=16;i++) {
        cidlo='temp'+i;
        pom=rE[i+8]/100;
        if (pom>200) {
         document.getElementById(cidlo).innerHTML="";
        } else {
         pom=pom.toFixed(2)
         document.getElementById(cidlo).innerHTML=pom+" °C";
        }
       }
      }
     }
    }
   }

   //Statistiky
   function reqDENMESROKComplete(){
    if(reqDENMESROK.readyState == 4){
     if(reqDENMESROK.status == 200){
      var rE=reqDENMESROK.responseText.split("|");
      document.getElementById("sp_den_cez").innerHTML=rE[0]/1000+" kWh";
      document.getElementById("vy_den_st").innerHTML=rE[1]/1000+" kWh";
      document.getElementById("vy_den_mppt").innerHTML=rE[2]/10000000+" kWh";
      document.getElementById("sp_den_bat").innerHTML=rE[3]/10000000+" kWh";
      document.getElementById("sp_den_do").innerHTML=rE[4]/1000000+" kWh";
      document.getElementById("sp_mes_cez").innerHTML=rE[5]/1000+" kWh";
      document.getElementById("vy_mes_st").innerHTML=rE[6]/1000+" kWh";
      document.getElementById("vy_mes_mppt").innerHTML=rE[7]/10000000+" kWh";
      document.getElementById("sp_mes_bat").innerHTML=rE[8]/10000000+" kWh";
      document.getElementById("sp_mes_do").innerHTML=rE[9]/1000000+" kWh";
      document.getElementById("sp_rok_cez").innerHTML=rE[10]/1000+" kWh";
      document.getElementById("vy_rok_st").innerHTML=rE[11]/1000+" kWh";
      document.getElementById("vy_rok_mppt").innerHTML=rE[12]/10000000+" kWh";
      document.getElementById("sp_rok_bat").innerHTML=rE[13]/10000000+" kWh";
      document.getElementById("sp_rok_do").innerHTML=rE[14]/1000000+" kWh";
     }
    }
   }
   

    //smycka pro nacitani hodnot - timeout 2000
   function sdsps(){
    req232a=false;
    req232b=false;
    reqIb=false;
    reqRele=false;
    reqS0=false;
    reqAD=false;
    reqTemp=false;
    reqRam=false;
    reqVEN=false;
    regDENMESROK=false;

    if(window.XMLHttpRequest){
     req232a=new XMLHttpRequest();
     req232b=new XMLHttpRequest();
     reqIb=new XMLHttpRequest();
     reqRele=new XMLHttpRequest();
     reqS0=new XMLHttpRequest();
     reqAD=new XMLHttpRequest();
     reqTemp=new XMLHttpRequest();
     reqRam=new XMLHttpRequest();
     reqVEN=new XMLHttpRequest();
     reqDENMESROK=new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
     req232a=new ActiveXObject("Microsoft.XMLHTTP");
     req232b=new ActiveXObject("Microsoft.XMLHTTP");
     reqIb=new ActiveXObject("Microsoft.XMLHTTP");
     reqRele=new ActiveXObject("Microsoft.XMLHTTP");
     reqS0=new ActiveXObject("Microsoft.XMLHTTP");
     reqAD=new ActiveXObject("Microsoft.XMLHTTP");
     reqTemp=new ActiveXObject("Microsoft.XMLHTTP");
     reqRam=new ActiveXObject("Microsoft.XMLHTTP");
     reqVEN=new ActiveXObject("Microsoft.XMLHTTP");
     reqDENMESROK=new ActiveXObject("Microsoft.XMLHTTP");
    }
    //rs232a - 3 pozic
    if (req232a){
     req232a.open("GET", "get_ram[111]?rn=3&rand="+Math.random(), true);
     req232a.onreadystatechange = req232aComplete;
     req232a.send(null);
    }
    //rs232b - 4 - 16 pozice
    if (req232b){
     req232b.open("GET", "get_ram[111]?rn=16&rand="+Math.random(), true);
     req232b.onreadystatechange = req232bComplete;
     req232b.send(null);
    }
    //Tlacitko mereni proudu
    if (reqRam){
     reqIb.open("GET", "get_ram[131]?rn=1&rand="+Math.random(), true);
     reqIb.onreadystatechange = reqIbComplete;
     reqIb.send(null);
    }
     //Hodnoty ram[139] - ram[146]
    if (reqRam){
     reqRam.open("GET", "get_ram[139]?rn=8&rand="+Math.random(), true);
     reqRam.onreadystatechange = reqRamComplete;
     reqRam.send(null);
    }    
    //rele
    if (reqRele){
     reqRele.open("GET", "get_sys[231]?rn=4&rand="+Math.random(), true);
     reqRele.onreadystatechange = reqReleComplete;
     reqRele.send(null);
    }
    //ventilator
    if (firstTime) {
     firstTime=false;
     if (reqVEN){
      reqVEN.open("GET", "get_sys[146]?rn=2&rand="+Math.random(), true);
      reqVEN.onreadystatechange = reqVENComplete;
      reqVEN.send(null);
    }
    }
    //vykony
    if (reqS0){
     reqS0.open("GET", "cgi_dyeA?rand="+Math.random(), true);
     reqS0.onreadystatechange = reqS0Complete;
     reqS0.send(null);
    }
    //AD
    if (reqAD){
     reqAD.open("GET", "cgi_dys?rand="+Math.random(), true);
     reqAD.onreadystatechange = reqADComplete;
     reqAD.send(null);
    }
    //D0 a teploty
    if (reqTemp){
     //301 je D0, 310 jsou teploty
     reqTemp.open("GET", "get_sys[301]?rn=26&rand="+Math.random(), true);
     reqTemp.onreadystatechange = reqTempComplete;
     reqTemp.send(null);
     }
    //Statistiky
    if (reqDENMESROK){
    reqDENMESROK.open("GET", "get_ram[180]?rn=15&rand="+Math.random(), true);
    reqDENMESROK.onreadystatechange = reqDENMESROKComplete;
    reqDENMESROK.send(null);
    }
    t=setTimeout("sdsps()",1000);
   }

   var sub=false;
   function getSub(){
    sub=false;
    if(window.XMLHttpRequest){
     sub=new XMLHttpRequest();
    }
    else if(window.ActiveXObject){
     sub=new ActiveXObject("Microsoft.XMLHTTP");
    }
   }

   function reqSetComplete(){
    if(sub.readyState==4){
     if(sub.status==200){;}
    }
   }
   
   function sdsc_S(sysn,val){
    if (!sub){getSub();};
    sub.open("GET", "sdscep?sys"+sysn+"="+val, true);
    sub.onreadystatechange=reqSetComplete;
    sub.send(null);
    firstTime=true;  //po vypnuti nacist data
   }

   function sdsc_S_ev(sysn){
    if (!sub){getSub();};
    aa=document.getElementById("sys"+sysn).value;
    sub.open("GET", "sdscep?sys"+sysn+"="+aa, true);
    sub.onreadystatechange=reqSetComplete;
    sub.send(null);
    firstTime=true;  //po vypnuti nacist data
   }
   
  </script>
 </head>
 
<body onLoad="sdsps();">
   
 <div id="toppanel">
  <div id="header">   
   <h1>Laštovičkova ostrovní fotovoltaická elektrárna s SDS-MACRO a panelem QUIDO ovládaným přes RS485</h1>
   </div>
  
  <div id="control">
   <fieldset class="rs232">    
   <legend>Ovládaní relé modulu QUIDO</legend>
    <span id="cis1" class="cislo0">upc</span><a id="btn1" class=tlacitko href="JavaScript:void(0);" title="Restart 12V Modem UPC" onclick="javascript:sdsc_S(141,'1');">RESTART</a>
    <span id="cis2" class="cislo0">rou</span><a id="btn2" class=tlacitko href="JavaScript:void(0);" title="Restart 12V Router ZyXEL" onclick="javascript:sdsc_S(141,'2');">RESTART</a>
    <span id="cis3" class="cislo0">sds</span><a id="btn3" class=tlacitko href="JavaScript:void(0);" title="<Restart 12V SDS>" onclick="javascript:sdsc_S(141,'3');">RESTART</a>
    <span id="cis4" class="cislo0">swi</span><a id="btn4" class=tlacitko href="JavaScript:void(0);" title="12V Switch" onclick="javascript:sdsc_S(141,'4');">ZAPNI</a>
      
    <span id="cis5" class="cislo0">rel</span><a id="btn5" class=tlacitko href="JavaScript:void(0);" title="12V IP Relé" onclick="javascript:sdsc_S(141,'5');">ZAPNI</a>
    <span id="cis6" class="cislo0">EEE</span><a id="btn6" class=tlacitko href="JavaScript:void(0);" title="<12V PC-EEE>" onclick="javascript:sdsc_S(141,'6');">ZAPNI</a>
    <span id="cis7" class="cislo0">B1</span><a id="btn7" class=tlacitko href="JavaScript:void(0);" title="<Hlavni Baterie>" onclick="javascript:sdsc_S(141,'7');">ZAPNI</a>
    <span id="cis8" class="cislo0">B2</span><a id="btn8" class=tlacitko href="JavaScript:void(0);" title="<Zalozni Baterie>" onclick="javascript:sdsc_S(141,'8');">ZAPNI</a>
      
    <span id="cis9" class="cislo0">TV</span><a id="btn9" class=tlacitko href="JavaScript:void(0);" title="<12V Televize>" onclick="javascript:sdsc_S(141,'9');">ZAPNI</a>
    <span id="cis10" class="cislo0">stri</span><a id="btn10" class=tlacitko href="JavaScript:void(0);" title="Zapni Střídač" onclick="javascript:sdsc_S(141,'10');">ZAPNI</a>
    <span id="cis11" class="cislo0">za2</span><a id="btn11" class=tlacitko href="JavaScript:void(0);" title="<220V Záloha 2>" onclick="javascript:sdsc_S(141,'11');">ZAPNI</a>
    <span id="cis12" class="cislo0">lam</span><a id="btn12" class=tlacitko href="JavaScript:void(0);" title="<220V Lampička>" onclick="javascript:sdsc_S(141,'12');">ZAPNI</a>
      
    <span id="cis13" class="cislo0">pc</span><a id="btn13" class=tlacitko href="JavaScript:void(0);" title="<220V PC>" onclick="javascript:sdsc_S(141,'13');">ZAPNI</a>
    <span id="cis14" class="cislo0">mo</span><a id="btn14" class=tlacitko href="JavaScript:void(0);" title="220V Monitor" onclick="javascript:sdsc_S(141,'14');">ZAPNI</a>
    <span id="cis15" class="cislo0">hdd</span><a id="btn15" class=tlacitko href="JavaScript:void(0);" title="220V Externí HDD" onclick="javascript:sdsc_S(141,'15');">ZAPNI</a>
    <span id="cis16" class="cislo0">zas</span><a id="btn16" class=tlacitko href="JavaScript:void(0);" title="220V Zásuvka" onclick="javascript:sdsc_S(141,'16');">ZAPNI</a>
   </fieldset>

   <fieldset>
   <legend>Ovládaní relé SDS a D0</legend>
    <span id="rs1" class="cislo0">WD</span><a id="rb1" class=tlacitko href="JavaScript:void(0);" title="WATCHDOG PCDUINO" onclick="javascript:sdsc_S(143,'1');">ZAPNI</a>
    <span id="rs2" class="cislo0">Ven</span><a id="rb2" class=tlacitko href="JavaScript:void(0);" title="Ventilátor rozvadec" onclick="javascript:sdsc_S(143,'2');">ZAPNI</a>
    <span id="rs3" class="cislo0">StO</span><a id="rb3" class=tlacitko href="JavaScript:void(0);" title="Studer výstup" onclick="javascript:sdsc_S(143,'3');">ZAPNI</a>
    <span id="rs4" class="cislo0">StI</span><a id="rb4" class=tlacitko href="JavaScript:void(0);" title="Studer vstup (DS)" onclick="javascript:sdsc_S(143,'4');">ZAPNI</a>
    <span id="ds0" class="cislo0">D0</span><a id="db0" class=tlacitko href="JavaScript:void(0);" title="Ovládání d0" onclick="javascript:sdsc_S(143,'5');">ZAPNI</a>

    <p class=col1 >_______________ StO Zapne při <label class=col1 id="ram144">0.00 V</label></p>
    <p class=col1 >_______________ StO Vypne při <label class=col1 id="ram145">0.00 V</label></p>
   </fieldset>
   
   <fieldset>
   <legend>Nastaveni spínání ventilátoru dle teploty</legend>
    <br>
    <p class=col1>
    <label>Ventilátor při</label>
    <input class=pwm type="text" id="sys147" name="sys147" value="" maxlength="2" onChange="javascript:sdsc_S_ev(147)">°C  
    <input type="hidden" value="">
    <a href="JavaScript:void(0);" title="ventilátor zapni" onclick="javascript:sdsc_S_ev(147);">ZAPNI</a>
    <label>.  .</label>

     <input class=pwm type="text" id="sys146" name="sys146" value="" maxlength="2" onChange="javascript:sdsc_S_ev(146)">°C  
    <input type="hidden" value="">
    <a href="JavaScript:void(0);" title="ventilátor vypni" onclick="javascript:sdsc_S_ev(146);">VYPNI</a>
    </p>
   </fieldset>
     
   <fieldset>
    <legend>Spotřeba energie</legend>
    <p class=col1><label id="p1a">Elektroměr 1.</label>-Aktuální:<label class=col2 id="a1">0.000 kW</label></p>
    <p class=col1><label id="p1c">Elektroměr 1.</label>-Celková:<label class=col2 id="c1">0.000 kWh</label></p>
    <p class=col1><label id="p1d">Elektroměr 1.</label>-Cena:<label class=col2 id="o1">00.00 Kč</label></p>
    <hr />
    <p class=col1><label id="p3a">Elektroměr 3.</label>-Aktuální:<label class=col2 id="a3">0.000 kW</label></p>
    <p class=col1><label id="p3c">Elektroměr 3.</label>-Celková:<label class=col2 id="c3">0.000 kWh</label></p>
    <p class=col1><label id="p3d">Elektroměr 3.</label>-Cena:<label class=col2 id="o3">00.00 Kč</label></p>
    <hr />
    <p class=col1><label id="p2a">Elektroměr 2.</label>-Aktuální:<label class=col2 id="a2">0.000 kW</label></p>
    <p class=col1><label id="p2c">Elektroměr 2.</label>-Celková:<label class=col2 id="c2">0.000 kWh</label></p>
    <p class=col1><label id="p2d">Elektroměr 2.</label>-Cena:<label class=col2 id="o2">00.00 Kč</label></p>
   </fieldset>
   
   <fieldset>
    <legend>Statistiky FVE</legend>
    <p class=col1>Spotřeba-ČEZ za 24 hod: <label class=col2 id="sp_den_cez">0.000 kWh</label></p>
    <p class=col1>Spotřeba-DC za 24 hod: <label class=col2 id="sp_den_bat">0.000 kWh</label></p>
    <p class=col1>Výroba-střídač za 24 hod: <label class=col2 id="vy_den_st">0.000 kWh</label></p>
    <p class=col1>Výroba-DC (MPPT) za 24 hod: <label class=col2 id="vy_den_mppt">0.000 kWh</label></p>
    <p class=col1>Nepoužito za 24h: <label class=col2 id="sp_den_do">0.000 kWh</label></p>
    <hr />
    <p class=col1>Spotřeba-ČEZ za měsíc: <label class=col2 id="sp_mes_cez">0.000 kWh</label></p>
    <p class=col1>Spotřeba-DC za měsíc: <label class=col2 id="sp_mes_bat">0.000 kWh</label></p>
    <p class=col1>Výroba-střídač za měsíc: <label class=col2 id="vy_mes_st">0.000 kWh</label></p>
    <p class=col1>Výroba-DC (MPPT) za měsíc: <label class=col2 id="vy_mes_mppt">0.000 kWh</label></p>
    <p class=col1>Nepoužito za měsíc: <label class=col2 id="sp_mes_do">0.000 kWh</label></p>
    <hr />
    <p class=col1>Spotřeba-ČEZ za rok: <label class=col2 id="sp_rok_cez">0.000 kWh</label></p>
    <p class=col1>Spotřeba-DC za rok: <label class=col2 id="sp_rok_bat">0.000 kWh</label></p>
    <p class=col1>Výroba-střídač za rok: <label class=col2 id="vy_rok_st">0.000 kWh</label></p>
    <p class=col1>Výroba-DC (MPPT) za rok: <label class=col2 id="vy_rok_mppt">0.000 kWh</label></p>
    <p class=col1>Nepoužito za rok: <label class=col2 id="sp_rok_do">0.000 kWh</label></p>
   </fieldset>
   
   <fieldset>
    <legend>Aktuální čas + Stav IP Watchdog EGON</legend>
    <p class=col1>Aktuální čas: <label class=col2 id="cas">00:00:00 00.00.0000</label></p>
    <p class=col1>Watchdog na server: <label class=col2 id="ip">000.000.000.000 : 000</label></p>
   </fieldset>
     
 </div> <!-- control -->
  
 </div>  <!-- toppanel -->

 <div id="bottpanel">
  <div id="tempa">
   <fieldset>
   <legend>Předpověď počasí</legend>
   <p class=col1t>
   <a href="http://www.slunecno.cz/meteoradar/">
   <img src="http://www.slunecno.cz/predpoved-na-web.php?obr=2&m=68&p1=0D0D0D&t1=FFFFFF&p2=BAD6FF&t2=0F0F0F&v=2" alt="Počasí radar" style="border: 0px;" />
   </a></p>
   </fieldset>

   <fieldset>
    <legend>Teplota procesoru SDS</legend>
    <p class=col1>Teplota procesoru SDS<label class=col2t id="ram146">0.00 °C</label></p>
   </fieldset>
   
   <fieldset>
    <legend>Teplotní čidla (sběrnice A)</legend>
    <p class=col1>1. STUDER XTS 1200-24<label class=col2t id="temp1">0.00 °C</label></p>
    <p class=col1>2. Rozvaděč<label class=col2t id="temp2">0.00 °C</label></p>
    <p class=col1>3. STUDER VT-80<label class=col2t id="temp3">0.00 °C</label></p>
    <p class=col1>4. Baterie<label class=col2t id="temp5">0.00 °C</label></p>
    <hr />
    <p class=col1>5. Pracovna<label class=col2t id="temp4">0.00 °C</label></p>
    <hr />
    <p class=col1>6. Venku<label class=col2t id="temp6">0.00 °C</label></p>
    <p class=col1>7. FV Panel<label class=col2t id="temp7">0.00 °C</label></p>
    <hr />
    <p class=col1>8.<label class=col2t id="temp8">0.00 °C</label></p>
    <p class=col1>9.<label class=col2t id="temp9">0.00 °C</label></p>
    <p class=col1>10.<label class=col2t id="temp10">0.00 °C</label></p>
    <p class=col1>11.<label class=col2t id="temp11">0.00 °C</label></p>
    <p class=col1>12.<label class=col2t id="temp12">0.00 °C</label></p>
    <p class=col1>13.<label class=col2t id="temp13">0.00 °C</label></p>
    <p class=col1>14.<label class=col2t id="temp14">0.00 °C</label></p>
    <p class=col1>15.<label class=col2t id="temp15">0.00 °C</label></p>
    <p class=col1>16.<label class=col2t id="temp16">0.00 °C</label></p>
   </fieldset>
   
   <fieldset>
    <legend>Analogové hodnoty FVE</legend>
    <p class=col1>AD1-Napětí baterie LiFeYPO4            <label class=col2t id="ad1">0.00 V</label></p>
    <p class=col1>AD2-Napětí baterie Pb                  <label class=col2t id="ad2">0.00 V</label></p>
    <p class=col1>AD3-Napětí čidla MPPT                  <label class=col2t id="ad3">0.00 V</label></p>
    <p class=col1>AD4-Napětí čidla LiFeYPo4              <label class=col2t id="ad4">0.00 V</label></p>
    <hr />
    <p class=col1>Dobíjecí Proud za MPPT                 <label class=col2t id="ram142">000 W </label></p>
    <span id="Icis" class=cislo10>Proud Baterie LiFeYPo4 <label class=col2t id="ram143" >NABIJENI</span>
    <hr />
    <p class=col1>Pmppt-Výkon za MPPT (AD1*Ifv)          <label class=col2t id="ram140">000 W </label></p>
    <p class=col1>Pbat-Výkon baterie (AD1*Ibat)          <label class=col2t id="ram139">000 W </label></p>
    <hr />
    <p class=col1>Kapacita Baterie podle U bat (SOC)     <label class=col2t id="ram141">000 %</label></p>
    <hr />
   </fieldset>
  </div>
 </div> <!-- bottpanel -->
  
  <div id="footer">  
  <div class="content">
  <p>Copyright ©2012 onlinetechnology <a href="http://192.168.1.253:333/user.htm" title="sds-micro">SDS-MAKRO</a></p>
  <p>Copyright ©2012 onlinetechnology <a href="http://www.onlinetechnology.cz" title="sds-micro">onlinetechnology.cz</a></p>
  <p>Copyright ©2012 onlinetechnology <a href="http://www.merenienergie.cz" title="sds-micro">merenienergie.cz</a></p>
  <p>Copyright ©2012 onlinetechnology <a href="http://www.eportal.merenienergie.cz" title="eportal.merenienergie">grafy a výsledky měření na eportal.merenienergie.cz</a></p>
  <p>Ostrovní elektrárny <a href="http://www.ostrovnielektrarny.cz" title="ostrovnielektrarny">Materiál na ostrovní elektrárny</a></p>
  <p>PAPOUCH <a href="http://www.papouch.com"title="papouch">I/O zařízení, převodníky</a></p>

  </div>
  </div>
  <!-- end footer -->
  </body>
  </html>
24x Solární panel JINKO SOLAR 225 Pmpp=225W, 2x Regulátor STUDER VT-80, 2x Střídač Studer XTM 4000-48, BSP, RCC, 1x AKU 48V LFP200Ah 1x AKU 48 V LFP280Ah. Řizení a dohled, SDS, vlastní vyčítání arduinem DUE v krabičce (ARMOSY), export dat do RPi s databází a html stránkou.
http://95.85.214.80, viewtopic.php?t=4809
Uživatelský avatar
Peroslav
Příspěvky: 50
Registrován: čtv kvě 12, 2016 9:38 am
Reputace: 0
Kontaktovat uživatele:

Re: SDS micro light E - měření výkonu

Příspěvek od Peroslav »

Děkuji Ti Frenky,

moc jsi mi pomohl, jdu si hrát.
Pepa
Uživatelský avatar
ladforu
Příspěvky: 84
Registrován: stř bře 29, 2017 8:42 am
Reputace: 1
Lokalita: Bruntál
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Bruntál

Re: SDS micro light E - měření výkonu

Příspěvek od ladforu »

Dobrý den pánové nechci zakládat nové téma...a tohle k tomu mělo blízko.Za nedlouho se stanu majitelem PLC Vision 120 ... nicméně prodávající mi doporučil,abych měl vstupní čidla napětí a proudu (vše DC) - galvanicky oddělená.No a já ať hledám jak hledám,krom asi 5ti několika tisícových hotových řešení nenašel vůbec nic. Nejsem úplný lempl co se elektroniky týče,nicméně jsem spíše mechanik ručně zručný....je mi trapné se takhle ptát, vím, že je to někomu úplně jasné a tak bych chtěl poprosit o polopatické navedení.Díky moc,ať to září.
Bez připojení k ds. Cca 8,6kwp (rozšiřuji průběžně) sys.napětí 60V, bat li ion 16s cca 1300Ah, el.peugeot 106 cca 40kWh, mppt regl 2xeasun 80a, 1x epever 60A, 1x midnite 200. 2x měnič čína à 4000 w (peak vyšší). Pořád ve výstavbě, pořád styl pavoučí hnízdo)
Uživatelský avatar
ladforu
Příspěvky: 84
Registrován: stř bře 29, 2017 8:42 am
Reputace: 1
Lokalita: Bruntál
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Bruntál

Re: SDS micro light E - měření výkonu

Příspěvek od ladforu »

Díky pánové, asi to byl natolik hloupý dotaz, že nikdo neoodpověděl,řešení jsem tedy našel sám, (x hodin) opět na mém oblíbeném ALI.Hezký večer všem
Bez připojení k ds. Cca 8,6kwp (rozšiřuji průběžně) sys.napětí 60V, bat li ion 16s cca 1300Ah, el.peugeot 106 cca 40kWh, mppt regl 2xeasun 80a, 1x epever 60A, 1x midnite 200. 2x měnič čína à 4000 w (peak vyšší). Pořád ve výstavbě, pořád styl pavoučí hnízdo)

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek