#define DOTAZ ram[100]
var vscale;
var iscale;
////////////////////////////////
///nastaveni IP TRISTARU na radku 93
// nastaveni periody poslinani na mypower na radku 284 (udaj v sekundach)
////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
vycisti_ram  //vycisteni pameti ram
{            //cistime pouze segmenty ktery jsem zaprasil pomocnyma hodnotama
var m;
m=20;
label clean_ram:
ram[m]=0x00;
m++;
if(m>70) return;
goto clean_ram;
}

////////////////////////////////////////////////////////////////////////////////
parsuj   //parsovani hodnot z HTTP responnse 11|49|44|52|44|50|44|48|44|49|56|48|0|
{

var i;
var j;
var pomik;
var hodnota;
var pomicek;

j=1;
i=ram[0];  //naplnit delku dosleho retezce
pomik=20;
pomicek=i-1;

if(ram[i]>0) { //parsovat budeme pouze pokud je co


next:  //prvni hodnota

if(ram[i]==48 && ram[pomicek]==44) //ukoncit rovnou protoze to je 0
{
ram[30]=0;
return;
}


if(ram[i]!=44) {
ram[pomik]=ram[i]-48;
i--;
pomik++;
} else {
ram[30]+=ram[20]; //sestrojime cislo
ram[30]+=ram[21]*10;
ram[30]+=ram[22]*100;
i--;
pomik=40;
goto next2;  //tady jsme hotovi a presuneme se na druhe cislo
}

goto next;

next2:  //druha hodnota

if(ram[i]!=44) {
ram[pomik]=ram[i]-48;
i--;
pomik++;
} else {
ram[50]+=ram[40]; //sestrojime cislo
ram[50]+=ram[41]*10;
ram[50]+=ram[42]*100;
return;  //dojeli jsem na konec a vime kolik mame mist v cisle
}

goto next2;

} else {

return; //tady neni nic k parsovani

}

}

////////////////////////////////////////////////////////////////////////////////
odesli_data    //ziskani dat z tristaru
{
sys[77]=1; //nastaveni modu http_get


http_get(X,X,X,X, 'www.server.cz','/test.php?ID=1&F=4&AHI=0&ALO=',DOTAZ,'&RHI=0&RLO=1');


label cekat:

if(ram[0]>1){ //data dorazila
return;
} else { goto cekat; } //cekam na data


}



////////////////////////////////////////////////////////////////////////////////
get_vscale    //ziskani vscale
{
var vs_hi;
var vs_lo;
var vs_pom;
vs_pom=0;  //0 Hi vscale 1 Lo Vscale
//echo('nacteni vscale hi a lo');

label vs_opakovat:
DOTAZ=vs_pom;

odesli_data(); // zjistujeme hi a lo
parsuj();

if(vs_pom==0) { vs_hi=ram[30]; }//echo('vs_hi',vs_hi);}
if(vs_pom==1) { vs_lo=ram[30]; }//echo('vs_lo',vs_lo);}

vs_pom++;
if(vs_pom>1) { vs_pom=0; return;}

vscale=vs_hi + (vs_lo/65535);  //vypocet vscale hi+(lo/65535)

goto vs_opakovat;   //opakujeme dokud nemam hi a lo

}


////////////////////////////////////////////////////////////////////////////////
get_iscale    //ziskani vscale
{
var is_hi;
var is_lo;
var is_pom;
is_pom=2; //2 Hi iscale 3 Lo iscale
//echo('nacteni iscale hi a lo');

label is_opakovat:
DOTAZ=is_pom;

odesli_data(); // zjistujeme hi a lo

parsuj();
if(is_pom==2) { is_hi=ram[30]; } //echo('is_hi',is_hi);}
if(is_pom==3) { is_lo=ram[30]; } //echo('is_lo',is_lo);}

is_pom++;
if(is_pom>3) { is_pom=2; return;}

iscale=is_hi + (is_lo/65535); //vypocet iscale hi+(lo/65535)


goto is_opakovat;

}


