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

Spam Kommentare sind sinnlos !
Vor der Publizierung wird jeder Beitrag auf Spam geprüft. Leider dauert es deswegen bis ein Kommentar sichtbar wird. Dafür erhält aber kein Subscriber Spam eMails.
Die eMail ist optional und nicht öffentlich sichtbar. Sie ist notwendig um eMail Benachrichtigungen zu Antworten auf Kommentare zu erhalten und wird u.U. genutzt um offline zu kommunizieren.

Spam comments are useless !
Any comment will be reviewed first and checked for spam. Unfortunately this delays the publishing of comments but will protect subscribers from spam.
eMail is optional and hidden and is required get update notifications for any comments and may be used to contact you offline


Kommentare   

0 #11 framp 2015-12-21 22:02
Moin tommy,

Du hast bereits im RaspberryPi Forum Dein Problem geschildert. Ich benutze immer noch Pilight V6 - kann Dir also bei Deinem Problem nicht weiterhelfen. Ich hoffe für Dich dass Dir im Forum jemand helfen kann.

Cu framp
Zitieren
0 #10 tommy 2015-12-21 20:30
Hallo zusammen,

Ich hab wie viele vor mir auch das Problem das mein GUI leer bleibt.
Glaubt mir das ich den ganzen links schon nachgegangen bin.

Scheinbar habe ich ein Grundsätzliches Problem.
Ich hab auch schon verschiedenste Config inhalte 1 zu 1 bei mir eingefügt. Die folge war das ich mein GUI nicht mehr erreicht hab.

Ist zustand ist Pilight 7

Hier der Inhalt meiner config.json:

