Infolge der Kodierung klappt es nicht so einfach, eine neue Zeitperiode einzutragen. Vielmehr gilt es, zuerst den aktuellen Zustand der Dose abzufragen, die Hex-Zahlen passend zu manipulieren und anschließend den kompletten String wieder zurückzuschicken.
Ist der RasPi der alleinige Herr der Steckdose, entfällt die Abfrage – vorausgesetzt, der Mini-PC merkt sich den aktuellen Status. Für das Festlegen eines Reboot-Zeitpunkts gelingt es sogar noch einfacher: Die Steckdose steht in der Regel auf ON (der Zeitplan enthält nur eine Zeichenkette aus F). Vor dem Herunterfahren berechnet der RasPi den Zeitraum bis zum nächsten Boot-Vorgang und setzt dafür die Werte auf 0. Nach dem nächsten Booten löscht der RasPi die Nullen dann wieder.
Steuer-Software
Bei Github gibt es diverse Projekte, die sich mit dem Steuern von Edimax-Steckdosen autark von der Cloud des Herstellers beschäftigen. Eine einfache Python-Klasse gibt es online [2], eine C#-Version ebenfalls [3]. Da die Python-Klasse aber nur das An- und Abschalten unterstützt, laden Sie am besten das Projekt des Autors [4] herunter. Diese Bibliothek besteht aus verschiedenen Klassen und unterstützt alle Funktionen der Steckdose. Der Kasten “Ediplug installieren” beschreibt die Installation.
Listing 5 zeigt ein paar Beispiele. Da die Edimax SP1101W ihre IP-Adresse per DHCP erhält, spürt das Programm die Dose zuerst im lokalen Netz auf (ab Zeile 6). Normalerweise sucht der PlugFinder das gesamte eigene Subnetz ab und findet so alle unterstützten Steckdosen. Eine Bedingung dafür: Alle Steckdosen verwenden dasselbe Passwort.
Um die Suche abkürzen, füttern Sie den PlugFinder mit Zusatzinformationen – etwa einem IP-Adressbereich, einer Liste von Namen oder der maximalen Anzahl an Plugs, die die Klasse zurückgibt (Zeilen 9 bis 11). Alternativ, wenn Sie die IP-Adresse kennen, erzeugen Sie die Instanz des Plug-Objekts direkt.
Die Methoden des Plug-Objekts fragen Informationen der Edimax-Dose ab oder ändern deren Zustand. Zeile 16 liefert eine Map mit allen Informationen zum System. Das Skript schaltet anschließend die Steckdose an (Zeile 19), wartet zehn Minuten und schaltet sie wieder aus (Zeile 21). Bei diesem Beispiel sollte der RasPi nicht an der geschalteten Steckdose hängen.
Verwaltet der RasPi als alleiniger Herr die Steckdose und speichert er einen eigenen Zeitplan, dann genügen schon diese beiden Befehle, um die Edimax SP1101W komplett zu steuern. Autark führt die Dose aber in diesem Szenario keine Schaltvorgänge aus.
Listing 5
#!/usr/bin/python import time from ediplug import * pf = PlugFinder(password='1234') plugs = pf.search() #plugs = pf.search(network='192.168.2.100-192.168.2.120') #plugs = pf.search(maxCount=1) #plugs = pf.search(plugnames=['plug1','plug2']) plug = plugs.values()[0] #plug = plugs['plug1'] info = plug.getSystemInfo() print info['Device.System.Name'] plug.setPowerState(active=True) time.sleep(600) plug.setPowerState(active=False)
Ediplug installieren
Zur Installation klonen Sie zunächst einmal das Github-Projekt [4] des Autors mithilfe des Befehls aus der ersten Zeile von Listing 6. Anschließend kopieren Sie die Python-Bibliothek in einen Pfad, in dem Python nach Paketen sucht (Zeile 2 und 3). Dann installieren Sie ein paar benötigte Python-Pakete (Zeile 4 und 5). Raspbian “Jessie” benötigt nur die beiden oben aufgeführten Pakete, auf anderen Plattformen fehlt vielleicht noch python-requests. Die korrekte Installation testen Sie mit dem folgenden Kommando:
$ samples/testinstall.py
Hat sich die Steckdose ins Netz eingebucht, überprüfen Sie die Kommunikation mittels des folgenden Befehls:
$ samples/powerstate.py -p 1234
Achten Sie darauf, dass Sie das Passwort gegebenenfalls anpassen. Aus Ihren eigenen Programmen heraus laden Sie die Bibliothek mit dem folgenden Einzeiler:
from ediplug import *
Eine Übersicht über die Klassen und Methoden der Bibliothek finden Sie in der Dokumentation zum Paket (README.md).
Listing 6
git clone https://github.com/bablokb/ediplug.git cd ediplug/src sudo cp -a ediplug /usr/local/lib/python2.7/dist-packages sudo apt-get update sudo apt-get install python-netaddr python-netifaces
Wake on RTC
Die Zeilen 11 bis 20 aus Listing 7 zeigen den ursprünglichen Fall: Der Raspberry Pi programmiert hier das Abschalten in fünf Minuten und das Einschalten der Dose in einer Stunde (Zeilen 11 bis 13 und Zeile 17). Anschließend löst er den eigentlichen Shutdown mit dem Befehl in Zeile 20 aus.
Das Umsetzen der Zeitspanne ohne Strom erledigt die Python-Klasse. Der Code ab Zeile 24 läuft direkt nach dem Booten (etwa gestartet aus der Datei /etc/rc.local) und löscht vorsorglich alle Zeitpläne.
Unabhängig von diesem Beispiel hält die Klasse eine Reihe von weiteren Methoden bereit, wie etwa setRange(from,to,active=true). Diese Methode trägt eine Zeitspanne neu ein beziehungsweise löscht diese, ohne die existierenden Pläne zu löschen. Das ermöglicht, die Steckdose analog zur App für das Smartphone zu bedienen. Da die Edimax SP1101W die Daten speichert, gelingt sogar das Steuern sowohl mit dem RasPi als auch mit der App.
Listing 7
#!/usr/bin/python
import time
from ediplug import *
pf = PlugFinder(password='1234')
plugs = pf.search()
plug = plugs.values()[0]
# Strom aus in fünf Minuten, Strom an in einer Stunde
now = TPoint.now()
shutdownTime = now.createAfter(0,0,5)
bootTime = shutdownTime.createAfter(0,1,0)
# Programmieren der Zeitschaltuhr in der Dose:
# nur zwischen shutdownTime und bootTime gibt's keinen Strom
plug.setExclusiveState(shutdownTime,bootTime,active=False)
# System herunterfahren, bevor der Strom ausgeschaltet wird
os.system("sudo shutdown now")
# ----------- Nach dem Boot, etwa aus /etc/rc.local -------------
# pf = PlugFinder(password='1234')
# plugs = pf.search()
# plug = plugs.values()[0]
# plug.clearSchedule()
Fazit
Dank des Raspberry Pi nutzen Sie die Edimax SP1101W ganz ohne Überwachung und Kontrolle durch den Hersteller. Das ist nicht nur eine Frage des gesunden Misstrauens: Es kommt bekanntlich immer wieder einmal vor, dass ein Hersteller einen Cloud-Service einfach abschaltet und dadurch Hardware die Funktion verliert. Hier sorgt der RasPi für eine gewisse Sicherheit in Bezug auf die Investition.
Wer auf die Administration der Steckdose aus der Ferne nicht verzichten will, nutzt zähneknirschend die Smartphone-App. Als Alternative kommt das Steuern über eine SMS an den RasPi infrage – eine entsprechende Lösung haben wir Ihnen bereits in der vorigen Ausgabe vorgestellt [5].





