Je čas na zverejnenie updatu zdrojákov.

Nová verzia má tieto fičúry: logovanie nabíjacieho prúdu, zobrazovanie info, kedy naposledy boli batérie v absorbption a kedy vo floate. Nový graf - prehľad dobíjania (7 dní, 30 dní, celá história). V grafe napätia batérií sa zobrazuje nielen reálne, ale aj cieľové napätie. Taktiež Tristar už nemusí byť prístupný z vonkajšej siete, čo výrazne prispieva k bezpečnosti riešenia. Odladil som kopu veci, taktiež niektoré veci prerobil z dôvodu optimalizácie.
Všetko začína python scriptom tristar_log.py, ktorý je nacronovaný raz za minútu na Raspberry Pi. Script iba zavolá PHP script bežiaci na verejnom severi:
Kód: Vybrat vše
#!/usr/bin/python
import urllib
url = "http://192.168.1.104/tristar_log_rpi.php"
response = urllib.urlopen(url).read()
print response
Druhý python script tristar_log_sumar.py je nacronovaný raz za hodinu a na verejnom serveri spustí analýzu logu dobití a výslednú hodnotu updatne v na to určenej tabuľke:
Kód: Vybrat vše
#!/usr/bin/python
import urllib
url = "http://oddych.sk/e/tristar_graf_log_sumar.php"
response = urllib.urlopen(url).read()
print response
Subor tristar_log_rpi.php je volany vyssie spustanym pythons criptom a zapise udaje do MySQL:
Kód: Vybrat vše
<?
$ip = "192.168.1.253";
$ip_tristaru="192.168.1.253:80";
$klice=array(
"nap_bat" =>array("38","V"),
"nap_pole" =>array("27","V"),
"prud_pole" =>array("29","A"),
"vykon" =>array("58","W"),
"tep_bat" =>array("37","C"),
"tep_tris" =>array("35","C"),
"kwh_all" =>array("56","kWh"),
"stav_nab" =>array("50",""),
"cas_abs" =>array("77","min"),
"cas_float" =>array("79","min"),
"max_vyk_d" =>array("70","W"),
"wh_d"=>array("68","Wh"),
"nab_prud"=>array("39","A"),
"tar_vol"=>array("51","V"),
);
/*$klice=array(
"napeti baterie" =>array("38","V"),
"cilove napeti" =>array("51","V"),
"Nabijeci proud" =>array("39","A"),
"Napeti pole" =>array("27","V"),
"Proud pole" =>array("29","A"),
"Vystupni vykon" =>array("58","W"),
"Sweep Vmp" =>array("61","V"),
"Sweep Voc" =>array("62","V"),
"Sweep Pmax" =>array("60","W"),
"Teplota Baterie" =>array("37","C"),
"Teplota Tristar" =>array("35","C"),
"Kilowatty" =>array("56","kWh"),
"Stav nabijeni" =>array("50",""),
"doba absorbce" =>array("77","min"),
"doba equalizace" =>array("78","min"),
"doba floatu" =>array("79","min"),
"Max vykon(dnes)" =>array("70","W"),
"Amper hodin(dnes)"=>array("67","Ah"),
"Watt hodin(dnes)"=>array("68","Wh"),
"Max Napeti pole(dnes)" =>array("66","V"),
"Max napeti baterie(dnes)"=>array("65","V"),
"Min napeti baterie(dnes)"=>array("64","V"),
"Vstupni vykon" =>array("59","W"),
"LED indikator" =>array("49","LED"),
"napeti baterie na svorkach"=>array("25","V"),
"napeti baterie na sonde"=>array("26","V"),
);
*/
// funkce
function get_data($ip,$alo) {
if (($handle = fopen("http://".$ip."/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=".$alo."&RHI=0&RLO=1", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$hodnota[1]=$data[3];
$hodnota[2]=$data[4]; }
fclose($handle);
}
Return $hodnota;
}
function get_scale($ip,$alo){
$hi=get_data($ip,$alo);
$lo=get_data($ip,$alo+1);
$hi=$hi[2];
$lo=$lo[2];
$scale_factor=$hi.($lo/65535);
return $scale_factor;
}
function get_scaled_value($raw_data,$jednotka,$vscale,$iscale){
switch ($jednotka) {
case "V":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$vscale)/32768)/10;
break;
case "A":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$iscale)/32768)/10;
break;
case "W":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$vscale*$iscale)/131072)/100;
# if ($vysledek < 0) {$vysledek = 0;}
break;
case "C":
$vysledek=$raw_data[2];
break;
case "kWh":
$vysledek=$raw_data[2];
break;
case "min":
$vysledek=($raw_data[1]*256+$raw_data[2])/60;
break;
case "Ah":
$vysledek=($raw_data[1]*256+$raw_data[2])*0.1;
break;
case "Wh":
$vysledek=($raw_data[1]*256+$raw_data[2]);
break;
case "LED":
$vysledek=$raw_data[2];
$led_state = Array( "LED_START","LED_START2","LED_BRANCH","Rychle blikajici zelena ","pomalu blikajici zelena ","blika 1x za sec zelena ",
"Sviti zelena ","UNDEFINED","Sviti zluta ","UNDEFINED","blika cervena ","sviti cervena","R-Y-G ERROR","R/Y-G ERROR","R/G-Y ERROR",
"R-Y ERROR (HTD)","R-G ERROR (HVD)","R/Y-G/Y ERROR","G/Y/R ERROR","G/Y/R x 2");
$vysledek=$led_state[$vysledek];
break;
default:
$vysledek=$raw_data[2];
$charge_state = Array("Start","Night Check","Disconnect","Night","Fault","MPPT","Absorbtion","Float","Equalize","Slave");
$vysledek=$charge_state[$vysledek];
break;
}
if(is_numeric($vysledek)) {
return round($vysledek,2);}
else {
return $vysledek;
}
}
// samotny program
$vscale=get_scale($ip_tristaru,0);
$iscale=get_scale($ip_tristaru,2);
#echo time()+(60*60*6);
$cas = date('Y-m-d H:i:s', time()+(60*60*$casovyposun));
#echo $cas;
$query = "insert into tristar_log values ('$cas'";
foreach($klice as $polozka=>$hodnota)
{
list($alo,$jednotka)=$hodnota;
$raw_data=get_data($ip_tristaru,$alo);
# echo $polozka . ": " . get_scaled_value($raw_data,$jednotka,$vscale,$iscale).$jednotka."<br>";
$query = $query.", '".get_scaled_value($raw_data,$jednotka,$vscale,$iscale)."'";
}
$query = $query.");";
print $query;
#print "<OK>";
#$db->execute($query);
Subor tristar_graf_log_sumar.php precita logy za aktualny den a updatne sumarny udaj o dobiti pre dany den:
Kód: Vybrat vše
<?
include_once('../includes/nastavenia.php');
include_once('../classes/db.php');
$db = new db($_SESSION['db_name'],$_SESSION['db_user'],$_SESSION['db_pw']);
$casovyposun = 9;
$cas = date('Y-m-d', time()+(60*60*$casovyposun));
#echo $cas;
# Nacitaj vstup
$query = "
SELECT COUNT(1) AS pocet
FROM tristar_log_dobitia
WHERE datum = '$cas';
";
$db->query($query);
$pocet = $db->rs[0]['pocet'];
#echo $pocet;
if ($pocet == 0) {
$query = "
insert into tristar_log_dobitia (datum, absorbtion_, float_)
SELECT
distinct cas_den,
(select max(cas_abs) from tristar_log where stav_nab = 'Absorbtion' and cas_den = '$cas' group by cas_den) as faza_absorbtion,
(select max(cas_float) from tristar_log where stav_nab = 'Float' and cas_den = '$cas' group by cas_den) as faza_float
from tristar_log tl
where cas_den = '$cas'
;";
}
else {
$query = "
update tristar_log_dobitia
set
absorbtion_ = (select max(cas_abs) from tristar_log where stav_nab = 'Absorbtion' and cas_den = '$cas' group by cas_den),
float_ = (select max(cas_float) from tristar_log where stav_nab = 'Float' and cas_den = '$cas' group by cas_den)
where datum = '$cas'
";
}
print $query;
$db->execute($query);
print "<OK>";
Este struktura databazy:
Tabulka tristar_log:
Kód: Vybrat vše
-- phpMyAdmin SQL Dump
-- version 2.11.11.3
-- http://www.phpmyadmin.net
--
-- Hostiteľ: 188.121.40.170
-- Vygenerované:: 24.Sep, 2014 - 13:06
-- Verzia serveru: 5.0.96
-- Verzia PHP: 5.1.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Databáza: `oddychDB`
--
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `tristar_log`
--
CREATE TABLE `tristar_log` (
`cas` datetime NOT NULL,
`nap_bat` float NOT NULL,
`nap_pole` float NOT NULL,
`prud_pole` float NOT NULL,
`vykon` int(11) NOT NULL,
`tep_bat` float NOT NULL,
`tep_tris` float NOT NULL,
`kwh_all` float NOT NULL,
`stav_nab` varchar(20) NOT NULL,
`cas_abs` float NOT NULL,
`cas_float` float NOT NULL,
`max_vyk_d` float NOT NULL,
`wh_d` float NOT NULL,
`nab_prud` float NOT NULL,
`tar_vol` float NOT NULL,
`ip` varchar(15) NOT NULL,
`cas_den` date default NULL,
KEY `cas` (`cas`),
KEY `cas_abs` (`cas_abs`),
KEY `cas_float` (`cas_float`),
KEY `stav_nab` (`stav_nab`),
KEY `dobitia` (`cas_den`,`stav_nab`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Tabulka tristar_log_dobitia:
-- phpMyAdmin SQL Dump
-- version 2.11.11.3
--
http://www.phpmyadmin.net
--
-- Hostiteľ: 188.121.40.170
-- Vygenerované:: 24.Sep, 2014 - 13:07
-- Verzia serveru: 5.0.96
-- Verzia PHP: 5.1.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Databáza: `oddychDB`
--
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `tristar_log_dobitia`
--
CREATE TABLE `tristar_log_dobitia` (
`id` int(11) NOT NULL auto_increment,
`datum` date NOT NULL,
`absorbtion_` int(1) NOT NULL,
`float_` int(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `datum` (`datum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=166 ;
A teraz samotne zobrazovanie grafov:
Subor tristar_graf sluzi na zobrazenie vsetkych timeline grafov:
Kód: Vybrat vše
<?php
include_once('../includes/nastavenia.php');
include_once('../classes/db.php');
$db = new db($_SESSION['db_name'],$_SESSION['db_user'],$_SESSION['db_pw']);
$casovyposun = 9;
$pole = htmlspecialchars($_GET["pole"]);
$get_cas = htmlspecialchars($_GET["cas"]);
if ($get_cas == 'all') {
$query = "select
CONCAT(
DATE_FORMAT((cas), '%Y %m %d %H '),
CASE
WHEN MINUTE(cas) BETWEEN 0 AND 14 THEN '00'
WHEN MINUTE(cas) BETWEEN 15 AND 29 THEN '15'
WHEN MINUTE(cas) BETWEEN 30 AND 44 THEN '35'
WHEN MINUTE(cas) BETWEEN 45 AND 59 THEN '45'
END
) AS cas_grouped,
avg(".$pole.") as $pole,
avg(tar_vol) tar_vol
from tristar_log
where nap_bat > 0
and (nab_prud < 30 or nab_prud > 150)
group by cas_grouped
order by cas_grouped;";
$query_min_nap = "select nap_bat from tristar_log where nap_bat > 0 order by nap_bat limit 1;";
}
else {
$query = "select DATE_FORMAT(cas,'%Y %m %d %H %i') cas, ".$pole.", tar_vol from tristar_log where nap_bat > 0 and cas like '".date('Y-m-d', time()+(60*60*$casovyposun))."%' order by cas";
$query_min_nap = "select nap_bat from tristar_log where nap_bat > 0 and cas like '".date('Y-m-d', time()+(60*60*$casovyposun))."%' order by nap_bat limit 1;";
}
$db->query($query);
$db2 = new db($_SESSION['db_name'],$_SESSION['db_user'],$_SESSION['db_pw']);
$db2->query($query_min_nap);
#echo $query;
#echo $query_min_nap;
$posledne = 0;
$min_vol = floor($db2->rs[0]['nap_bat']);
#echo $min_vol;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?
if ($pole == "nap_bat") {
echo "['Čas', 'Batéria V', 'Target'],";
}
elseif ($pole == "vykon") {
echo "['Čas', 'Využitý výkon panelov W'],";
}
elseif ($pole == "nab_prud") {
echo "['Čas', 'Nabíjací prúd A'],";
}
for ($a=0; $a<count($db->rs); $a++) {
# Ak predch. hodnota bola vacsia ako 20, tak nula bude chyba tristaru - ignoruj ju
if (($db->rs[$a][$pole] == 0 and $posledne < 20) || ($db->rs[$a][$pole]> 0)) {
#echo "tu som";
if ($db->rs[$a]['cas'] != null) {
list ($rok, $mesiac, $den, $hodina, $minuta) = preg_split('/[ :-]/',$db->rs[$a]['cas']);
#echo "tu som cas";
}
else {
list ($rok, $mesiac, $den, $hodina, $minuta) = preg_split('/[ :-]/',$db->rs[$a]['cas_grouped']);
#echo "tu som cas_grouped";
}
$mesiac = $mesiac-1;
$datumcas = $rok.", ".$mesiac.", ".$den.", ".$hodina.", ".$minuta;
#echo $datumcas;
// if ($posledne < 20) {
echo "[new Date(";
echo $datumcas;
# echo date('d.m.YY H:i', $db->rs[$a]['cas']);
echo "), ";
$hodnota = $db->rs[$a][$pole];
if ($pole == 'nab_prud') {
if ($hodnota > 30) {
$hodnota = 0;
}
}
echo $hodnota;
if ($pole == "nap_bat") {
if ($db->rs[$a]['tar_vol'] == 0) {
$target_voltage = $min_vol+0.05;
}
else {
$target_voltage = $db->rs[$a]['tar_vol'];
}
echo ", ";
echo $target_voltage;
}
echo "],";
$posledne = $db->rs[$a][$pole];
// }
}
}
?>
]);
var options = {
curveType: 'none',
legend: { position: 'none' },
chartArea:{left:15,top:5, height:'87%', width:'90%'},
hAxis:{slantedTextAngle:45},
<?
if ($pole == 'nap_bat') {
echo "vAxes:[
{viewWindow:{min:".$min_vol.", max:29.5}},
{viewWindow:{min:".$min_vol.", max:29.5}}
],";
}
else {
echo "vAxes:[{}, {}],";
}
?>
series:[
{targetAxisIndex:1,},
{targetAxisIndex:0, color:'lightblue', lineWidth:2, lineDashStyle: [4, 1]}
],
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div style="font-size:15px; font-family:'Arial'; font-weight:bold;">
<?
if ($pole == "nap_bat") {
echo "Batéria V";
}
elseif ($pole == 'vykon') {
echo "Využitie panelov W";
}
elseif ($pole == 'nab_prud') {
echo "Nabíjací prúd A";
}
?>
<span style="margin-left:
<?
if ($pole == 'nap_bat') {
echo "380";
}
else {
echo "700";
}
?>px; font-size:10px;">
<a href=http://oddych.sk/e/tristar_graf.php?pole=<?echo $pole;?>>Dnes</a>
<img src=grafika/separator.png>
<a href=http://oddych.sk/e/tristar_graf.php?pole=<?echo $pole;?>&cas=all>Všetko</a>
</span>
</div>
<div id="chart_div" style="width:
<?
if ($pole == "nap_bat") {
echo "560";
}
else {
echo "960";
}
?>px; height: 220px; border-style: none; border-color: #ff0000;"></div>
</body>
</html>
<?
?>
Tristar_graf_sumar.php zobrazuje (zatial iba) sumarny graf dobití batérií:
Kód: Vybrat vše
<?php
include_once('../includes/nastavenia.php');
include_once('../classes/db.php');
$db = new db($_SESSION['db_name'],$_SESSION['db_user'],$_SESSION['db_pw']);
$casovyposun = 9;
$co = htmlspecialchars($_GET["co"]);
$get_cas = htmlspecialchars($_GET["cas"]);
if ($get_cas == 'all') {
$query = "
SELECT
datum,
absorbtion_ as faza_absorbtion,
float_ as faza_float
from tristar_log_dobitia tld
where
id = (select max(id) from tristar_log_dobitia tld2 where tld2.datum=tld.datum)
order by datum
;";
}
else {
$query = "
SELECT
datum,
absorbtion_ as faza_absorbtion,
float_ as faza_float
from tristar_log_dobitia tld
where
-- id = (select max(id) from tristar_log_dobitia tld2 where tld2.datum=tld.datum)
-- and
datum >= DATE_SUB(NOW(), INTERVAL $get_cas day)
order by datum
;";
}
#echo $query;
#die();
$db->query($query);
$posledne = 0;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?
if ($co == "dobitia") {
echo "['Čas', 'Absorbption', 'Float'],";
}
for ($a=0; $a<count($db->rs); $a++) {
list ($rok, $mesiac, $den, $hodina, $minuta) = preg_split('/[ :-]/',$db->rs[$a]['datum']);
# $mesiac = $mesiac-1;
# $datumcas = $rok.", ".$mesiac.", ".$den.", 00, 00";
$datumcas = $den.".".$mesiac.".".$rok;
echo "['";
echo $datumcas;
echo "', ";
echo $db->rs[$a]['faza_absorbtion'];
echo ", ";
echo $db->rs[$a]['faza_float'];
echo "],";
// }
}
?>
]);
var options = {
legend: { position: 'none' },
chartArea:{left:25,top:0, height:'98%', width:'100%'},
isStacked: true,
hAxis:{slantedTextAngle:0},
colors: ['blue','green']
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div style="font-size:15px; font-family:'Arial'; font-weight:bold;">
<?
if ($co == "dobitia") {
echo "História dobití";
}
?>
<span style="margin-left:107px; font-size:10px;">
<a href=http://oddych.sk/e/tristar_graf_sumar.php?co=<?echo $co;?>&cas=7>7 dní</a>
<img src=grafika/separator.png>
<a href=http://oddych.sk/e/tristar_graf_sumar.php?co=<?echo $co;?>&cas=30>30 dní</a>
<img src=grafika/separator.png>
<a href=http://oddych.sk/e/tristar_graf_sumar.php?co=<?echo $co;?>&cas=all>Všetko</a>
</span>
</div>
<div id="chart_div" style="width:340px; height: 200px; border-style: none; border-color: #ff0000;"></div>
</body>
</html>
<?
?>
Súbor tristar_cifernik.php zobrazuje vsetky ciferniky:
Kód: Vybrat vše
<?php
include_once('../includes/nastavenia.php');
include_once('../classes/db.php');
$db = new db($_SESSION['db_name'],$_SESSION['db_user'],$_SESSION['db_pw']);
$casovyposun = 9;
$pole = htmlspecialchars($_GET["pole"]);
#$query = "select DATE_FORMAT(cas,'%H:%i') cas, ".$pole." from tristar_log ".$cas.";";
$query = "select
".$pole.",
stav_nab,
round(max_vyk_d) max_vyk_d,
datediff(date(addtime(now(),'0".($casovyposun).":00')), date((select cas from tristar_log where stav_nab = 'Absorbtion' order by cas desc limit 1 ))) nab_ciast,
datediff(date(addtime(now(),'0".($casovyposun).":00')), date((select cas from tristar_log where stav_nab = 'Float' order by cas desc limit 1 ))) nab_plne
from tristar_log where nap_bat > 0 order by cas desc limit 1;";
#echo "query: ".$query;
$db->query($query);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv=”refresh” content="5" />
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["gauge"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
<?
$hodnota = $db->rs[0][$pole];
if ($pole == 'nap_bat') {
echo "['V',";
}
elseif ($pole == 'vykon') {
echo "['W',";
}
elseif ($pole == 'nab_prud') {
if ($db->rs[0][$pole] > 50) {
$hodnota = 0;
}
echo "['A',";
}
echo $hodnota;
?>],
]);
var options = {
<?
if ($pole == 'nap_bat') {
echo "
min: 21, max: 30,
width: 250, height: 187,
redFrom: 21, redTo: 22.5,
yellowFrom:22.5, yellowTo: 23.7,
greenFrom: 25.2, greenTo: 30,
minorTicks: 10, majorTicks: ['21', '22', '23','24', '25', '26', '27','28','29', '30']
";}
elseif ($pole == 'vykon'){
echo "
min: 0, max: 500,
width: 250, height: 187,
redFrom: 0, redTo: 0,
yellowFrom:0, yellowTo: 200,
greenFrom: 200, greenTo: 500,
minorTicks: 10, majorTicks: ['0', '100','200', '300', '400', '500']
";}
elseif ($pole == 'nab_prud') {
echo "
min: 0, max: 16,
width: 250, height: 187,
redFrom: 0, redTo: 0,
yellowFrom:15, yellowTo: 16,
greenFrom: 0, greenTo: 15,
minorTicks: 10, majorTicks: ['0', '2', '4', '6', '8', '10', '12', '14', '16',]
";}
//
?>
};
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width:187px; height: 175px; border-style:none; border-color: #ff0000; margin-left:22px;text-align:center;"></div>
<div style="margin-left:0px; font-size:13px; font-family:'Arial'; font-weight:bold; border-style:none; border-color: #000000;text-align:center;">
<?
function PocetDni ($pocet) {
if ($pocet == 0) {
return "<span style='color:green;'> Dnes</span>";
}
elseif ($pocet == 1) {
return " Včera";
}
elseif ($pocet >= 2 and $pocet <= 4) {
return " <span style='color:red;'>$pocet dni dozadu</span>";
}
else {
return " <span style='color:red;'>$pocet dní dozadu</span>";
}
}
if ($pole == 'nap_bat') {
echo "Fáza nabíjania: ".$db->rs[0]['stav_nab'];
# echo "<br />Plne dobité: ".$db->rs[0]['nab_plne']." dní dozadu";
echo "<br />Plne dobité: ".PocetDni($db->rs[0]['nab_plne']);
# echo "<br />Čiastočne dobité: ".$db->rs[0]['nab_ciast']." dní dozadu";
echo "<br />Čiastočne dobité: ".PocetDni($db->rs[0]['nab_ciast']);
}
elseif (($pole == 'vykon')) {
echo "Max výkon dnes: ".$db->rs[0]['max_vyk_d']." W";
}
?>
</div>
</body>
</html>
<?
?>
Súbor panel.php slúži ako hlavná stránka pre zobrazovanie všetkých grafov cez vložené iframes:
Kód: Vybrat vše
<html>
<head>
<title>Solárna elektráreň 460wp</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?
$refresh = htmlspecialchars($_GET["refresh"]);
if ($refresh == '') {
echo "<meta http-equiv='refresh' content='120'>";
}
elseif ($refresh > 0) {
echo "<meta http-equiv='refresh' content=".$refresh.">";
}
?>
</head>
<body>
<table border=0 style="margin-left:0px;">
<tr>
<td valign=top colspan=2>
<iframe src=http://oddych.sk/e/tristar_graf.php?pole=vykon frameborder=0 width=950 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
<td valign=center valign=top>
<iframe src=http://oddych.sk/e/tristar_cifernik.php?pole=vykon frameborder=0 width=250 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
</tr>
<tr>
<td>
<iframe style="padding:0px; margin:0px;" src=http://oddych.sk/e/tristar_graf_sumar.php?co=dobitia&cas=7 frameborder=0 width=340 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
<td cellspacing=0 cellpadding=0 valign=top>
<iframe style="padding:0px; margin:0px;" src=http://oddych.sk/e/tristar_graf.php?pole=nap_bat frameborder=0 width=570 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
<td valign=top align=center>
<iframe src=http://oddych.sk/e/tristar_cifernik.php?pole=nap_bat frameborder=0 width=250 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
</tr>
<tr>
<td cellspacing=0 cellpadding=0 valign=top colspan=2>
<iframe style="padding:0px; margin:0px;" src=http://oddych.sk/e/tristar_graf.php?pole=nab_prud frameborder=0 width=950 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
<td valign=top align=center>
<iframe src=http://oddych.sk/e/tristar_cifernik.php?pole=nab_prud frameborder=0 width=250 height=250 scrolling=no sandbox=allow-scripts></iframe>
</td>
</tr>
</table>
<div style="font-size:10px; font-family:'Arial'; font-weight:bold;">
Autorefresh min.:
<a href=panel.php?refresh=60>1</a>
<img src=grafika/separator.png>
<a href=panel.php?refresh=120>2</a>
<img src=grafika/separator.png>
<a href=panel.php?refresh=300>5</a>
<img src=grafika/separator.png>
<a href=panel.php?refresh=600>10</a>
<img src=grafika/separator.png>
<a href=panel.php?refresh=off>OFF</a>
</div>
</body>
</html>
Enjoy!