Code:
{
"devices": {
"temperature": {
"protocol": [ "ds18b20" ],
"id": [{
"id": "011581ad82ff"
}],
"temperature": 19.562
}
},
"rules": {},
"gui": {"temperature": {
"name": "Temperature Sensor",
"group": [ "Misc" ],
"media": [ "all" ]
},
"settings": {
"log-level": 6,
"pid-file": "/var/run/pilight.pid",
"log-file": "/var/log/pilight.log",
"webserver-enable": 1,
"webserver-root": "/usr/local/share/pilight/",
"webserver-http-port": 5003,
"webserver-cache": 1
},
"hardware": {
"433gpio": {
"sender": 0,
"receiver": 1
}
},
"registry": {
"pilight": {
"version": {
"current": "7.0"
}
}
}
}







Ich muss dazu sagen das ich nur gefährliches halbwissen habe was das an geht, bin aber dabei mich da rein zu lesen da ich noch das ein oder andere Projekt verwirklichen möchte.

Jetzt aktuell versuche ich nur Temperatursenso ren (Ds18b20) aus zu lesen und mir die werte im GUI anzeigen lassen zu können. (Auslesen über Terminal läuft schon)

Ich hoffe jemand hat kurz geduld und schaut sich mein Problem mal an.

lg Tommy
Zitieren
0 #9 simi-chan 2015-05-10 22:42
Klar, kann ich verstehen.
Schon doof dass es bei dem Preis keine Testversion gibt.
Aber egal, das war ja eigentlich auch gar nicht mein vorrangiges Thema :D

Habe gelesen dass das rev Protokoll in den nightly's drin ist, hab das leider damit nich nicht hinbekommen, aber sieht denke ich gut aus dass es bei dem nächsten update wieder dabei ist. Hoffen wir's...

Gute Nacht!
Zitieren
0 #8 framp 2015-05-10 22:35
Moin simi-chan,

sieht wirklich gut aus. Aber € 9.99 zum Evaluieren ist mir einfach zu teuer. Aber vielleicht sind ja andere Leser bereit dieses zu zahlen. Jedenfalls ist Dein Hinweis auf die Seite sehr gut. Vielleicht entschliesst sich ja der Entwickler der App mal eine Evaluierungsver sion zu erstellen.

Cu framp
Zitieren
0 #7 simi-chan 2015-05-10 22:30
HuHu,

9,99€? Oh, da hatte ich echt weniger im Kopf, dachte es wären so um die 2-3 € gewesen... Klar, nur um sie auszuprobieren ist das enorm. Ist aber jeden cent wert!

Hier mal ein Screenshot meiner Fernbedienung:
https://dl.pushbulletusercontent.com/n1cUBVYMoLjkYhr4or80k1kI4WQK3KRl/Screenshot_2015-05-10-22-25-01.png
Mit dem "ncat Server" funktioniert das absolut reibungslos, drücke ich eine Taste wird die Aktion sofort ausgeführt, ohne irgendwelche hänger, ruckler oder verzögerungen.
Die Möglichkeiten sind finde ich enorm. Aber gut, theoretisch kann man sich ja auch eine Web-Fernbedienu ng selber basteln, die man auch anpassen kann, wie man lustig ist.

Hab gerade mal nachgesehen, als ich die App gekauft habe, hat sie noch 3,49€ gekostet...

LG
Zitieren
0 #6 framp 2015-05-10 22:21
Danke für die Links. Sieht flexibel aus. Allerdings finde ich € 9.99 für die App nur um sie auszutesten zu hoch :o Leider gibt es keine Evaluationversi on.
Zitieren
0 #5 simi-chan 2015-05-10 22:12
Ich meinte diese hier:

https://play.google.com/store/apps/details?id=com.luvago.netio

Auf dem Pi hab ich per ncat einen TCP Socket geöffnet, über den die App mit dem Pi kommunizieren kann.
Hatte dazu mal ein kleines Tutorial auf der Seite von NetIO gepostet:
http://netio.davideickhoff.de/de/projects/681

Für meine Lampen hab ich z.B. ein Foto der Lampe als Icon auf dem Button, wenn die Lampe aus ist ein Foto von der Lampe im aus-zustand und wenn sie an ist wird das Icon zum Foto der Lampe im an-zustand. Dazu speicher ich auf dem Pi bei jedem an- oder ausschalten den Zustand der Lampe in einer Datei, den die App dann abfragen und dementsprechend das richtige Icon zeigen kann.

LG
Zitieren
0 #4 framp 2015-05-10 22:06
Welche NetIO App meinst Du? Ich finde mehrere im Playstore... :sad:
Zitieren
-1 #3 simi-chan 2015-05-10 22:04
HuHu,

schade. Na dann mal sehen, vielleicht wird das Protokoll ja in einer späteren Version wieder hinzugefügt...

Klar, die Befehle tippe ich natürlich auch eher selten ein. Dafür benutze ich dann die NetIO App. Der Vorteil mit der App ist, dass man nicht nur die Lichter schalten kann, sondern auch sonst alles. Nen Button zum neustarten des Pi, einen um die DiskStation per wakeonlan zu starten, welche zum senden von Infrarotbefehle n, ...

Ich würde nicht mehr ohne diese App wollen ;)

LG simi-chan
Zitieren
0 #2 framp 2015-05-10 21:53
Moin simi-chan,

zitiere simi-chan:
... wie schaltest du jetzt die REV-Dosen?
Nicht mehr - aber ich würde es auch gerne wieder in V6 können. habe leider keine Lösung gefunden.

zitiere simi-chan:
Und wegen der App: Wozu braucht man die?
Ich benutze jetzt das pilight Webfrontend. Das reicht mir auch.

zitiere simi-chan:
... benutze die Befehle wie
sudo pilight-send -p rev1_switch -i E7 -u 0 --on
direkt. Bzw. mit einem kleinen Script,..
Klar geht das sehr gut auf der Konsole. Für Automation ist das auch der richtige Weg Aber wenn man schon im warmen Bett liegt und vergessen hat im Keller das Licht auszumachen möchte ich mich nicht erst bei der Pi per ssh anmelden um den Befehl einzutippen ;-)

Cu framp
Zitieren