Alle Daten eines Raumes abfragen

Teile diesen Beitrag

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;
}
 
?>

Falls du Fragen oder Probleme hast, kannst du mir gerne einen Kommentar hinterlassen.

Teile diesen Beitrag
, , , , , ,
Vorheriger Beitrag
Schnittstelle für Android App erstellen
Nächster Beitrag
Smarthome App #1: Projekt erstellen & erste Schritte

Ähnliche Beiträge

Menü

Wir nutzen Cookies, um dir passende Inhalte zu präsentieren und dein Surfvergnügen zu optimieren, aktivieren Cookies aber erst, wenn du auf akzeptieren klickst. Weitere Informationen

Wir benutzen Google Analytics, um zu ermitteln, welche Inhalte unsere Besucher sehen wollen und welche nicht. Eingebettete YouTube-Videos helfen dir mittels Cookies nur die Videos zu sehen, die du sehen willst.

Schließen