Bei mir liegen diverse ungenutzte 433 MHz Steckdosenschalter rum und was liegt da näher als die per Android App sowie per Programm mit einer Raspberry Pi zu steuern. Damit kann man dann diverse Dinge schalten wie Beleuchtungen, Kaffeemaschinen, PCs und was einem sonst noch so einfällt. Wenn man im Netz zu diesem Thema sucht wird man erschlagen mit Hits. Daraus dann die passende Lösung zu finden ist nicht leicht. Wichtig ist für mich eine Android App zu haben um die Schalter zu steuern sowie Programme auf der Pi starten und stoppen zu lassen. Ich habe mich deshalb entschieden pilight dazu zu benutzen. Die notwendige Hardware dazu ist wenig und schnell auf ein Breadboard zu stecken. Dieses habe ich dann noch mit einem Breakout Expansion Kit verbunden. Pilight bietet eine fertige Android App sowie ein fertiges Webfrontend zum Steuern und kann nach belieben Schalter diverser Hersteller einbinden sowie auch beliebig Programme auf der Pi starten und stoppen, die bestimmt Aufgaben erledigen. Beide sind sehr einfach aufgebaut aber sie erfüllen vollkommen ihren Dienst.

Der folgende Beitrag enthält Links zu Webseiten, die alle notwendigen Informationen zum Aufbau enthalten sowie Dinge, auf die man aufpassen muss sowie Links zu meinen server- und config json Dateien zum download.

 

Die folgenden Quellen habe ich genutzt

sweetpi.de - Die Verkabelung

forum.raspberry-pi.de

raspberry.tips

pilight installation

 

Meine Hardware besteht aus

Aukru 433 MHz Funk- Sende und Empfänger Modul Superregeneration Wireless Transmitter-Modul 433MHzSenderEmpfaenger2

DeLock ISM 433 MHz Antenna - Antenne - 3 dB 433MHzAntenne2

 

Recht schnell klickte der erste 433 MHz Schalter per pilight-send. Damit man eine gewisse Reichweite hat sollte noch ein Kupferdraht von 17.3 cm Länge (Lambda/4) als Antenne angeschlossen werden. Die piligight-config.json, die man benötigt um alle Schalter per Android App oder auch das Webfrontent zu steuern, brauchte leider länger.

Etwas tricky ist die Konfiguration von pilight, da das in Konfigurationsdateien vorgegommen werden muss, die der json Syntax gehorchen müssen und syntaktische Fehler in den Konfigurationsdateien sofort zu Abbrüchen führen. Die syntaktischen Fehler kann man mit dem JSONLint herausfinden. Allerdings gibt es auch speziellen syntaktische Unterschiede bei den jeweiligen Schaltern, die benutzt werden. Z.B. habe ich unterschiedliche Schalter von unterschiedlichen Herstellern und die pilight Protokolle, die die Hersteller unterstützen, benutzen leider nicht immer dieselbe Syntax. Im konkreten Falle habe ich einen Schalter, der - mit pilight-receive - als poolin Protokoll erkannt wurde und in dem id Parameter tauchten systemcode und unitcode als weitere Parameter auf. Dagegen verlangt das Protokoll rev1_switch, dass die semantisch selben Parameter von id den Namen id und unit haben müssen. Es hat estwas gedauert bis ich das rausgefunden habe. Letzendlich habe ich mir den Quellcode von rev1_switch angesehen woraus eben genau dieser kleine Unterschied erkennbar war. Auch muss man aufpassen, dass manche Parameterargumente Zahlen sind und manche eine Zeichenkette, die in " eingeschlossen werden muessen.

Aufpassen muss man, wenn man die pilight-config.json ändert. Da diese Datei benutzt wird um den aktuellen Status zu sichern muss man erst das pilight stoppen und dann die Datei ändern.

Bei der Verkabelung des Senders und Empfängers sollte man immer berücksichtigen, dass die GPIOs der Pi nur 3.3V verkraften, die Sender und Empfänger je nach Modell aber bis zu 12 V vertragen. Damit wird zwar die Reichweite der beiden Komponenten erhöht - aber die Pi definitiv zerstört, wenn keine Pegelwandler eingesetzt werden. Speziell, da am GPIO auch 5V ausgeführt werden kann das sehr schnell zu Pi Verlusten führen. Der Einsatz eines einfachen Multimeters schützt davor.

Nachdem alle Schaltdosen soweit gesteuert werden konnten zeigt sich aber, dass die Reichweite nicht bis in alle Ecken ausreichte. Deshalb habe ich die o.g. 433MHz Antenne angelötet und damit dann ohne Probleme alle Ecken erreicht. Beim Anlöten an den kleinen Sender muss man aufpassen, dass man keinen Antennenkurzschluss durch das Anlöten des Antennenkabels erzeugt. Man sollte den Stecker von der Antenne abkneifen und die Seele sowie die Abschirmung in ausreichender Länge freilegen und die Schirmung nach hinten rausführen und entsprechend isolieren. Dann die Seele von hinten an den Sender in das Antennenlock stecken und von vorne anlöten. Die isolierte Schirmung kann man dann hinten an den GND Pin des Senders löten.

Meine beiden Konfigurationsdateien stehen hier als Beispiele für V5 zum Download zur Verfügung:

settings.json

config.json

 In der V6 ist alles in einer config.json zusammenzufassen. Leider hat sich auch die Semantik etwas geändert und Definitionen sind in andere Sektionen verschoben worden. Die Änderungen im Einzelnen:

1) Alles steht jetzt nur noch in einer config.json
2) Die devices section nimmt nur noch den Teil auf, der die Geräte mit ihren Protokollen beschreibt.
3) Die GUI Definitionen aus der device Sektion wurden ausgelagert in die neue GUI Sektion. Damit muss man nun leider an zwei verschiedenen Stellen was für ein Gerät definieren. Wichtig ist, dass immer derselbe Name des Gerätes benutzt wird, damit die Zuordnung hergestellt werden kann.
4) Die Hierarchie von GruppenName->OrtName wurde von der devices Section verlagert in die GUI Sektion: Der GruppenName (z.B. Stockwerk) ist der groupname Parameter und der GeräteName ist der name Parameter (z.B. Flur Schalter 1, Flur Schalter 2).  Geräte, die in einer Gruppe sein sollen, müssen den gleichen Gruppennamen haben (d.h. die Flurschalter 1 und 2 müssen in derselben Gruppe Erdgeschoss definiert sein)

configv6.json

Leider funktioniert die pilight app mit der V6 nicht mehr. Der Entwickler der pilight App hat hier signalisiert, dass er es vielleicht nicht mehr anpassen wird. Je mehr Leute Interesse an der App in dem Thread bekunden desto eher wird er sicherlich auch die App für V6 anpassen. Also posted was das Zeug herhält :-) 

Kommentar schreiben
Hinweis:
Die eMail ist versteckt und nicht öffentlich sichtbar. Sie wird benutzt um über neue Kommentare zu informieren.