Aufgrund des Aufbaus der App wird für die Programmierung dieser eine Funktion verwendet, mit der man alle Daten eines Raumes abfragen kann und dann ein Objekt erhält, in dem die Informationen zu den Steckdosen und ihren Zuständen, dem Vorhandensein von Szenen, der Heizungssteuerung (wird noch implementiert) und den vorhandenen Sensoren enthalten sind. Diese im grunde recht einfache Funktion wird im heutigen Tutorial angelegt.
Dieses Tutorial gibt es auch als Video
Daten mit Funktion abfragen
Um die Funktion anzulegen, erstellst du per FTP in deinem Server-Hauptverzeichnis die Datei "getRoomData.php", öffnest sie und fügst dort folgenden Code ein:<?php
function getRoomData($room, $db){
$roomdata = array();
$switchdata = json_decode(getModes($room, "", $db), true);
foreach($switchdata['modi'] as $switch){
if($switch['mode'] === "1"){
$mode = true;
}
else{
$mode = false;
}
array_push($roomdata, array('name' => $switch['name'], 'device' => $switch['device'], 'icon' => $switch['icon'], 'type' => "switch", 'value' => ($mode) ? 'true' : 'false'));
}
$sensordata = json_decode(getSensorData($room, "", "", $db), true);
foreach($sensordata['values'][0]['value_array'] as $sensor){
array_push($roomdata, array('name' => $sensor['shortform'], 'device' => $sensor['sensorart'], 'icon' => $sensor['sensorart'], 'type' => "value", 'value' => $sensor['wert']));
}
$scenedata = json_decode(getScenes($room, $db), true);
if(sizeOf($scenedata['scenes']) > 0){
array_push($roomdata, array('name' => "Szenen", 'device' => "scenes", 'icon' => "scenes", 'type' => "scenes", 'value' => ""));
}
//Heizungs-Item implementieren
return json_encode(array('roomdata' => $roomdata));
}
?>
Die Funktion zur Schnittstelle hinzufügen
Anschließend musst du noch die Schnittstelle ergänzen und die neue Funktion dort einfügen. Dazu öffnest du einfach die Datei "api.php" per FileZilla mit einem Editor und fügst die enstprechende include-Anweisung hinzu (Siehe Zeile 16) und danach im switch-Block den neuen case (Siehe Zeilen 53-56):<?php
//Datenbankverbindung herstellen
$SQLITEdb = "database/data.sqlite";
$db = new PDO("sqlite:".$SQLITEdb);
//Funksteckdosen
include "getModes.php";
include "setModes.php";
//Andere
include "getRooms.php";
include "getSystemInfo.php";
include "getSensorData.php";
//Dieser Punkt wurde hinzugefügt
include "getRoomData.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;
case "getmodes":
echo getModes($_POST['room'], $_POST['device'], $db);
break;
case "setmodes":
echo setModes($_POST['room'], $_POST['device'], $_POST['zustand'], $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;
case "getsensordata":
echo getSensorData($_POST['room'], $_POST['value'], $_POST['showeinheit'], $db);
break;
//Dieser Punkt wurde hinzugefügt
case "getroomdata":
echo getRoomData($_POST['room'], $db);
break;
}
}
function validateUser($username, $password, $db){
//wird noch implementiert
return true;
}
?>
Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!