0
私は、太陽光充電コントローラからMySQLデータベース(5.5.52)にデータを収集しています。これまでのところ、私はテーブルを持って、レジスタ:MySQLのビューと現在と前の行の間の数学
mysql> SELECT date,time,panelVoltage,panelCurrent,batteryVoltage,loadCurrent
FROM registers
ORDER BY date,time
LIMIT 4;
+------------+----------+--------------+--------------+----------------+-------------+
| date | time | panelVoltage | panelCurrent | batteryVoltage | loadCurrent |
+------------+----------+--------------+--------------+----------------+-------------+
| 2016-11-27 | 17:20:41 | 26.04 | 1.31 | 25.15 | 0.72 |
| 2016-11-27 | 17:21:06 | 26.06 | 1.31 | 25.15 | 0.76 |
| 2016-11-27 | 17:21:32 | 26.06 | 1.15 | 25.16 | 0.6 |
| 2016-11-27 | 17:21:57 | 26.06 | 1.3 | 25.16 | 0.68 |
+------------+----------+--------------+--------------+----------------+-------------+
私は私が思うVIEWとしてパネルや負荷のためにワットの時間を計算したいと思いますので、それが最新の状態に保ちます。 (非常に)擬似コード:
SELECT (panelVoltage * panelCurrent) as panelWattage,
CONCAT(date, ' ', time) AS datetime
FROM registers ORDER BY datetime;
timeDiff = (currRow.datetime from prevRow.datetime)/3600 # for time decimal hours
powerSum = (currRow.panelWattage + prevRow.panelWattage)/2 # for average Wattage
Wh = timeDiff * powerSum # for Watt-hours
だから、ビュー/列がpanelWh
とloadWh
を保持し、多分それぞれの実行中の合計、panelWhSum
、loadWhSum
でしょう。
$qry = "SELECT CONCAT(date,' ',time) as datetime,loadCurrent,batteryVoltage,panelCurrent,panelVoltage,
panelCurrent * panelVoltage as 'panelWatt', loadCurrent * batteryVoltage as 'loadWatt' FROM registers
WHERE TIMESTAMP(`date`, `time`) > NOW() - INTERVAL ".$_GET['time']." MINUTE";
$result = mysqli_query($con,$qry);
$table = array();
$table['cols'] = array(
array('label' => 'datetime', 'type' => 'datetime'),
array('label' => 'panel Wh', 'type' => 'number'),
array('label' => 'load Wh', 'type' => 'number'),
array('label' => 'net Wh', 'type' => 'number')
foreach($result as $row){
$prevTime = $curTime;
$curTime = $datetime;
$prevPW = $curPW;
$curPW = $row['panelWatt'];
$prevLW = $curLW;
$curLW = $row['loadWatt'];
if ($i == 0) {
$prevTime = $datetime;
$prePW = $row['panelWatt'];
$preLW = $row['loadWatt'];
}
$diffInSeconds = $curTime->getTimestamp() - $prevTime->getTimestamp();
$panelWh = ($diffInSeconds * 0.5 * ($prevPW + $curPW)/3600);
$panelWhTotal = $panelWhTotal + $panelWh;
$loadWh = ($diffInSeconds * 0.5 * ($prevLW + $curLW)/3600);
$loadWhTotal = $loadWhTotal + $loadWh;
$temp[] = array('v' => (float) round($panelWhTotal, 2));
$temp[] = array('v' => (float) round($loadWhTotal, 2));
$temp[] = array('v' => (float) round(($panelWhTotal - $loadWhTotal), 2));
}
は、上記のPHPコードからの例をグラフ化: panel, load Watt-hours
そして、どのようにSQLでの訪問者の時間を計算するかを望んでいるようにグラフの何かをするために私を助けcolumns.It別々のデータと時間を持っていることを参照してください? I.あなたのカーブの下の領域で、ビジター時間にリソースがどれくらい使われましたか? – larvarunt
私はこの配列で24時間の勤務時間を設定しました。 – liontass
a = ["00:00"、 "01:00"、 "02:00"、 "03:00"、 "04:00"、 "05:00" 「06:00」、「07:00」、「08:00」、「09:00」、「10:00」、「11:00」、「12:00」、「13:00」、「14 「00:00」「15:00」「16:00」「17:00」「18:00」「 」「19:00」「20:00」「21:00」「22: 00 "、" 23:00 "]; – liontass