Liebe Leserinnen und Leser – heute möchte ich euch mal beschreiben, wie ihr mithilfe des Raspberry Pi Funk-Steckdosen schalten könnt. Es gibt sicher einen Haufen praktischer Einsatzmöglichkeiten für diese Anwendung des Raspberry, ich selbst schalte damit meinen Drucker, der sich im Keller befindet ein und aus, da er auch im Standby einiges an Strom zieht und ich ungern für jeden Druck erstmal in den Keller laufen möchte, um ihn einzuschalten und dann wieder auszuschalten.
Aber jetzt zum Projekt selbst: Alles was ihr brauch sind folgende Dinge:
- einen Raspberry Pi
- einen 433MHz Sender (für 1,90 bei dx.com)
- ein paar Jumper-Kabel (gut 3€ bei dx.com) und bei Bedarf noch ein Breadboard (ca. 2,50 € bei dx.com)
- Funksteckdosen vom Typ Elro AB440S (die habe ich zumindest selbst getestet und im Einsatz)
Das ist hardwaretechnisch schon alles, was ihr dafür braucht, also relativ günstig zu bekommen. Der Aufbau der Hardware ist auch relativ simpel. Die folgende Skizze soll den Aufbau verdeutlichen:
Allgemein sieht die Verkabelung folgendermaßen aus:
Sender Raspberry Pi
ANT*
GND GND
DATA #17
VCC 5V
Der (zusätzliche) Antennen-Anschluss (ANT) ist das kleine Loch unten links auf dem Bild. Der Anschluss einer externen Antenne ist optional, da bereits eine auf dem Sender integriert ist (die Spule). Solltet ihr einen anderen Sender mit 433MHz verwenden, der keine integrierte Antenne besitzt (oder euch die Reichweite mit der internen Antenne nicht ausreichen), müsst ihr dort noch einen Jumper (oder ein leitendes Stück Draht) daran befestigen, das als Antenne fungiert. Damit lassen sich auch weiter entfernte Steckdosen steuern.
Das war es auch schon, was hardwaretechnisch zu tun ist, also alles relativ simpel, ohne Löten möglich und auch für handwerklich nicht so begabte Leute sollte das alles machbar sein.
Kommen wir nun zur Software. Hierzu müsst ihr erstmal euren Raspberry Pi starten, an dem alles wie oben beschrieben montiert wurde. Anschließen solltet ihr erst mal
sudo apt-get update
ausführen. Dadurch werden eure Paketquellen aktualisiert. Dann muss git-core installiert werden (falls nicht sowieso schon geschehen):
sudo apt-get install git-core
Um die Ansteuerung des Transmitters zu realisieren gibt es ein Projekt namens WiringPi. Dieses installiert ihr euch auf eurem Raspberry Pi wie folgt:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
Auch für unseren Zweck, die Steckdosen zu steuern gibt es bereits ein Projekt. Dieses stammt von xkonni und nennt sich Raspberry-Remote. Ihr installiert es euch so:
cd ~
git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
Damit es läuft, müsst ihr euch noch die send.cpp kompilieren, also folgendes eintippen:
make send
Das war es auch schon mit der Basis! Jetzt könnt ihr schon über das Terminal Befehle an eure Steckdosen schicken, um sie aus- und anzuschalten. Aber zuerst solltet ihr noch den Hauscode bei euren Dosen ändern, nicht, dass euer Nachbar zufällig auch diese Steckdosen hat und ihr euch diese gegenseitig an- und ausschaltet. Dazu öffnet ihr einfach mit einem Kreuz-Schraubendreher die Dosen hinten und legt die Dip-Schalter mit einem Code eurer Wahl um. Also z.B. hoch, hoch, unten, hoch, unten. Diese Kombination solltet ihr bei allen Steckdosen eingeben und dann auch bei dem Handsender. Mit diesem könnt ihr dann auch überprüfen, ob alles soweit schon funktioniert.
Falls dies der Fall ist, seid ihr kurz davor, eure Steckdosen erstmals über den Raspberry zu steuern. Über die gerade vorhin kompilierte send.cpp ist das möglich. Dazu gebt ihr einen Befehl nach dem Schema „sudo ./send <Hauscode> <Steckdosennummer> <Zustand 1 AN, 0 AUS>“ ins Terminal ein, also für den oben genannten Code für die Steckdose B (=2) zum Einschalten:
sudo ./send 11010 2 1
Jetzt sollte die Steckdose B angeschaltet werden. Falls dies der Fall ist: Herzlichen Glückwunsch!
Webinterface
Natürlich ist es etwas umständlich und unkomfortabel, das Ganze immer über das Terminal/eine SSH-Verbindung machen zu müssen. Aber kein Problem! Raspberry-Remote liefert auch gleich ein passendes Webinterface mit. Damit ihr das nutzen könnt, solltet ihr erst mal Apache und PHP installieren auf eurem Raspberry:
sudo apt-get install apache2
sudo apt-get install php5
Jetzt gehts zum Webinterface, was xkonni direkt mitliefert. Dazu habe ich im Ordner /var/www/html einen Unterordner remote erstellt. Anschließend den Inhalt von ~/raspberry-remote/webinterface dorthin verschoben: mv ~/raspberry-remote/webinterface/* /var/www/html/remote . Jetzt muss noch in der config.php Datei die IP Adresse des Raspberry Pis angepasst werden: dazu einfach nano verwenden.
[Update 2.11.2015] Hinweis: Die aktuell auf GitHub erhältliche Version des Webinterfaces von raspberry-remote machte bei mir Probleme, sodass ich auf diese ältere Version zurückgriff. Solltet bei euch die neue Version auch nicht funktionieren, könnt ihr die oben verlinkte, etwas ältere Version versuchen. Läuft die aktuelle Version bei euch, könnt ihr diese natürlich auch verwenden.
Nun fehlt noch der Daemon, auf den das PHP-Script des Webinterfaces zugreift. Dazu gehen wir in das Raspberry-Remote Verzeichnis zurück: cd ~/raspberry-remote und kompilieren den daemon: make daemon
Nun können wir diesen Starten: sudo ./daemon & (Das & bewirkt, dass der Prozess im Hintergrund läuft.
Jetzt können wir unser Glück mit dem Webinterface probieren: Dazu rufen wir von einem anderen Rechner/Handy das Webinterface per http://192.168.11.44/remote/ (Eure IP einsetzen) auf. Wenn das geht und dort die verschiedenen Steckdosen sichtbar sind, dann muss man jetzt nur noch in der config.php die Steckdosen mit Namen versehen und evtl. die Codes, etc. anpassen. Die Konfiguration sollte selbsterklärend sein.
Falls ihr eine Fehlermeldung wie „Switch out of range: GET /:XY“ bekommt, keine Sorge! In der daemon.cpp sind standardmäßig nur die Hauscodes 00000 & 00001 & 00010 abgedeckt. Das lässt sich aber einfach ändern. Geht dazu wieder ins Verzeichnis von Raspberry Remote (bei mir /home/pi/raspberry-remote/, also via cd /home/pi/raspberry-remote/) und öffnet die daemon.cpp mit nano. Darin befindet sich der Eintrag „nPlugs=10;“, welche ihr einfach durch „nPlugs= 1110;“. Anschließend über sudo make daemon neu kompilieren und über sudo ./daemon & wieder starten. Jetzt sollte auch bei euch das Webinterface funktionieren.
Automatischer Start des Daemon und Neustart bei Absturz
Um den Daemon automatisch bei Systemstart zu starten und um ihn bei einem möglichen Absturz neu zu starten, habe ich ein kleines Script geschrieben:
1 2 3 4 5 6 7 | #!/bin/bash # Check if daemon_remote running if ! ps aux | pgrep "daemon_remote" > /dev/null; then cd /home/pi/raspberry-remote/ ./daemon_remote & exit 0 fi |
Zur Verwendung: Zuerst sollte der daemon umbenannt werden in daemon_remote. Dazu die Datei „daemon“ (in /home/pi/raspberry-remote/) nach dem Kompilieren und vor dem Starten umbenennen: sudo mv daemon daemon_remote. Anschließend das obige Skript unter der Datei „daemon_restart.sh“ z.B. unter /home/pi/ abspeichern und über sudo chmod +x daemon_restart.sh ausführbar machen. Um es automatisiert zu starten legt ihr noch 2 Einträge in der root-crontab an via sudo crontab -e Dort diese Zeilen einfügen (einfach untern anhängen, je eine eigene Zeile):
1 2 | @reboot cd /home/pi/ && ./daemon_restart.sh */15 * * * * cd /home/pi/ && ./daemon_restart.sh |
Anschließend speichern und den Pi neu starten. Der Daemon sollte nun automatisch gestartet werden und zudem wird alle 15 Minuten überprüft, ob er noch läuft. Wenn nicht, wird er neu gestartet.
Für Raspbmc-Nutzer: Standardmäßig ist cron hier nicht aktiviert. Ihr müsst es in den Raspbmc-Einstellungen aktivieren, um es nutzen zu können! (Danke Christian!)
Alternative Webinterfaces
Interface von Dan
Dan hat in den Kommentaren (siehe hier) ein Paket bereitgestellt, das ein schöneres Design für das Webinterface bietet – danke dafür! Sicherheitshalber habe ich es auch auf den Blog-Webspace hochgeladen. Es sieht so aus:
Im Paket fehlen aus Lizenzgründen die Switch-Button-Bilder, welche ihr noch nachträglich ergänzen müsst. Da hier Sprites verwendet werden, lässt sich das Interface auch schnell den eigenen Design-Vorstellungen anpassen. Hier meine aktuelle Ansicht, die ich damit realisiert habe:
Zur Nutzung zitiere ich hier mal Dans Kommentar:
Am besten sicherheitshalber die index.php und das CSS backuppen und erst dann alle Dateien aus dem ZIP drüberbügeln.
Die Dateien “ie.css” und “logo_sd.png” sind für Windows Phone 7-Geräte, die aufgrund des alten Internet Explorers nicht mit Retina-Grafiken umgehen können.
Der on/off-Schalter befindet sich in einem Sprite mit den Maßen 106x174px. Die obere Hälfte des Sprites ist der “on”-Zustand, die untere “off”. Das müsstet ihr leider selbst basteln. Auch hier gibt es für WP7 eine Non-Retina-Version “on_off_sd.png” mit der halben Auflösung. Wer nur Android und/oder iOS benutzt, kann sich das sparen.
Interface von Matteo
Matteo hat in den Kommentaren eine Version des Webinterfaces gepostet, das sowohl vom Design angepasst wurde, als auch technisch um eine Login-Funktion erweitert wurde. Ihr könnt es via Github mit oder ohne Passwort-Funktion beziehen. Hier 2 Screenshots davon (der erste Zeigt die Desktop-Ansicht des Webinterfaces und die zweite die mobile Ansicht [sprich Smartphone]):

