odesli_data
{
var elektromer1_odecet;
var elektromer2_odecet;
var elektromer3_odecet;
var elektromer1_vykon;
var elektromer2_vykon;
var elektromer3_vykon;
elektromer1_odecet = sys[493];
ram[1] = elektromer1_odecet / 1000; //pred desetinou carkou
ram[11] = elektromer1_odecet % 1000; //za desetinou carkou
elektromer2_odecet = sys[494];
ram[2] = elektromer2_odecet / 800; //pred desetinou carkou
ram[12] = elektromer2_odecet % 1000; //za desetinou carkou
elektromer3_odecet = sys[495];
ram[3] = elektromer3_odecet / 1000; //pred desetinou carkou
ram[13] = elektromer3_odecet % 1000; //za desetinou carkou
elektromer1_vykon = 3600000 / sys[592];
ram[4] = elektromer1_vykon;
elektromer2_vykon = 4500000 / sys[593];
ram[5] = elektromer2_vykon;
elektromer3_vykon = 3600000 / sys[594];
ram[6] = elektromer3_vykon;
ram[7] = ((ram[3] - ram[1]) * 3700) / 1000; //celkem vyrobena energie za kč
//prezentovaná_hodnota = (SoC_digitální_změrená_hodnota - nulová_konstanta) / (přepočtová_konstanta/100) .
// AD prevodnik 1
ram[50] = sys[431] * 1000;
ram[51] = sys[436] / 100;
ram[52] = ram[50] / ram[51]; // 1000x vetsi hodnota - uzitecne pro vypocty
ram[53] = ram[52] / 1000; // pred desetinou carkou
ram[54] = ram[52] % 1000; // za desetinou carkou
echo('AD 1 ', ram[53],'.', ram[54], sys[438]);
// AD prevodnik 2
ram[60] = sys[432] * 1000;
ram[61] = sys[440] / 100;
ram[62] = ram[60] / ram[61]; // 1000x vetsi hodnota - uzitecne pro vypocty
ram[63] = ram[62] / 1000; // pred desetinou carkou
ram[64] = ram[62] % 1000; // za desetinou carkou
echo('AD 2 ', ram[63],'.', ram[64], sys[442]);
// AD prevodnik - vypocet proudu
ram[65] = ram[62] * 255;
ram[66] = ram[65] - 1184800; //1184800
ram[67] = ram[66] / 10;
ram[68] = ram[67] / 1000;
ram[69] = ram[67] % 1000;
// k odeslání do jiné desky patří hodnota ram[67] je to 10000* proud (takze o 4 desetinna mista)
echo('proud v panelech ', ram[68],'.', ram[69], sys[442]);
// echo('AD 2 ', ram[63],'.', ram[64], sys[442]); //zatim netreba
// AD prevodnik 3
ram[70] = sys[433] * 1000;
ram[71] = sys[444] / 100;
ram[72] = ram[70] / ram[71]; // 1000x vetsi hodnota - uzitecne pro vypocty
ram[73] = ram[72] / 1000; // pred desetinou carkou
ram[74] = ram[72] % 1000; // za desetinou carkou
echo('AD 3 ', ram[73],'.', ram[74], sys[446]);
// vypocet druhe poloviny baterie
ram[100] = ram[52] - ram[72];
ram[101] = ram[100] / 1000;
ram[102] = ram[100] % 1000;
echo('druhy blok baterie ma', ram[101],'.', ram[102], sys[438] );
// balancování baterie - výpočet
ram[105] = ram[72] - ram[100];
ram[106] = ram[105] / 1000;
ram[107] = ram[105] % 1000;
echo('baterie je rozbalancovana o', ram[106],'.', ram[107], sys[438] );
// AD prevodnik 4 / zatim vypnuto - netreba
//ram[80] = sys[434] * 1000;
//ram[81] = sys[448] / 100;
//ram[82] = ram[80] / ram[81]; // 1000x vetsi hodnota - uzitecne pro vypocty
//ram[83] = ram[82] / 1000; // pred desetinou carkou
//ram[84] = ram[82] % 1000; // za desetinou carkou
// echo('AD 3 ', ram[83],'.', ram[84], sys[450]);
// ram[20] az ram[24] je vypocet ceny za spotrebovanou energii
// vypocet ceny za spotrebu po odectu - cenu dopiste do ram[22] vynasobenou 100x
// ram[20] je stav elektromeru minus pocet pulsu po poslednim odectu
// ram[21] za deleno je pocet pulsu na KW
ram[20] = elektromer2_odecet - 4405899;
ram[21] = ram[20] / 8; // pocet pulzu deleno 100
ram[22] = ram[21] * 302; // 3.02 kc za / kwh - cena X 100
ram[23] = ram[22] / 10000; // vydelime 10000
ram[24] = ram[22] % 10000; //za desetinou carkou
dns_resolv('api.thingspeak.com');
//pockam az probehne funkce do konce
label cekam_na_dns:
if (sys[65] == 0) goto cekam_na_dns;
//otestujeme úspěch DNS překladu
if (sys[65] == 512) goto mam_dns_preklad;
//neuspech
return;
label mam_dns_preklad:
// TADY upravit za /update?key= vas api key
http_get(sys[66],sys[67],sys[68],sys[69], 'api.thingspeak.com''/update?key=tady davam api&field1=',ram[1]'.'ram[11], '&field2=', ram[2]'.'ram[12], '&field3=', ram[3]'.'ram[13], '&field4=', ram[4], '&field5=', ram[5], '&field6=', ram[6], '&field7=', ram[7], '&field8=', ram[23]'.'ram[24]);
echo('odeslano');
//pockam az probehne funkce do konce
label cekam_na_http:
if (sys[65] == 0) goto cekam_na_http;
//pokud server má problém:
if ((sys[65] != 1024)||(sys[75] != 200)) goto chyba_www_serveru;
//neni problem, takze ok - napiseme na konzoli
echo('OK.');
//vse hotovo
return;
label preskocit_protoze_chyba_DNS:
echo('DNS err ', sys[65]);
return;
label chyba_www_serveru:
//obsluha chyby - www server
echo('http err ', sys[75]);
}
odesli_data2
{
dns_resolv('api.thingspeak.com');
//pockam az probehne funkce do konce
label cekam_na_dns2:
if (sys[65] == 0) goto cekam_na_dns2;
//otestujeme úspěch DNS překladu
if (sys[65] == 512) goto mam_dns_preklad2;
//neuspech
return;
label mam_dns_preklad2:
// TADY upravit za /update?key= vas api key
http_get(sys[66],sys[67],sys[68],sys[69], 'api.thingspeak.com''/update?key=tady davam API&field1=',ram[105]);
echo('odeslano2');
//pockam az probehne funkce do konce
label cekam_na_http2:
if (sys[65] == 0) goto cekam_na_http2;
//pokud server má problém:
if ((sys[65] != 1024)||(sys[75] != 200)) goto chyba_www_serveru2;
//neni problem, takze ok - napiseme na konzoli
echo('OK2.');
//vse hotovo
return;
label preskocit_protoze_chyba_DNS2:
echo('DNS err2 ', sys[65]);
return;
label chyba_www_serveru2:
//obsluha chyby - www server
echo('http err2 ', sys[75]);
}
main
{
echo('start');
label opakovat:
echo('opakuji');
odesli_data();
odesli_data2();
//pockame 5 sekund (lze zde upravit)
sys[64] = 5;
label cekej:
if (sys[64] != 0) goto cekej;
//znovu
goto opakovat;
}
}