In einer der letzten Anleitungen wurde bereits ein Skript geschrieben, dass Funksteckdosen schaltet und den neuen Zustand in eine Datenbank schreibt (Zum Tutorial: Funksteckdosen per Internet schalten). Im heutigen Tutorial wird ein Skript erstellt, dass den aktuellen Zustand bzw. die aktuellen Zustände der Funksteckdosen abfragt und zurückgibt. Dieses Tutorial ist also eine Vorbereitung für die folgenden Tutorials, da dort unter anderem der aktuelle Wert einer Funksteckdose benötigt wird. Außerdem ist dieses Skript eine wichtige Schnittstelle für die Smarthome-App die bald programmiert wird. Damit du diesem Tutorial folgen kannst, solltest du zuerst diese Anleitungen lesen:
- Raspberry Pi: Die ersten Schritte
- Funksteckdosen schalten
- Datenbank anlegen & verwalten
- Funksteckdosen übers Internet schalten
Tabelle in der Datenbank erweitern
Um die Tabelle erweitern zu können, musst du in deinem Browser die folgende Adresse aufrufen:http://[IP DES RASPBERRY]/database/phpliteadmin.php
Skript für Abfrage der Zustände
Wie oben schon erwähnt, dient das Skript später auch als eine Schnittstelle für die Smarthome-App. Dabei wird es eingesetzt, um die Zustände der Funksteckdosen einzeln bzw. gruppiert abzufragen. Das Skript besteht aus 3 Blöcken:- Verbindungsherstellung mit Datenbank
- Vorgehensweise, wenn die Variable 'device' nicht definiert wurde
- Vorgehensweise, wenn sie definiert wurde
<?php
function getModes($room, $device, $db){
if($device==''){
//Daten des gesuchten Raumes aus der Datenbank laden
$results = $db->prepare("SELECT * FROM 'funksteckdosen' WHERE ROOM == :room");
$results->execute(array('room' => $room));
$modi = array();
foreach($results->fetchAll(PDO::FETCH_ASSOC) as $row){
$mode_item = array('device' => $row['DEVICE'], 'mode' => $row['ZUSTAND'], 'icon' => $row['ICON'], 'name' => $row['NAME']);
array_push($modi, $mode_item);
}
header('Content-type: application/json');
return json_encode(array('modi' => $modi));
}
else{
//Schaltzustand aus Datenbank laden
$results = $db->prepare("SELECT * FROM 'funksteckdosen' WHERE ROOM == :room AND DEVICE == :device");
$results->execute(array('room' => $room, 'device' => $device));
foreach($results->fetchAll(PDO::FETCH_ASSOC) as $row){
return $row['ZUSTAND'];
}
}
}
?>
Erklärung
Dem Skript werden 2 Parameter übergeben:- room: Der Raum, in dem sich die Geräte (bzw. das Gerät) befinden
- device (optional): Das abzufragende Gerät
Verwendung des Skripts
Das Skript kann später über eine Schnittstelle verwendet werden, die zur Programmierung der Android-App angelegt wird.Das Tutorial als Video
Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!