04.10.2016
<?php
function getGraphData($room, $value, $von, $bis, $db){
if($von == $bis){
//Datum formattieren
$datum = date("d.m.y", strtotime($von));
return getDayData($room, $value, $datum, $db);
}
else{
return getDayMinMax($room, $value, $von, $bis, $db);
}
}
function getDayMinMax($raum, $value, $start, $ende, $db){
$dayseconds = 60 * 60* 24;
$dateS = strtotime($start);
$dateE = strtotime($ende);
$values = array();
while($dateS != ($dateE+$dayseconds)){
$current_values = getDayValues($raum, $value, date("d.m.y", $dateS), $db);
if(!empty($current_values)){
array_push($values, $current_values);
}
//Einen Tag vorrücken
$dateS += $dayseconds;
}
//Entsprechende Einheit aus Datenbank laden
$query = $db->prepare("SELECT * FROM 'ZWAVE_SENSOREN' WHERE RAUM == :room AND SENSORART == :value");
$query->execute(array('room' => $raum, 'value' => $value));
if($result = $query->fetch(PDO::FETCH_ASSOC)){
$einheit = $result['EINHEIT'];
}
return json_encode(array('values' => $values, 'einehit' => $einheit));
}
function getDayValues($raum, $value, $datum, $db){
$day_values = array();
$query = $db->prepare("SELECT * FROM 'SENSOR_DATA' WHERE ROOM == :room AND SENSORART == :value AND DATETIME >= :start
AND DATETIME < :ende ORDER BY DATETIME ASC");
$query->execute(array('room' => $raum, 'value' => $value, 'start' => $datum." 00:00", 'ende' => $datum." 23:59"));
foreach($query->fetchAll(PDO::FETCH_ASSOC) as $row){
$day_values[] = floatval($row['VALUE']);
}
if(max($day_values) == false && min($day_values) == false){
return null;
}
return array('max' => max($day_values), 'min' => min($day_values), 'date' => $datum);
}
function getDayData($raum, $value, $datum, $db){
$values = array();
$query = $db->prepare("SELECT * FROM 'SENSOR_DATA' WHERE ROOM == :room AND SENSORART == :value AND DATETIME >= :start
AND DATETIME < :ende ORDER BY DATETIME ASC");
$query->execute(array('room' => $raum, 'value' => $value, 'start' => $datum." 00:00", 'ende' => $datum." 23:59"));
foreach($query->fetchAll(PDO::FETCH_ASSOC) as $row){
$value_item = array('value' => floatval($row['VALUE']), 'time' => str_replace($datum." ", "", $row['DATETIME']));
array_push($values, $value_item);
}
$query = $db->prepare("SELECT * FROM 'ZWAVE_SENSOREN' WHERE RAUM == :room AND SENSORART == :value");
$query->execute(array('room' => $raum, 'value' => $value));
if($result = $query->fetch(PDO::FETCH_ASSOC)){
$einheit = $result['EINHEIT'];
}
return json_encode(array('values' => $values, 'einheit' => $einheit));
}
?>
<?php
//Datenbankverbindung herstellen
$SQLITEdb = "database/data.sqlite";
$db = new PDO("sqlite:".$SQLITEdb);
//Funksteckdosen
include "getModes.php";
include "setModes.php";
//Andere
include "getRooms.php";
include "getSensorData.php";
include "getSystemInfo.php";
include "getRoomData.php";
//Dieser Punkt wurde hinzugefügt
include "getGraphData.php";
//Szenen
include "scenes/getScenes.php";
include "scenes/runScene.php";
include "scenes/createScene.php";
$validUser = validateUser($_POST['username'], $_POST['password'], $db);
if($validUser){
switch($_POST['action']){
case "getrooms":
echo getRooms($db);
break;
//Dieser Punkt wurde hinzugefügt
case "getgraphdata":
echo getGraphData($_POST['room'], $_POST['value'], $_POST['von'], $_POST['bis'], $db);
break;
case "getroomdata":
echo getRoomData($_POST['room'], $db);
break;
case "getmodes":
echo getModes($_POST['room'], $_POST['device'], $db);
break;
case "setmodes":
echo setModes($_POST['room'], $_POST['device'], $_POST['zustand'], $db);
break;
case "getsensordata":
echo getSensorData($_POST['room'], $_POST['value'], $_POST['showeinheit'], $db);
break;
case "runscene":
echo runScene($_POST['room'], $_POST['name'], $db);
break;
case "createscene":
echo createScene($_POST['devices'], $_POST['rooms'], $_POST['types'], $_POST['values'], $_POST['conditions'], $_POST['room'], $_POST['name'], $db);
break;
case "getscenes":
echo getScenes($_POST['room'], $db);
break;
case "getsysteminfo":
echo getSystemInfo();
break;
}
}
function validateUser($username, $password, $db){
//wird noch implementiert
return true;
}
?>
Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!