////////////////////////////////////////////////////////////////////////////////
init   //inicializace
{

get_vscale();  //ziskat vscale
vycisti_ram(); //uklidit po sobe pro pristi pouziti

get_iscale();  //ziskat iscale
vycisti_ram();  //uklidit po sobe pro pristi pouziti
}

////////////////////////////////////////////////////////////////////////////////
main   //hlavni program
{
var h;  //hodnota pro vypocet
var h1;
var h2;
var scale; //pomocna promena scale naplnujeme vscale nebo iscale dle potreby

//echo('start hlavni vetve');


label smycka:  //hlavni smycka ktera nastavuje jak casto se budeme ptat tristaru

//   dostupne DOTAZy
//  "napeti baterie"  38
//  "cilove napeti"   51
//  "Nabijeci proud"  39
//  "Napeti pole"     27
 // "Proud pole"      29

//////////////Ubat//////////////////////
DOTAZ=38;
odesli_data();
parsuj();
h1=ram[30]; h2=ram[50];
vycisti_ram();
h= ( h2 * 256 ) + h1;
h=((h*vscale*100)/32768);

var ubat_predCarkou;
var ubat_zaCarkou;
ubat_predCarkou = h/100;
ubat_zaCarkou = h % 100;
echo ('Ubat=', ubat_predCarkou, '.', ubat_zaCarkou, 'V');


///////////////Utarget////////////////////////
DOTAZ=51;
odesli_data();
parsuj();
h1=ram[30]; h2=ram[50];
vycisti_ram();
h= ( h2 * 256 ) + h1;
h=((h*vscale*100)/32768);

var utar_predCarkou;
var utar_zaCarkou;
utar_predCarkou = h/100;
utar_zaCarkou = h % 100;
echo ('Utar=', utar_predCarkou, '.', utar_zaCarkou, 'V');

///////////////Upv////////////////////////
DOTAZ=27;
odesli_data();
parsuj();
h1=ram[30]; h2=ram[50];
vycisti_ram();
h= ( h2 * 256 ) + h1;
h=((h*vscale*100)/32768);

var upv_predCarkou;
var upv_zaCarkou;
upv_predCarkou = h/100;
upv_zaCarkou = h % 100;
echo ('Upv=', upv_predCarkou, '.', upv_zaCarkou, 'V');


//////////////Ibat//////////////////////
DOTAZ=39;
odesli_data();
parsuj();
h1=ram[30]; h2=ram[50];
vycisti_ram();
h= ( h2 * 256 ) + h1;
h=((h*iscale*100)/32768);

//pokud je proud zaporny
if(h>15000) { h=0; }

var ibat_predCarkou;
var ibat_zaCarkou;
ibat_predCarkou = h/100;
ibat_zaCarkou = h % 100;
echo ('Ibat=', ibat_predCarkou, '.', ibat_zaCarkou, 'A');


///////////////Ipv////////////////////////
DOTAZ=29;
odesli_data();
parsuj();
h1=ram[30]; h2=ram[50];
vycisti_ram();
h= ( h2 * 256 ) + h1;
h=((h*iscale*100)/32768);

var ipv_predCarkou;
var ipv_zaCarkou;
ipv_predCarkou = h/100;
ipv_zaCarkou = h % 100;
echo ('Ipv=', ipv_predCarkou, '.', ipv_zaCarkou, 'A');


//////////odesilani na mypower.cz/////
sys[77]=2; //nastaveni modu http_get
http_get(194,12,32,227, 'log.mypower.cz','/SDS?fveid=XXXXX&unix=',sys[4],'&ubat=', ubat_predCarkou, ',', ubat_zaCarkou, '&ibat=', ibat_predCarkou, ',', ibat_zaCarkou, '&uarray=', upv_predCarkou, ',', upv_zaCarkou, '&iarray=', ipv_predCarkou, ',', ipv_zaCarkou);

echo(text[0]);


 sys[64] = 120; //NASTAVENI jak casto se budeme ptat tristaru v sekudach
 label cekat1:
 if (sys[64] != 0) goto cekat1;




 echoclear(0); //vycistit konzoli
 goto smycka; //konec hlavni smycky



}