Das Schalten von Funksteckdosen ist eine sichere Variante, Geräte mit Netzanschluss durch Microcontroller oder Minicomputer, wie den Calliope mini, zu steuern. Die Grundlage liefern Sets aus Funksteckdosen, welche eigentlich mit der beigelegten Fernbedienung gesteuert werden sollen.
Mit einem Raspberry Pi oder Arduino ist das Schalten von 433 MHz-Sendern mit vorgefertigten Programmbibliotheken schnell erledigt. Für den Calliope mini sind diese Bibliotheken nicht verwendbar und mit dem graphischen Programmeditor Open Roberta Lab ist auch keine Einbindung externer Bibliotheken möglich. Daher war zunächst eine systematische Analyse notwendig.
HintergrundwissenHandelsübliche Funksteckdosen werden über ein 433 MHz-Funksignal gesteuert. Es wird hierbei vom Sender (z.B. der Fernbedienung) ein binäres Signal übertragen, welches vom Empfänger decodiert wird. Bei Übereinstimmung mit dem dort eingestellten Code, wird ein Relais geschalten. Die verwendete Codierung ist herstellerabhängig. Einige Marken teilen sich aber auch die gleiche Codierung. In unseren Projekten verwenden wir die Funksteckdosen Brennenstuhl RCS 1000 N, welche eine an der Steckdose einzustellende Codierung haben. Eine Übersicht zu verbreiteten Funksteckdosen und die Arten der Codierung ist im Wiki von FHEM zu finden.
Zur Übertragung eines 433 MHz-Signals gibt es sehr günstige Sender. Diese werden auch bei Anwendungen mit dem Raspberry Pi oder Arduino eingesetzt. Die Sender benötigen nur eine geringe Betriebspannung und haben einen Datenpin. Durch das Anlegen eines digitalen Signals an diesen Pin, wird das Signal im 433 MHz-Band gesendet. Um mit dem Calliope mini Steckdosen zu schalten, müssen wir also wissen, wie ein solches Signal aussieht. Zur Analyse habe ich piscope mit einem Raspberry Pi 3 verwendet.
Beim Schalten der oben genannten Steckdosen wird ein Signal mit einer Länge von 12 bit übertragen. Ein Bit ist für die Zustände 1 oder 0 codiert. Die Unterscheidung erfolgt auf Basis der Länge der high bzw. low-Zustände
0 high (ca. 400 μs) low ca. (1000 μs) high (ca. 1000 μs) low (ca. 400 μs)
1 high (ca. 400 μs) low ca. (1000 μs) high (ca. 400 μs ) low (ca. 1000 μs)
Die 12 bit beinhalten einen Hauscode (der in der Fernbedienung eingestellte Code), einen Gerätecode (wird mit Hauscode in der Steckdose eingestellt) und das Signal für An (10) oder Aus (01). Am Ende wird noch ein Synchronisierungssignal (einmal kurz high) als Zeichen für das Ende des Codes übertragen.
ZubehörFür das Projekt werden nur wenige Bauteile benötigt. Als Spannungsversorgung genügt die Betriebsspannung des Calliope mini. Dadurch kann das Batteriepack verwendet werden. Bei einer Versorgungsspannung von 5 V werden größere Reichweiten des Senders erzielt. Die Schaltung sollte dann ähnlich zur Relaisschaltung sein (Link zum Relaisartikel). Der Sender kann auch mit einer 17 cm langen Antenne (z.B.: Draht, Büroklammer o.ä.) ausgestattet werden, was eine spürbare Steigerung der Reichweite erzielt. Für die ersten Versuche ist das aber nicht notwendig.
Programmcode für FunksteckdosenDas Codebeispiel ist mit dem Open Roberta Lab erstellt worden. Es ist aber prinzipiell auch mit anderen Editoren umsetzbar, wenn diese Unterprogramme unterstützen. Im Open Roberta Lab werden Unterprogramme Funktionen genannt. Das Programm hat die Aufgabe, bei Betätigung der Taste A die Funksteckdose A anzuschalten. Bei Drücken der Taste B soll die Steckdose wieder ausgeschaltet werden.
Im Kopf des Algorithmus werden mehrere Unterprogramme definiert. Die beiden Funktionen kurz und lang haben die Aufgabe, den Calliope mini eine definierte Zeit pausieren zu lassen. Da der im Editor vorgesehene Befehl warten leider nicht die notwendige kurzen Pausen ermöglicht, habe ich die beiden Schleifen (enthalten lediglich die Erhöhung einer Platzhaltervariable um 1) genutzt, welche die Pausen von ca. 1000 μs (lang) und 400 μs (kurz) erzeugen. Die beiden Funktionen eins_ und null_ erzeugen an Pin 1 den jeweiligen Bit unter Nutzung der Unterprogramme für die Pulslänge. Die weiteren Funktionen enthalten die Bitfolge für den im Beispiel eingestellten Haus- und Gerätecode, die jeweiligen Codes für das An- oder Aus-Signal und die Synchronisierung.
Das Hauptprogramm selbst beinhaltet eine unendliche Schleife. Bei Drücken der Taste A am Calliope mini, werden die Unterprogramme für Haus- und Gerätecode, das Anschalten und das Synchronisieren aufgerufen. Der Platzhalter wird zurückgesetzt, um ein Überlaufen der Variable zu verhindern. Bei Druck auf B wird an entsprechender Stelle das Unterprogramm für das Ausschalten aufgerufen.
Wenn Ihr das Programm im Open Roberta Lab nachbaut solltet Ihr darauf achten die Unterprogramme vor dem Hauptprogramm anzuordnen, ansonsten wird ein Kompilierungsfehler ausgegeben.
Die Anpassung des Programms auf einen anderen Steckdosencode erfolgt in den Unterprogrammen hauscode und geraetecode.
Comments