Interface für eBook-Reader
Um auch von Schwarz-Weiß-eBook-Readern die Steckdosen bequem steuern zu können habe ich ein kontrastreiches Interface für diese Geräteklasse erstellt. Dieses habe ich bisher auf dem Kobo Glo sowie einem Kindle 5 erfolgreich getestet. Ob es auch auf den Browsern von anderen Lesegeräten und Herstellern korrekt angezeigt wird, weiß ich allerdings nicht, die Browser sind meist auch nur als Beta-Feature in den eBook-Lesegeräten aufgeführt. Die .css-Datei hier habe ich möglichst simpel gehalten und auch die Schrift sollte auf den meisten Lesegeräten funktionieren. Ihr könnt es hier herunterladen. Für die Installation macht ihr am Besten einen eigenen Ordner auf eurem Webserver, z.B. über mkdir /var/www/html/remotebook und kopiert die Heruntergeladenen Dateien dort hinein. Um auf dem Lesegerät schnell darauf zugreifen zu können, empfiehlt es sich (wenn möglich), ein Lesezeichen zur entsprechenden Adresse zu setzen.
Siri-Proxy
Achtung! iOS 7 und neuer funktionieren mit SiriProxy nicht! Siri-Proxy sollte allerdings weiter mit Geräten mit iOS 6 und älter funktionieren, sodass ich diesen Teil noch im Tutorial behalte.
[Update 27.08.2015] Ich habe gerade einen Artikel zur Steuerung über Apples HomeKit verfasst. Das funktioniert auch mit den Funksteckdosen.
Wer seine Steckdosen mit iOS 7 aufwärts per Sprachsteuerung schalten möchte, kann das nach dieser Anleitung machen, in der beschrieben wird, wie ihr Sprachsteuerung und Widget für iOS einrichtet.
Wem selbst das Webinterface noch zu kompliziert ist (oder wer lieber redet statt zu tippen und zu klicken), der kann die Steuerung auch in Siri integrieren. Das funktioniert auch ohne Jailbreak und ist eine tolle Sache – leider auch etwas komplizierter. Zum Glück gibt es aber auch dafür schon Anleitungen und fertige Projekte im Netz, sodass sich der Aufwand in Grenzen hält. Realisieren lässt sich das Vorhaben durch siriproxy, den ihr auf dem Raspberry installieren könnt. Dazu müssen erst mal ein paar neue Pakete installiert werden:
1 | sudo apt-get install openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libc6-dev ncurses-dev subversion libxslt1.1 libxslt-dev xvfb build-essential autoconf libgdbm-dev libncurses5-dev automake libtool bison libffi-dev |
Anschließend führt ihr Folgendes aus:
sudo curl -L https://get.rvm.io | bash -s stable --ruby
Das kann einige Zeit dauern. Lasst den Befehl einfach laufen und gönnt euch eine Tasse Kaffee oder Tee. Wenn der Befehl durchgelaufen ist, tippt folgendes ein:
1 | echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc |
Anschließend:
echo 'export PATH=$HOME/.rvm/bin:$PATH' >> ~/.bashrc
dann:
. ~/.bashrc
dann:
rvm install 2.0.0
dann:
rvm use 2.0.0 --default
dann:
gem install siriproxy
dann:
mkdir ~/.siriproxy
Anschließend sollte siriproxy an sich schon installiert sein auf eurem Raspberry Pi. Damit ihr den Dienst auch auf eurem iOS-Gerät nutzen könnt, müsst ihr euch noch ein Zertifikat generieren lassen:
siriproxy gencerts
Dieses liegt nun im oben generierten Ordner .siriproxy. Ihr lönnt es nun z.B. auf einen USB-Stick kopieren oder es euch direkt vom Raspberry per Mail schicken. Die benötigte Datei heißt „ca.pem“. Am einfachsten ist es wie gesagt sie euch einfach selbst per Mail zu schicken und die Mail dann auf eurem iOS gerät öffnen. Tippt auf eurem iOS-Gerät auf das Zertifikat und installiert es. Jetzt müsst ihr nur noch am iPad bei den WLAN-Einstellungen den DNS-Server ändern. Das geht selbsterklärend. Fügt vor eurem aktuellen (primären) DNS-Server einfach die IP-Adresse eures Raspberry Pi ein. Jetzt noch schnell den Flugmodus an- und ausschalten (damit die neuen WLAN-Einstellungen auch übernommen werden).
Jetzt ist es an der Zeit, siriproxy auf dem Raspberry zu starten:
siriproxy bundle
rvmsudo siriproxy server -d IP_ADRESSE_VOM_RASPBERRY
Wenn alles glatt gelaufen ist, solltet ihr die Meldung „SiriProxy up and running“ erhalten. Wenn das der Fall ist, startet Siri auf eurem iOS-Device und sagt „Test Siri Proxy“. Wenn Siri nun „SiriProxy is up and running“ antwortet, habt ihr alles richtig gemacht! Glückwunsch!
Nun könnt ihr euch daran machen, die Steuerung der Steckdosen in SiriProxy zu integrieren. Leider haben die Tutorials, die ich im Netz dazu gefunden habe bei mir nicht so funktioniert, wie erwünscht. Letztendlich habe ich aber trotzdem eine relativ simple Methode gefunden, eigene Befehle in SiriProxy zu integrieren. Dazu wechselt ihr erstmal das Verzeichnis:
1 2 3 4 | cd /home/pi/.rvm/gems/ruby-2.0.0-p247/gems/siriproxy-0.5.4 cd plugins cd siriproxy-example cd lib |
Darin befindet sich eine Datei namens „siriproxy-example.rb“. Diese nun mit sudo nano öffnen. Fügt darin folgende Zeilen ein:
1 2 3 4 5 6 7 8 9 10 11 | listen_for /drucker einschalten/i do say "Okay, Drucker wird eingeschaltet!" request_completed system("sudo /home/pi/raspberry-remote/./send 11010 1 1") end listen_for /drucker ausschalten/i do say "Okay, Drucker wird ausgeschaltet!" request_completed system("sudo /home/pi/raspberry-remote/./send 11010 1 0") end |
Die Codes solltet ihr noch anpassen, falls ihr andere gewählt habt. Auch die Befehle und Antworten könnt ihr nach Belieben anpassen. Achtet nur darauf, dass bei dem listen-Befehl nur Kleinbuchstaben verwendet werden dürfen. Dann die Datei wieder speichern. Anschließend müsst ihr siriproxy neu starten:
siriproxy bundle
rvmsudo siriproxy server -d IP_ADRESSE_VOM_RASPBERRY
Testet nun an eurem iOS-Gerät, ob alles so funktioniert, wie ihr es wolltet. Falls ja, müsst ihr nur noch siriproxy laufen lassen auf eurem Raspberry. Leider ist das gar nicht so einfach, da siriproxy beendet wird, wenn ihr die ssh-Verbindung zum Raspberry schließt. Nach langem Ausprobieren und vielen frustrierenden – weil nicht funktionierenden – Versuchen, habe ich eine einfach Möglichkeit gefunden, siriproxy weiter laufen zu lassen. Das Ganze habe ich über tmux realisiert. Dazu erst einma tmux installieren:
sudo apt-get install tmux
Anschließend tmux starten. Dann gebt ihr wieder
rvmsudo siriproxy server -d IP_ADRESSE_VOM_RASPBERRY
ein. Jetzt sollte siriproxy gestartet sein. Dann könnt ihr die SSH-Sitzung schließen. Nun wieder eine SSH-Verbindung aufbauen und „tmux attach“ eingeben. Ab jetzt solltet ihr die SSH-Sitzung wieder schließen können und siriproxy sollte auch weiterhin laufen.
Das wars auch schon! Von nun an könnt ihr dank des Raspberry Pi eure Geräte einfach via Terminal, Webinterface oder Siri ein- und ausschalten.
Ich hoffe, ich konnte euch alle Schritte gut erklären und wünsche gutes Gelingen! Falls ihr noch Fragen oder Anregungen habt, immer her damit! Auch wenn ihr Fehler findet, könnt ihr diese im Kommentarfeld posten.
Ich habe mir am Wochenende einmal das Webinterface vorgenommen und umgestyled. Das Ergebnis könnt ihr hier sehen:
Ein vollständiges Paket kann ich aufgrund fehlender Bildrechte am on/off-Button leider nicht zur Verfügung stellen. Falls dennoch Interesse besteht, schnüre ich gerne ein ZIP mit allen Dateien abzüglich der Grafik.
Hi Dan!
Würde mich sehr über das Paket freuen! Die mitgelieferte Weboberfläche ist ja wirklich nicht so schön ;)
LG
@Dan
Würde mich auch riesig über das schönere Interface freuen, die Grafik kann sich dann ja jeder selber machen :)
@Dan, ich würde mich ebenfalls sehr über das Interface freuen. Viele Grüße Chris
Hi Dan,
auch ich würde mich freuen, wenn ich das ganze packet eventuell bekommen könnte, das ganze sieht echt klasse aus, ich habe es selber versucht mir eine bilddatei selber zu erstellen, aber irgendwie stelle ich mich zu blöd an, wenn es nicht mit dem packet klappt, dann kann mir bestimmt jemand mal helfen, danke im voraus.
ach übrigens, das ganze hier ist ein erstklassiges tut, damit habe ich es geschafft das ganze fertig zu machen, bin aber neben bei noch daran, eine eigene app für android fertig zu machen, wer eventuell interesse hat, dem kann ich gerne mal den einen oder anderen screenshoot zukommen lassen.
lg holgi
hier könnt ihr euch das mal anschauen, an dem layout wird noch gearbeitet:
http://www.ostholstein-airsoft.de/screen/screenshot.png
Hi Holger,
finde die Idee mit der eigenständigen App super! Ist das dann eine native Android-App oder via PhoneGap o.ä. realisiert?
Hallo,
Würde mich sehr über das Paket freuen!
M.f.G.
Rollo
Soo, sorry für die Verspätung über Ostern, aber hier ist nun das Paket:
http://www59.zippyshare.com/v/81091418/file.html
Am besten sicherheitshalber die index.php und das CSS backuppen und erst dann alle Dateien aus dem ZIP drüberbügeln.
Die Dateien „ie.css“ und „logo_sd.png“ sind für Windows Phone 7-Geräte, die aufgrund des alten Internet Explorers nicht mit Retina-Grafiken umgehen können.
Der on/off-Schalter befindet sich in einem Sprite mit den Maßen 106x174px. Die obere Hälfte des Sprites ist der „on“-Zustand, die untere „off“. Das müsstet ihr leider selbst basteln. Auch hier gibt es für WP7 eine Non-Retina-Version „on_off_sd.png“ mit der halben Auflösung. Wer nur Android und/oder iOS benutzt, kann sich das sparen.
Viel Spaß mit dem neuen Interface, ich hoffe, ihr kommt damit zurecht!
@Alex Du kannst das Paket gerne mit aufnehmen und hosten, falls es bei zippyshare irgendwann abläuft.
Vielen Dank, Dan! Ich habe den Artikel entsprechend ergänzt.
Das Webinterface lässt sich mit den Sprites wirklich sehr einfach den eigenen Bedürfnissen anpassen, das gefällt mir sehr gut!
Dankeschön, funktioniert super und sieht wirklich gut aus!
Vielen Dank für das Tutorial -> hat auf Anhieb geklappt.
Das einzige was ich noch zusätzlich gemacht habe, ist eine Antenne mit 17cm angelötet.
Eine Frage zum Webinterface. Ich möchte, dass ein Gerät nach 60 Minuten wieder automatisch ausgeschalten wird.
Beim Einschalten eines Gerätes, wird ein File mit der ID des Gerätes in einem Verzeichnis angelegt. Per cron wird jede Minute auf das Alter dieser evtl. existierenden Datei abgefragt und wenn diese älter als 60 Minuten ist, entfernt und die entsprechende Funkdose ausgeschaltet.
Das Anlegen des Files funktioniert in PHP mit touch() tadellos.
Aber: Wo muss ich diese Zeile im index.php einfügen? Ich schaffe es nicht, dass nur das File für das gerade aktivierte Gerät angelegt wird …
danke
Michi
Moin Michi,
leider verstehe ich gerade nicht ganz, was schon funktioniert an deinem Vorhaben und was nicht.
Aber zu deinem Anliegen generell: Wäre es keine Alternative für dich, die eingebaute delay-Funktion zu nutzen? Das müsste sogar schon ohne Code-Anpassung klappen, wenn du 2 zusätzliche Klicks in Kauf nimmst ;)
Hallo zusammen,
ich habe das Webinterface nochmal ein wenig überarbeitet und eine Loginfunktion eingebaut. Das Passwort kann als MD5-Hash in der password.php Datei eingefügt werden.
Hier ist die Github Quelle:
https://github.com/scapecoder/smartcontrol-web
Hier ein Screenshot (Mobil):
http://uload.pics/image/s2
Noch ein Screenshot (Desktop):
http://uload.pics/image/sJ
Wer will, kann sich das ja mal runterladen,
Viel Spaß damit!
Anleitung:
sudo apt-get install git-core
cd /var/www
git clone git://github.com/scapecoder/smartcontrol.git
Hi Matteo,
gefällt mir sehr gut! Ich werde das auch gleich mal im Artikel verlinken, könnte für den einen oder anderen User hier durchaus interessant sein! :)
Schöne Grüße!
Hallo Matteo / Alex,
das „passwortgesicherte Webinterface“ ist meiner Meinung nach etwas dürftig umgesetzt, was die Sicherheit anbelangt, da die Datei „passwort.php“ den Hash des Passwortes ausgibt, wenn man sie aufruft. Dieser kann über Hash-Datenbanken oftmals recht einfach in ein Passwort umgewandelt werden. Ich würde das Webinterface besser über htaccess etc. absichern ;)
Hallo zusammen,
sehr wahrscheinlich stelle ich hier eine saudumme Frage,
aber wie lautet denn der Nutzername wenn ich mich bei SmartControl anmelden möchte ?
Die password.phh habe ich mit einem MD5 Hash Generator geändert.
Vielen Dank im voraus.
MfG Alarius
Super Projekt :) Funktioniert einfach, und das finde ich klasse ;)
Aber eine Frage hätte ich, gibt es die Möglichkeit, für eine einzelne Steckdose einen Shutdownbefehl an nen Raspi zu schicken, bevor die Steckdose schaltet?
Hintergrund: Hab an eine Funksteckdose meine Anlage und nen Pi gehängt, und jetzt hätte ich halt gerne, dass der Pi erst runterfährt, bevor die Steckdose schaltet :P
Wenn dir dazu was einfällt, meld dich einfach, wäre echt super :)
Hi DeadRabbit,
also soll der Pi sich quasi selbst den „Saft wegziehen“?
Das dürfte technisch unmöglich sein, da der Pi nach einem shutdown ja keinen send-Befehl mehr ausführen kann. Die einzige Möglichkeit, die sowas ohne Zusatzhardware (2ter Pi, Arduino etc.) ermöglichen würde, wäre eine Funksteckdose mit eingebauter „delay“-Möglichkeit, sprich das Signal kommt an der Steckdose an, aber sie schaltet erst zeitverzögert. Ob es sowas gibt, weiß ich nicht.
Wenn diese Funktion wichtig wäre, könnte man evtl. einen Aruino zum Schalten einsetzen, der batteriebetrieben funktioniert, oder für den Pi ein USV nutzen (gibt es ja mittlerweile einige Modelle).
Hallo Alexander,
könntest Du mir auf die für euch banale Frage
eine Antwort geben ?
Vielen Dank
MfG Alarius
Hi Alarius,
sorry für die verspätete Antwort – hab deinen Kommentar wohl übersehen.
Zu der Frage: Da kann ich dir im Moment leider nicht weiterhelfen, da ich mein Interface nicht Passwort-geschützt habe. Am Besten du wendest dich via GitHub an den Entwickler (über die „issues“-Funktion in Github möglich).
@ Alexander
Danke für Deine Antwort.
Ich habe mich mal an den Entwickler gewendet.
MfG Alarius
Hi, sehr cool es tutorial, hat alles geklappt, vielen dank. Eine Frage habe ich aber noch. Kann ich die schaltbefehle in URL zerlegen? Ich bekomme das irgendwie nicht hin das es wie in diesem tutorial via browsereingabe geschaltet werden kann. Wenn das klappen würde könnte via ifttt und dropboxuploader vom raspberry die Steckdosen zeitlich programmiert geschaltet werden.
Ich wäre für eine Antwort sehr dankbar.
Tim
Quelle für das tutorial// ich bekomme es aber nicht zum laufen.
http://www.pcwelt.de/ratgeber/Funksteckdosen_mit_dem_Raspberry_Pi_einrichten-Schalten___walten-8655824.html
Hi Tim,
das verlinkte Tutorial nutzt auch das Webinterface, das ich genutzt habe. Es sollte eigentlich problemlos funktionieren, die einzelnen Steckdosen über die URLs zu steuern. Was mir spontan auffällt: In dem Beispiel auf der von dir verlinkten Seite ist nach „group=“ ein Leerzeichen. Das gehört da nicht hin. Ohne das Leerzeichen funktioniert es über die URL-Eingabe bei mir problemlos – das ist ja auch genau das, was der Klick auf einen der Buttons zum Schalten bewirkt.
hi Alexander,
danke für die Antwort. Bedeutet das in deinem/meinem Fall:
http:///remote/index.php?group=11010&switch=01&action=1
also remote anstelle funk, richtig?und 1 bedeutet „an“
http:///remote/index.php?group=11010&switch=01&action=0
und action=0 bedeutet „aus“?
ich denke nämlich das ich das so getestet habe, ohne Funktion.
was ich nicht gemacht habe war:
„Wenn der Dämon auf dem selben Raspberry Pi läuft wie der Webserver, setzen Sie
$target=$_SERVER[‚SERVER_ADDR‘] “
das werde ich noch machen…aber danke für die Rückmeldung das es aber generell zu funktionieren scheint.
Tim
Hi Tim,
ja, das stimmt soweit eigentlich alles. Bei „$target“ habe ich die IP von meinem RPi direkt eingetragen, da ich ihm eine feste gegeben habe, also „$target = ‚192.168.11.12‘;“. Geht denn das Webinterface bei dir ansonsten? Normalerweise zeigt Firefox am unteren Rand die Adresse an, an die ein Link weiterleitet. Wenn ich über einen Button fahre bekomme ich so auch die Adresse „http://192.168.11.12/remote/?group=11010&switch=01&action=1“ als Beispiel. Diese kann ich natürlich auch direkt im Browser eingeben.
Hi Alexander,
ah ok, das scheint ein guter Hinweiß zu sein, ich teste das mal mit firefox.
das setting ist bei mir z.z. das ich via tablet die weboberfläche aufrufe. dann klappt alles wunderbar. nur die auflösung in einzelne links scheint nicht zu klappen. ich guck mir mal die firefox-geschichte näher an.
die „$target = “ nummer habe ich bisher nicht gemacht, ich dachte das wäre nur notwendig wenn der daemon auf einer anderen maschine läuft.
bis hierhin danke, ich werde das mal alles testen, jetzt weiss ich zumindest mal das es bei mir theoretisch funktioniert.
Tim
Hallo,
wollte mal auch das Beispiel probieren.
Unter Wheezy und Putty komme ich bis
git clone git://git.drogon.net/wiringPi
hier bekomme ich
cloning into ‚wiringPi’…
fatal:unable to connect to git.dragon.net
git.drogon.net[0:195.10.226.169]: errno=Connection refused
git.drogon.net[1: 2a00:ce0:2:feed:beef:cafe:0:3]: errno=Address family not suppted by protocol
Was kann ich da tun ?
Peer
Hi Peer,
habs gerade selbst mal getestet und bekomme den gleichen Fehler. Vermutlich gibt es gerade ein Problem mit dem repository.
Du kannst die Dateien aber manuell herunterladen (über snapshots), wie das funktioniert beschreibt Gordon auf seiner Seite (http://wiringpi.com/download-and-install/) unter Plan B.
Danke Alexander,
damit schmeisst es ein Tutorial,
denn … nun muss ich lesen wie ich das in den Raspi
lade, ob es dann an richtiger Stelle steht bzw, wo es hin muss …
Wenn ich das nämlich könnte/wüsste brauchte ich kein Tutorial.
Auch die Hinweise auf der Seite
„Note that the numbers and letters after wiringPi (98bcb20 in this case) will probably be different – they’re a unique identifier for each release.“
Welches Release brauche ich nun ?
Das oberste ? Ok, wäre nur wie laden und wohin.
Vielleicht kannst Du da nochmal einspringen.
Vielen Dank für den Hinweis
Peer
Hi Peer,
das oberste ist das aktuellste Release. In aller Regel sollte das genommen werden.
Hast du keine grafische Oberfläche auf dem Pi am Laufen, kannst du es dir via wget runterladen – also „wget -O wp.tar.gz „https://git.drogon.net/?p=wiringPi;a=snapshot;h=05e2f67e7f43d83195fff108bcd952e7afe917ce;sf=tgz““
Dann entpacken (tar xfz wp.tar.gz ) und den anderen Anweisungen folgen.
Wohin du es herunterlädst ist egal, ich würde es ins Home-Verzeichnis laden – so wie in meiner Anleitung. Also via „cd“ ins Home-Verzeichnis wechseln und von dort den wget-Befehl und alles Weitere ausführen.
Vielen Dank Andreas,
nun bin ich durch und sehe die roten Button
am Android Handy.
D.h. konnte mich per SmartPhone anmelden und schalten.
An der Konsole natürlich auch.
Der Hinweis auf nPlugs= 1110 zu ändern langt nicht für das darüber stehende 11010 Beispiel.
nPlugs= 11111 um alle 5 Stellen abzudecken, geht nicht.
Vielleicht bekomme ich noch einen Tipp dazu.
Danke für die tolle Hilfe
Peer
Das wird auch noch, danach geht es an die
optisch „schönere Weboberfläche“.
Lässt sich wiringPi so konfigurieren, dass die an/aus-Befehle länger gesendet werden? Hin und wieder schalten die Steckdosen erst nach mehreren Versuchen. Ich vermute, das ließe sich beheben, indem das Signal einfach etwas länger geschickt wird.
Hi Dan,
mit wiringPi habe ich mich noch nicht so intensiv beschäftigt, aber in der c’t wurde bzgl. dieses Problems auch vorgeschalgen, den Schaltbefehl öfter abzusetzen. Quick&Dirty-Lösung wäre eine kleine Schleife für die Send-Befehle zu bauen, die bei einem Klick auf den Button ausgelöst wird.
Als erstes würde ich jedoch versuchen den Sender mit einer Antenne auszustatten und/oder ihn an 5V anzuschließen.
@Peer: Doch, das mit den nplugs stimmt so, habe es selbst bei mir so im Einsatz. Was bekommst du denn für einen Fehler?
Guten Tag!
Hat schon jemand von euch einen „Taster“ realisiert?
Also keinen „An-Aus-Schalter“ sondern nur einen „2-Sekunden-An-Schalter“ z.B. für ein Garagentor oder eine Beamerleinwand.
Moin!
Könntest Du mal ’nen Schaltplan machen? Ich hab‘ keinen blassen Schimmer, wie die Breadboards intern verschaltet sind und finde den Griff zum Lötkolben irgendwie intuitiver…
Danke :D
Hi,
du kannst da einfach nach den Farben gehen. Löten wäre auch eine Option, noch einfacher wären female-female-Jumperkabel.
Hallo,
tolles Tutorial!
Bei mir hat es zunächst auf Anhieb funktioniert, mit einem 434MHz RF Link Transmitter Typ TWS-BS-3 (ohne integrierte Antenne) von Amazon und schon älteren Funksteckdosen Marke „Comag“.
Zu Peer: nPlugs= 11111 hat bei mir funktioniert.
Zwei größere Probleme:
die Sache funktioniert nur über WAN (Internet), nicht intern im Hausnetz.
nach einem Neustart des Raspberry geht es nicht mehr, der Server wird nicht gefunden! Muß außer dem Daemon noch etwas gestartet werden?
Hallo Bernhard,
das Webinterface funktioniert also nicht im Hausnetz? Klingt für mich wie eine Firewall-Geschichte oder eine Portsperre im Router.
Zum Neustart: Nein, es reicht den Daemon neu zu starten. Hat bei mir nach div. Stromausfällen immer problemlos geklappt.
Hallo Alexander,
vielen Dank für den Hinweis. Das Problem hat sich jetzt insofern erledigt, als ich jetzt die Funksteckdosen mit der gleichen Hardware über FHEM ansteuere.
Ich habe ein seltsames Problem mit einer meiner Funksteckdosen bzw. einem der Kanäle: Wenn die Funksteckdose in der Mehrfachleiste fürs Heimkino steckt, lässt sie sich per Pi zwar an, aber nicht oder nur nach mehreren Versuchen wieder ausschalten.
Das passiert scheinbar nur auf einer bestimmten Kanal-Buchstaben-Kombination, dann mit einer Austausch-Funksteckdose habe ich dasselbe Verhalten. Der Pi steht 20cm daneben und schaltet die anderen Steckdosen (selber Kanal, andere Buchstaben) in der Mehrfachleiste problemlos.
Über die normale Fernbedienung funktioniert das Ausschalten übrigens problemlos. Ich werde daraus nicht schlau. Gibt es hierfür aus elektrotechnischer Sicht eine Erklärung/Lösung?
Hallo zusammen,
Dies ist ein klasse Tutorial. Es funktioniert auch soweit fast perfekt. Ich habe leider noch ein kleines Problem mit dem On-Off-Sprite. Ich habe mir mittlerweile mal eines erstellt und dieses auch „on_off_sd.png“ benannt, doch leider funktioniert dies nicht.
Kann mir mal jemand kurz erklären, wie man ein funktionierendes Sprite erstellt und dieses hier einsetzt.
Vielen Dank im Voraus für eure Hilfe
Hallo Rainer,
ich kann dir mal schnell mein Sprite anbieten, vll hilft dir das weiter: http://abload.de/img/on_off_sdsaj14.png
Hallo Alexander,
vielen Dank für dein Sprite. Wenn ich dies hernehmen darf, dann würde ich es gerne tun, denn das gefällt mir noch viel besser als mein Erzeugtes, wo ich leider eine etwas doofe Verschiebung reingebracht hatte.
Mittlerweile funktioniert das Sprite auch wunderbar, hatte wohl ein Problem mit meinem Raspberry und meiner style.css-Datei, denn nach erneutem Austausch der Datei funktionierte es auch.
Nochmals vielen Dank!
Hallo Rainer,
ja klar kannst du das gerne verwenden. Die Ränder sind allerdings nicht sauber geglättet bei den Kreisen, was v.a. bei dunklem Hintergrund etwas auffällt. Werde mir demnächst u.U. noch eine Grafik mit entsprechender Kantenglättung erstellen (kann ich dann hier posten).
Schön, dass es nun bei dir klappt!
Hallo zusammen,
waran liegt es, dass ich nur den Hauscode 00001:(1-5) schalten kann, jedoch nicht darüber hinaus (z.B. 00011:1-5)
Sprich ich kann derzeit nur 5 Steckdosen bedienen.
Danke für Eure Hilfe im Voraus
Gruß Heiko
Hi,
sprichst du hier vom Webinterface oder vom send-Befehl aus dem Terminal?
Guten Tag,
erstmal ein Lob für das super Projekt…
Bei mir gibt es leider ein Problem. Ich kann die Funksteckdose mit dem „Send“ Befehl manuell schalten
( ./send 11100 5 1 ), jedoch funktioniert es nicht über die Homepage.
Ich liege doch richtig, in der config.php die send addresse zu ändern?
hab ich irgendwas vergessen ??
Ich hoffe Ihr könnt mir weiterhelfen damit ich das Problem schnell lösen kann :(
Grüße
Hallo Jack,
danke für das Lob :)
Zu deinem Problem:
Hier mal meine entsprechende config.php zum Vergleich:
Falls es mit diesem Schema noch nicht klappt: Was erhältst du für eine Fehlermeldung (direkt auf der Seite bzw. im Apache-Log)? Läuft der Daemon?
VG
Hi leute,
als erstes einmal Lob an den Verfasser ;-)
Nun zu meine frage, wie bekomme ich den Inhalt der Weboberfläche mittig zentriert?
Vielen Dank.
Beste Grüße
Marcus
=====================
Zusätzlich benutze ich die PHP und CSS Files von @Dan.
Jedoch finde ich dort keine Delayauswahl.
Wie kann ich dies her holen?
Vielen Dank.
Hi,

