avk013.blogspot.com - другой мой блог "C# and etc"

суббота, 6 февраля 2016 г.

термометр с сохранением данных на сервере VB6+php+mysql+google_jsapi (2011год)

Мой проект за 2011 год, термометр помещения + выносной на улицу датчик
всё кроме модуля работы с I2C по COM написано самим Коваленко А.В.
(С)Коваленко А.В.
(С)avk013

І часть: серверная
1. add.php
________
<?
require('config.php');
$temp0=(float)$_GET['temp0'];
$temp1=(float)$_GET['temp1'];
$usr=$_GET['usr'];
if (!isset($temp0)) $temp0=0.0;//внутр
if (!isset($temp1)) $temp1=0.0;//внешн
$usr=substr($usr, 0, 10);
if (($temp0 != 0.0 || $temp1 != 0.0) && ( $temp1 !=-60 || $temp0 !=-60))
{$date_today = date("m.d.y"); 
$today = date("H:i:s"); 
echo("Текущее время: $today и дата: $date_today .");
echo "<BR>температура сервере: ".$temp0." и ".$temp1;
...
if(!mysql_select_db($db,$conn)) { ?> <p>ошибка открытия ТБЛ <p> <?php mysql_close($conn); exit(); }
{$pto="id, temp0, temp1, dt";
$sql="select $pto from temp order by Id desc limit 1 ";
$result=mysql_query($sql);
$row=mysql_fetch_object($result);
$temp01=$row->temp0;$temp11=$row->temp1;$id=$row->id;
mysql_free_result($result);
if ($temp11!=$temp1)
{
$sql='INSERT INTO temp (id, temp0, temp1, dt) VALUES (NULL, '.$temp0.', '.$temp1.', now())';
$a=mysql_query($sql) or die("Invalid query: " . mysql_error());}
else
{
$cto="dt=now()";
$usl='id='.$id;
$sql="UPDATE temp SET $cto WHERE $usl";
$result=mysql_query($sql);
...
====================
2. config.php
_______
<?php
$serv="localhost";
$db="database";
$us="superuser";
$pasw="lalala";?>
====================
3. gr.php
_______
<?
{require('config.php');
require('../../admin/templ.php');
$parse->get_tpl('gr.tpl');
$conn=MYSQL_CONNECT($serv,$us,$pasw);
if(!$conn) echo("error open DB");
if(!mysql_select_db($db,$conn)) echo ("error select");
$sql='SELECT temp1 FROM temp ORDER BY temp1 DESC LIMIT 1';
$a=mysql_query($sql);
while($row=mysql_fetch_array($a))
{$max=$row[0];}
$sql='SELECT temp1 FROM temp ORDER BY temp1  LIMIT 1';
$a=mysql_query($sql);
while($row=mysql_fetch_array($a))
{$min=$row[0];}
$sql='SELECT * FROM temp ORDER BY `dt` DESC limit 96';
$a=mysql_query($sql);
$i=95;
while($row=mysql_fetch_array($a))
{$dat  = explode(" ",$row[3]);
$ch= explode(":",$dat[1]);
while (($old_ch-1>$ch[0]) and ($old_ch>0) and $i>0)
{$old_ch=$old_ch-1;
$chas=$chas."data.setValue(".$i.", 0, '".$old_ch."');\n";
$temp=$temp."data.setValue(".$i.", 1, ".$old_temp.");\n";$i--;}
if ($i>0) 
{$chas=$chas."data.setValue(".$i.", 0, '".(int)$ch[0]."');\n";
$temp=$temp."data.setValue(".$i.", 1, ".$row[2].");\n";
$temp0=$temp0."data.setValue(".$i.", 2, ".$row[1].");\n";
$i--;} else break;
$old_temp=(int)$row[2];$old_temp0=(int)$row[1];$old_ch=$ch[0];}
mysql_close($conn);}
$parse->set_tpl("{min}",$min);$parse->set_tpl("{max}",$max);
$parse->set_tpl("{temp}",$temp);$parse->set_tpl("{chas}",$chas);
$parse->tpl_parse();print $parse->template;?> 
==============
4. Шаблон gr.tpl
______
<html><head>
    <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 = new google.visualization.DataTable();
data.addColumn('string', 'час');
data.addColumn('number', 'зовнішня температура');
data.addRows(96);
{chas}
{temp}
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, { width: 1000, height: 600, title: 'графік змін температури за останні 48 годин' });
}    </script>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>температура</title><style type="text/css">
<!--
body {
 background-color: #E1E1E1;
}
-->
</style></head>
  <body>
    <div align="center" id="chart_div"></div>
  <table width="90%" border="0" align="center">
      <tr>
        <td>&nbsp;</td>
        <td align="right"><strong>зовнішня</strong></td><td>&nbsp;</td><td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td align="right">мінімальна: {min}  &deg;C </td><td>&nbsp;</td><td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td align="right">максимальна: {max}  &deg;C </td><td>за період спостереження</td><td>&nbsp;</td>
      </tr>
  </table>
  <div align="center"><input type="button" onclick="history.back()" value="&lt;&lt;повернутись на попередню сторінку" /><BR><h6>(С) Реалізація та ідея: студ. Дуков М., викл.Коваленко О.В. 2011+</h6>
    </div></body></html>
=========
5. часть таблицы БД:
______
INSERT INTO `temp` (`id`, `temp0`, `temp1`, `dt`) VALUES
(2366, 27.0, 20.0, '2011-08-01 07:30:24'),
(2367, 27.0, 20.5, '2011-08-01 08:00:25'),
(2368, 27.0, 21.5, '2011-08-01 08:30:25'),
(2369, 27.0, 23.0, '2011-08-01 09:00:25'),
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
II часть:клиентская часть на компьютере с COM портом и датчиком.

файл проекта на VB 6.0
====
...
Private Sub Form_Load()
    update_com_port
    update_sample_rate
...
Private Sub Timer1_Timer()
    Dim t As Double
    Dim unit As String
            unit = "°C "
    t = temperature(&H48) 
    If t = ERROR_TEMPERATURE_NOT_READ Then
        MsgBox "Unable to read internal temperature", vbOKOnly, "Error"
        Timer1.Enabled = False
        label_temperature_indoor.Caption = "--.-" + unit
    Else
        label_temperature_indoor.Caption = Format(t, "#0.0" + unit)
   End If     
        t = temperature(&H49)
        If t = ERROR_TEMPERATURE_NOT_READ Then
            MsgBox "Unable to read external temperature", vbOKOnly, "Error"
            Timer1.Enabled = False
            label_temperature_outside.Caption = "--.-" + unit
        Else
            label_temperature_outside.Caption = Format(t, "#0.0" + unit)
        End If   
        frm_thermometer.Caption = label_temperature_indoor.Caption + "    ( out " + label_temperature_outside.Caption + " )"     
End Sub
...
Sub tempr()
temp0 = temperature(&H48)
temp0 = temperature(&H48)
temp1 = temperature(&H49)
...
WebBrowser1.Navigate url
End Sub
https://github.com/avk013/termo-cite-php_vb.git

Комментариев нет:

Отправить комментарий