
Schnittstelle für Android App erstellen
Um die Sensorwerte abfragen und in die Datenbank eintragen zu können, wurde in einem der letzten Tutorials (Zum Tutorial: Sensorwerte in Datenbank speichern) bereits ein kleiner Teil der Schnittstelle angelegt, die auch von der Smarthome App verwendet wird, die bald programmiert wird. Diese Schnittstelle wird heute noch ein wenig ausgebaut, damit der Programmierung der App nichts mehr im Wege steht.
Das Video zum Tutorial
Die Schnittstelle
Verbinde dich per FTP mit deinem Server und öffne im Serverhauptverzeichnis die Datei „api.php“.
Dort fügst du nun zum vorhandenen Include die folgenden Includes hinzu:
//Funksteckdosen include "getModes.php"; include "setModes.php"; //Andere include "getRooms.php"; include "getSystemInfo.php"; //Szenen include "scenes/getScenes.php"; include "scenes/runScene.php"; include "scenes/createScene.php";
Und zum switch-Block die folgenden Cases:
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;
Deine Schnittstelle sollte jetzt in etwa so aussehen:
<?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"; //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 "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; } ?>
Erklärung des Skriptes
Im oberen Teil des Skriptes werden per „include“-Anweisung die einzelnen Module geladen. Weiter unten wird mit einer if-Abfrage geprüft, ob die Logindaten des Nutzers korrekt sind und ob er über die benötigten Berechtigungen verfügt. Im switch-Block wird je nach gewünschter Aktion die entsprechende Methode ausgeführt und der Rückgabewert ausgegeben.