auch wenn es kein guter Stil ist: Ich habe die entsprechenden Elemente mit dem HTML „<center>“-Tag zentriert. Sprich nach „<body>“ ein „<center>“ eingefügt und vor „</body>“ das Tag mit „</center>“ wieder geschlossen. Alternative wäre die .css-Datei entsprechend anzupassen.
Zu der Delayauswahl: Einfach nach der foreach-Schleife in der Datei index.php sowas eintragen wie:
Die gewünschte Minutenzahl einfach anpassen.
Hi,
vielen Dank. Das Zentrieren funktoniert bestens :-)
Das Einbinden der Verzögerung war auch kein Problem, jedoch ist Sie leider ohne Funktion =/ Habe den Code nach der foreach-Schleife eingefügt. Wie bereits geschildert nutze ich die index.php von @ Dan.
Außerdem suche ich derzeit ein Funk-Lichtschalter (Unterputz), welcher mit der Konstellation funktoniert. Für jeden Tipp bin ich sehr dankbar :-)
Grüße Marcus
Hi,
um mein Problem detalierter zu beschreiben. Ich Klicke auf eine Verzögerung von Beispiel 15 Minuten. Link in der Eingabeleiste ändert sich entsprechend um in „adresse/index.php?delay=15“. Anschließend auf Klicke ich auf ein Gerät und es ändert sich die Adresse in „adresse/index.php?delay=0“ und das Gerät geht sofort an.
Bitte um Hilfe.
Vielen Dank :-)
Hi Marcus,

