Osvalde, krom toho, že na grafy používám Cacti a hodnoty získávám přes SNMP, tak paralelně zapisuji hodnoty pomocí PHP scriptu do mySQL, je to první věc co jsem PHP dělal, ale funguje dobře (překvapivě)
<?php
date_default_timezone_set ("Europe/Prague");
$con = mysql_connect("localhost","xxx","xxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("vetrnik", $con);
//nastavit promene
$t_venku = "NULL";
$t_garaz = "NULL";
$t_puda = "NULL";
$t_chodba = "NULL";
$t_obyvak = "NULL";
$t_bojler_dole = "NULL";
$t_bojler_nahore = "NULL";
$t_sani = "NULL";
$t_vyfuk = "NULL";
$t_privod = "NULL";
$t_odtah = "NULL";
$el_nt_hlavni = "NULL";
$el_vt_hlavni = "NULL";
$el_nt_topeni = "NULL";
$el_vt_topeni = "NULL";
$el_nt_rekuperace = "NULL";
$el_vt_rekuperace = "NULL";
$el_act_nt_hlavni = "NULL";
$el_act_vt_hlavni = "NULL";
$el_act_nt_topeni = "NULL";
$el_act_vt_topeni = "NULL";
$el_act_nt_rekuperace = "NULL";
$el_act_vt_rekuperace = "NULL";
$vod_hlavni = "NULL";
$vod_TUV = "NULL";
$vod_dest = "NULL";
$vod_act_hlavni = "NULL";
$vod_act_TUV = "NULL";
$vod_act_dest = "NULL";
$vlh_odtah = "NULL";
$vlh_obyvak = "NULL";
$ad_hladinaa = "NULL";
$ad_ot_privod = "NULL";
$ad_ot_odtah = "NULL";
$last = mysql_query("SELECT * FROM 5min_data ORDER BY ID DESC LIMIT 1")
or die(mysql_error());
$info = mysql_fetch_array( $last );
// minule hodnoty spotreby
$DATUMCAS_old = $info['timestamp'];
$el_nt_hlavni_old = $info['el_nt_hlavni'];
$el_vt_hlavni_old = $info['el_vt_hlavni'];
$el_nt_topeni_old = $info['el_nt_topeni'];
$el_vt_topeni_old = $info['el_vt_topeni'];
$el_nt_rekuperace_old = $info['el_nt_rekuperace'];
$el_vt_rekuperace_old = $info['el_vt_rekuperace'];
$vod_dest_old = $info['vod_dest'];
$vod_hlavni_old = $info['vod_hlavni'];
$vod_TUV_old = $info['vod_TUV'];
//settype($el_nt_hlavni_old, "float");
function fileExists($path){
return (@fopen($path,"r")==true);
}
$sds1 = 'http://192.168.1.250:8080/xml.xml';
$sds2 = 'http://192.168.1.251:8080/xml.xml';
if (fileexists($sds1)) {
$xml1 = simplexml_load_file($sds1);
$sd1_live = true;
print_r($xml1);
$t_puda = $xml1->snmp->temp_17;
$t_obyvak = $xml1->snmp->temp_18;
$el_nt_hlavni = $xml1->snmp->s0_1->impT1 / 800;
$el_vt_hlavni = $xml1->snmp->s0_1->impT0 / 800;
$el_nt_topeni = $xml1->snmp->s0_3->impT1 / 800;
$el_vt_topeni = $xml1->snmp->s0_3->impT0 / 800;
$el_nt_rekuperace = $xml1->snmp->s0_2->impT1 / 1000;
$el_vt_rekuperace = $xml1->snmp->s0_2->impT0 / 1000;
$vod_dest = $xml1->snmp->s0_4->impT1 + $xml1->snmp->s0_4->impT0;
$vlh_obyvak = round(substr($xml1->snmp->ad2_si, 0, 6), 1);
$ad_hladina = substr($xml1->snmp->ad1_si, 0, 5);
} else {
$sd1_live = false;
echo "SDS1 dead \n";
}
if (fileexists($sds2)) {
$xml2 = simplexml_load_file($sds2);
$sd2_live = true;
print_r($xml2);
$t_venku = $xml2->snmp->temp_2;
$t_garaz = $xml2->snmp->temp_10;
$t_chodba = $xml2->snmp->temp_9;
$t_bojler_dole = $xml2->snmp->temp_5;
$t_bojler_nahore = $xml2->snmp->temp_8;
$t_sani = $xml2->snmp->temp_1;
$t_vyfuk = $xml2->snmp->temp_4;
$t_privod = $xml2->snmp->temp_7;
$t_odtah = $xml2->snmp->temp_6;
$vod_hlavni = $xml2->snmp->s0_2->impT0;
$vod_TUV = $xml2->snmp->s0_1->impT0;
$vlh_odtah = round(substr($xml2->snmp->ad1_si, 0, 6), 1);
$ad_ot_privod = round(substr($xml2->snmp->ad2_si, 0, 6) * 10, 1);
$ad_ot_odtah = round(substr($xml2->snmp->ad3_si, 0, 6) * 10, 1);
} else {
$sd2_live = false;
echo "SDS2 dead \n" ;
}
$DATUMCAS = date ("Y-m-d H:i:s");
$TIMEDELTA = strtotime($DATUMCAS) - strtotime($DATUMCAS_old);
echo "Datum a cas: ".$DATUMCAS."\n";
echo "Datum a cas old: ".$DATUMCAS_old."\n";
echo "Od posledniho update: ".$TIMEDELTA."s \n";
echo "\n";
echo "Teplota venku: ".$t_venku." C \n";
echo "Teplota garaz: ".$t_garaz." C \n";
echo "Teplota chodba: ".$t_chodba." C \n";
echo "Teplota puda: ".$t_puda." C \n";
echo "Teplota obyvak: ".$t_obyvak." C \n";
echo "Teplota bojler dole: ".$t_bojler_dole." C \n";
echo "Teplota vojler nahore: ".$t_bojler_nahore." C \n";
echo "Teplota sani: ".$t_sani." C \n";
echo "Teplota vyfuk: ".$t_vyfuk." C \n";
echo "Teplota privod: ".$t_privod." C \n";
echo "Teplota odtah: ".$t_odtah." C \n";
echo "Spotreba hlavni NT: ".$el_nt_hlavni." kWh \n";
echo "Spotreba hlavni VT: ".$el_vt_hlavni." kWh \n";
echo "Spotreba topeni NT: ".$el_nt_topeni." kWh \n";
echo "Spotreba topeni VT: ".$el_vt_topeni." kWh \n";
echo "Spotreba rekuperace NT: ".$el_nt_rekuperace." kWh \n";
echo "Spotreba rekuperace VT: ".$el_vt_rekuperace." kWh \n";
echo "Spotreba pitne vody: ".$vod_hlavni." l \n";
echo "Spotreba TUV vody: ".$vod_TUV." l \n";
echo "Spotreba destove vody: ".$vod_dest." l \n";
echo "Vlhkost odtah: ".$vlh_odtah." % \n";
echo "Vlhkost obyvak: ".$vlh_obyvak." % \n";
echo "Otacky privod: ".$ad_ot_privod." % \n";
echo "Otacky odtah: ".$ad_ot_odtah." % \n";
echo "Hladina: ".$ad_hladina." m \n";
//vypocet aktualu
$el_act_nt_hlavni = ($el_nt_hlavni - $el_nt_hlavni_old)/$TIMEDELTA * 3600000;
$el_act_vt_hlavni = ($el_vt_hlavni - $el_vt_hlavni_old)/$TIMEDELTA * 3600000;
$el_act_nt_topeni = ($el_nt_topeni - $el_nt_topeni_old)/$TIMEDELTA * 3600000;
$el_act_vt_topeni = ($el_vt_topeni - $el_vt_topeni_old)/$TIMEDELTA * 3600000;
$el_act_nt_rekuperace = ($el_nt_rekuperace - $el_nt_rekuperace_old)/$TIMEDELTA * 3600000;
$el_act_vt_rekuperace = ($el_vt_rekuperace - $el_vt_rekuperace_old)/$TIMEDELTA * 3600000;
$vod_act_hlavni = $vod_hlavni - $vod_hlavni_old;
$vod_act_TUV = $vod_TUV - $vod_TUV_old;
$vod_act_dest = $vod_dest - $vod_dest_old;
echo "Spotreba hlavni NT new: ".$el_nt_hlavni." W \n";
echo "Spotreba hlavni NT old: ".$el_nt_hlavni_old." W \n";
echo "Spotreba hlavni NT ted: ".$el_act_nt_hlavni." W \n";
echo "Spotreba hlavni VT ted: ".$el_act_vt_hlavni." W \n";
echo "Spotreba topeni NT: ".$el_act_nt_topeni." W \n";
echo "Spotreba topeni VT: ".$el_act_vt_topeni." W \n";
echo "Spotreba rekuperace NT: ".$el_act_nt_rekuperace." W \n";
echo "Spotreba rekuperace VT: ".$el_act_vt_rekuperace." W \n";
echo "Spotreba pitne vody: ".$vod_act_hlavni." l \n";
echo "Spotreba TUV vody: ".$vod_act_TUV." l \n";
echo "Spotreba destove vody: ".$vod_act_dest." l \n";
//zapis hodnot do DB
mysql_query("INSERT INTO 5min_data (
timestamp,
temp_venku,
temp_garaz,
temp_puda,
temp_chodba,
temp_obyvak,
temp_bojler_dole,
temp_bojler_nahore,
temp_sani,
temp_vyfuk,
temp_privod,
temp_odtah,
el_nt_hlavni,
el_vt_hlavni,
el_nt_topeni,
el_vt_topeni,
el_nt_rekuperace,
el_vt_rekuperace,
el_act_nt_hlavni,
el_act_vt_hlavni,
el_act_nt_topeni,
el_act_vt_topeni,
el_act_nt_rekuperace,
el_act_vt_rekuperace,
vod_hlavni,
vod_TUV,
vod_dest,
vod_act_hlavni,
vod_act_TUV,
vod_act_dest,
vlh_odtah,
vlh_obyvak,
ad_hladina,
ad_otacky_privod,
ad_otacky_odtah
)
VALUES (
'$DATUMCAS',
$t_venku,
$t_garaz,
$t_puda,
$t_chodba,
$t_obyvak,
$t_bojler_dole,
$t_bojler_nahore,
$t_sani,
$t_vyfuk,
$t_privod,
$t_odtah,
$el_nt_hlavni,
$el_vt_hlavni,
$el_nt_topeni,
$el_vt_topeni,
$el_nt_rekuperace,
$el_vt_rekuperace,
$el_act_nt_hlavni,
$el_act_vt_hlavni,
$el_act_nt_topeni,
$el_act_vt_topeni,
$el_act_nt_rekuperace,
$el_act_vt_rekuperace,
$vod_hlavni,
$vod_TUV,
$vod_dest,
$vod_act_hlavni,
$vod_act_TUV,
$vod_act_dest,
$vlh_odtah,
$vlh_obyvak,
$ad_hladina,
$ad_ot_privod,
$ad_ot_odtah
)");
echo mysql_error();
mysql_close($con);
?>