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.

Über den Autor


Sascha Huber

Hallo, ich bin Sascha, der Gründer von Smarthome Blogger.

Mit einer Leidenschaft für Technologie und einem Hintergrund als Software Engineer habe ich 2016 Smarthome Blogger gegründet. Mein Ziel war es schon immer, innovative Lösungen zu entdecken, die unser Leben einfacher und intelligenter gestalten können. In meinem beruflichen Leben arbeite ich täglich mit Software und Technik, aber auch in meiner Freizeit bin ich stets auf der Suche nach neuen technischen Spielereien und Möglichkeiten, mein Zuhause zu automatisieren und zu verbessern.

Auf Smarthome Blogger teile ich mein Wissen, meine Erfahrungen und meine Begeisterung für alles rund um das Thema Smarthome.



Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!