ich glaube, ich habe den Fehler gerade entdeckt ;)
Habe das mit der Verzögerung bei mir selbst nie ausprobiert, daher ist es mir bislang nicht aufgefallen. Kanns leider gerade nicht testen, aber ich denke, es reicht in der if-Schleife „if (strlen($output) >= 8) {“ das „header(„Location: index.php“);“ in „header(„Location: index.php?delay=$nDelay“);“ zu ändern.
Zudem muss in der foreach-Schleife „foreach($config as $current) {“ bei den echos noch die entsprechende Änderung vorgenommen werden, das sollte dann so aussehen:
Normalerweise müsste der delay-Parameter dann übertragen werden.
Sorry für die Verwirrung ;)
Hallo zusammen!
Gibt es schon Neuigkeiten zu SiriProxy? Würde nämlich gerne die Sprachsteuerung unter iOS 7 nutzen.
Danke!
Hi,
leider nein. Ich fürchte fast, das wird nichts mehr mit iOS 7 aufwärts :(
Wie sieht es mit der Möglichkeit aus einen vorhandenen typischen Wand-Lichtschalter mit einer Funksteckdose aufzumotzen? Also so als Wechselschaltung einbauen, d.h. dass jederzeit über Funksteckdose UND Lichtschalter die Deckenlampe gesteuert werden kann :)
Gibt es da eine Möglichkeit? Viele Switches die man dazwischen hängen kann arbeiten nicht mit LED Deckenlampen :(
Hi,
erstmal: Mega geile Anleitung!
Alles geklappt, Steckdosen klicken eifrig per Webinterface.
Ich habe hier noch zwei Steckdosen des Typs Rev 008342 rumliegen.
Hat jemand eine Ahnung, ob/wie ich die ansprechen kann?
Gruß
Hi Chris,
schön, dass die Anleitung geholfen hat :)
Zu deinen anderen Steckdosen: Ich würde mein Glück mal mit pilight versuchen. Bei den unterstützten Protokollen sind auch Rev-Dosen 3-mal aufgeführt. Ich denke, die Chancen stehen recht gut, dass sich auch deine Dosen damit schalten lassen.
VG
Danke, bin bei weiterer Suche aber selbst noch auf eine weitere Anleitung gestoßen:
https://blog.codecentric.de/en/2013/03/home-automation-with-angularjs-and-node-js-on-a-raspberry-pi/
Besonders interessant für mich ist der Abschnitt „rcswitch-pi“, wo ein Download zu finden ist, in dem das Script „sendRev“ enthalten ist, das ganz ähnlich zu „send“ genutzt werden kann. Habe das Script einfach in den anderen Ordner geschoben und kann es nun nutzen. Klappt nur nicht ganz mit dem Webinterface, da der Daemon offenbar ein Problem mit der Status-Abfrage (oder grundsätzlich?) hat. Habe das jedenfalls mal überbrückt, allerdings kann ich mit meinen momentanen Einstellungen nur eine Rev-Dose nutzen, da ich nicht weiß, ich ich die Status-Abfrage bewerkstelligen soll.
Hi Chris,
rcswitch bildet auch die Grundlage für das von mit verwendete „raspberry-remote“. Der Grund, warum das mit dem Daemon damit nicht funktioniert, ist, dass der Daemon rein für die Elro-Codierung geschrieben wurde (und nur Teil des Projekts „raspberry-remote“ ist). Um das Webinterface für die Rev-Dosen mittels eines Daemon hinzubekommen, müsstest du die Dateien entsprechend anpassen und dann neu kompilieren (Programmierkenntnisse vorausgesetzt).
Alternativ kannst du dir auch ein einfaches PHP-Webinterface basteln, in welches du die Shell-Befehle zum an/ausschalten über „shell_exec“ einträgst.
Hi,
die Ähnlichkeit habe ich gleich gesehen.
Habe mal jemanden auf die Änderung angesetzt, der sich damit auskennt und das klappt nun alles einwandfrei.
Da ich das selbst nicht machen konnte, kann ich leider auch nicht sagen, welche Änderungen nun im Einzelnen vorgenommen wurden.