Schnittstelle für Android App erstellen

31.08.2016

Smarthome Server, Tutorial

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.


Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!