Zustände der Funksteckdosen abfragen

Teile diesen Beitrag

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:

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

Dort klickst du im Haupt-Frame des Fensters bei der Tabelle “funksteckdosen” auf “Structure”, wie im Bild zu sehen.

Struktur der Tabelle bearbeiten.

Struktur der Tabelle bearbeiten.

Im neuen Fenster gibst du bei “Add 1 field(s) at end of table” eine 2 in das Textfeld ein und klickst anschließend auf “Go”.

Mit einem Klick auf "Go" gelangst du in Strukturmenü.

Mit einem Klick auf “Go” gelangst du in Strukturmenü.

Die beiden neuen Felder definierst du wie im Bild zu sehen:
Beide Felder haben den Typ “Text” und heißen “ICON” und “NAME”. Diese Felder werden ebenfalls später für die App benötigt, da im Feld “ICON” ein Key für das Bild des Gerätes abgelegt wird (also z.b. “licht”, wenn es sich um eine Lampe handelt), welche in der App angezeigt wird und im Feld “NAME” wird der Name des Gerätes abgespeichert, der ebenfalls in der App angezeigt wird.

Jetzt werden die Felder "ICON" und "NAME" definiert.

Jetzt werden die Felder “ICON” und “NAME” definiert.

Anschließend klickst du auf “Add fields”, um der Tabelle die Felder hinzuzufügen.

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

Um das Skript anzulegen, legst du im Hauptverzeichnis deines Servers eine Datei names ‘getModes.php’ an und fügst den folgenden Quellcode ein:

<?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

Wenn ‘device’ mit einem Wert definiert wird, so wird lediglich ‘1’ bzw. ‘0’ zurückgegeben – je nach Zustand des abgefragten Geräts. Wird ‘device’ stattdessen nicht definiert, so wird ein JSON-Objekt mit allen Zuständen, Namen, Keys und Iconkeys der Geräte des gesuchten Raumes zurückgegeben.

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

Teile diesen Beitrag
, , , ,
Vorheriger Beitrag
Datenbank: Sensorwerte speichern
Nächster Beitrag
Szenen anlegen im Smarthome

Ä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