Räume im Smarthome abfragen

Teile diesen Beitrag

In der nächsten Zeit wird mit der Programmierung einer Smarthome-App für Android-Geräte begonnen. Damit diese App nicht jedes mal umgeschrieben werden muss, wenn sich etwas am Smarthome ändert, werden manche Elemente, wie beispielsweise die vorhandenen Geräte, die vorhandenen Sensoren und auch die vorhandenen Räume nicht in der App festgelegt, sondern bei Bedarf vom Server abgefragt. Damit dies funktioniert, wird in diesem Tutorial eine Schnittstelle angelegt, über die die angelegten Räume abgefragt werden können. Die App erstellt dann dynamisch anhand des Ergebnisses des Aufrufs ein Menü, in dem alle Räume aufgelistet sind und aufgerufen werden können.

In einem der letzten Beiträge hast du bereits gelernt, wie du Sensorwerte in einer Datenbank speichern kannst. Falls du diesen Beitrag noch nicht gelesen hast, solltest du es jetzt nachholen, da dort die Datenbank-Tabelle „ROOMS“ erstellt wird, die in diesem Tutorial benötigt wird.

Das Skript der Schnittstelle

Das Skript, das die Daten zurückgibt, ist an sich nicht sonderlich kompliziert. Es fragt die angelegten Räume aus der Datenbank ab und erstellt ein JSON-Objekt, in das alle Daten eingefügt werden und gibt es schließlich aus.

Um das Skript anzulegen, erstellst du per FTP in deinem Server-Hauptverzeichnis eine Datei namens „getRooms.php“ in die du folgenden php-Code einfügst:

<?php

function getRooms($db){
	//Räume laden
	$results = $db->prepare("SELECT * FROM 'ROOMS'");

	$results->execute();

	$rooms = array();

	//JSON-Objekt erstellen und füllen
	foreach($results->fetchAll(PDO::FETCH_ASSOC) as $row){
		$room_item = array('name' => $row['NAME'], 'location' => $row['LOCATION']);
		array_push($rooms, $room_item);
	}

	//JSON-Objekt ausgeben
	header('Content-type: application/json');
	return json_encode(array('rooms' => $rooms));
}

?>

Funktionsweise des Skripts

Das Skript wird über eine Schnittstelle (wird bei Programmierung der Android-App angelegt) aufgerufen und du erhältst anschließend eine Ausgabe der vorhandenen Räume (Schlafzimmer, mit dem Raum-Key „bedroom“) im JSON-Format, die etwa wie das folgende Beispiel aussehen sollte:

{"rooms":[{"name":"Schlafzimmer","location":"bedroom"}]}

Wenn du Fragen oder Probleme zu diesem Tutorial hast, kannst du mir gerne einen Kommentar hinterlassen.

Dieses Tutorial als Video

Teile diesen Beitrag
, ,
Vorheriger Beitrag
Szenen anlegen im Smarthome
Nächster Beitrag
Datenserver mit RAID 1 auf dem Raspberry Pi

Ä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