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 bin es nochmal. Mittlerweile läuft das alles bei mir super. Hast du Alex vielleicht noch eine Möglichkeit, mit der man einen „Alles aus“ Knopf einbauen kann?
Hallo Timo,
im Prinzip sollte das auf 2 Arten relativ einfach machbar sein:
Beides habe ich aber noch nicht implementiert, das erstere sollte aber am einfachsten sein, da nur eine Funktion geschrieben werden muss, die alle Requests nacheinander ausführt (mit den Daten aus der config.php), der zugehörige Button ist sicher auch schnell in HTML eingebungen.
Ich hab mir als Zusatz für die Funksteckdosen jetzt einen Funkeinbauschalter von Intertechno besorgt. Leider hat dieser keine DIP Schalter sondern Drehschalter. Kann man diesen trotzdem irgendwie, am besten natürlich über das Webinterface, schalten?
Danke und Grüße
Bob20
Hallo Bob20,
mir hat für Intertechno-Codes diese Seite immer sehr geholfen. Damit lassen sich die Codes i.d.R. einfach in Elro-Codes umrechnen, hat bei meinen Dosen bisher immer geklappt. Sollte das Schalten über den send-Befehl klappen, dürfte das auch im Webinterface über die config.php integrierbar sein.
Hallo Alexander,
ich habe das Tutorial durchgearbeitet und das Webinterface von Matteo installiert. Ich kann auch das Interface aufrufen, PW Eingabe funktioneirt auch, allerdings bekomme ich die Meldung „Could not bind to socket“ und die Steckdosen werden nicht angezeigt. Meine config.php habe ich wie folgt geändert:
$source = $SERVER[‚192.168.192.60‘];
$target = $SERVER[‚192.168.192.60‘];
$port = 11337;
in der daemon.cpp habe ich bereits nPlugs=10 und nPlugs=1110 ausprobiert, das macht keinen Unterschied. Über den send Befehl im Terminal kann ich die Steckdosen bereits ansteuern. Das Script zum automatischen Ausführen des daemon hab ich auch gemacht, das funktioniert auch. An was kann es liegen? Wie ging das nochmal um den Port zu ändern, ich hatte ja schonmal deine Hilfe benötigt (damals mit der gleichzeitigen Verwendung von Plex)?
Vielen Dank für deine Hilfe.
Gruß Michael
Hi Michael,
probier mal in der config.php die Variablen source und target auf „
$_SERVER['SERVER_ADDR']
“ zu setzen.Um den Port von Apache zu ändern, sollte es reichen in der /etc/apache2/ports.conf die Einträge
zu ändern in Portnummern deiner Wahl und anschließend Apach neu zu starten („sudo service apache2 restart“).
Hi,
also wenn ich source und target auf $_SERVER[‚SERVER_ADDR‘] ändere, dann werden die Namen angezeigt. Allerdings passiert nichts, wenn ich drauf klicke. Wenn ich den Port ändere (in der ports.conf, und in der 000-default.conf und in der config.php) dann lädt das interface nicht mehr richtig, manchmal wird nur „Smartcontrol“ angezeigt, manchmal lädt gar nichts.
Ich habe die IP-Adresse des RasPi über meinen Router fest vergeben, also keinerlei Anpassungen dort gemacht, kann da der Fehler liegen? Wie gesagt, über den send-Befehl in der Konsole kann ich die Steckdosen ja ansteuern. Der RasPi hängt über LAN am Router, der PC von dem ich es versuche über WLAN am selben Router.
Gruß Micha
Hi Micha,
ändert sich denn der Zustand der Buttons, wenn du darauf klickst?
Ansonsten würde ich mal einen Blick in den Apache Log werfen (/var/log/apache2/error.log).
Hi Alex,
nein der Zustand ändert sich nicht, die Buttons bleiben immer grau. Hier ist der Error Log von Apache (nachdem ich die Einstellungen wieder wie folgt geändert habe: source und target auf „$_SERVER[‚SERVER_ADDR‘]“ $port = 11337 , Ports in Apache2 auf 80):
[Wed Mar 30 22:37:10.113522 2016] [mpm_prefork:notice] [pid 573] AH00169: caught SIGTERM, shutting down
[Wed Mar 30 22:37:18.229285 2016] [mpm_prefork:notice] [pid 571] AH00163: Apache/2.4.10 (Raspbian) configured — re$
[Wed Mar 30 22:37:18.241486 2016] [core:notice] [pid 571] AH00094: Command line: ‚/usr/sbin/apache2‘
[Wed Mar 30 22:40:16.749795 2016] [mpm_prefork:notice] [pid 571] AH00169: caught SIGTERM, shutting down
[Wed Mar 30 22:40:18.410617 2016] [mpm_prefork:notice] [pid 1185] AH00163: Apache/2.4.10 (Raspbian) configured — r$
[Wed Mar 30 22:40:18.410933 2016] [core:notice] [pid 1185] AH00094: Command line: ‚/usr/sbin/apache2‘
[Wed Mar 30 22:40:22.197856 2016] [mpm_prefork:notice] [pid 1185] AH00169: caught SIGTERM, shutting down
[Wed Mar 30 22:40:30.079001 2016] [mpm_prefork:notice] [pid 571] AH00163: Apache/2.4.10 (Raspbian) configured — re$
[Wed Mar 30 22:40:30.087733 2016] [core:notice] [pid 571] AH00094: Command line: ‚/usr/sbin/apache2‘
Habe ein paar mal auf die Buttons geklickt. Mit dem Error Log kann ich leider gar nichts anfangen.. Hast du ne Idee?
Gruß und danke
Hallo Michael,
in den geposteten Logmeldungen steht nur, dass Apache ein paar mal neu gestartet wurde. War das Absicht oder passiert das bei jedem Buttonklick?
Hallo, wie kann ich den switchButton /ToggleButton in einen On und Off Schalter übertragen? Brauch das für die funkgesteuerten Rollos meiner Eltern.
Zur Info wieso: Sind die Rollos in der oberen Position uns werden heruntergefahren, dann stoppen diese bei einem erneuten klick. Klickt man nochmal drauf, fährt das rollo weiter runter und nicht hoch. Daher muss man hier denke ich den Button separieren
Hallo
vielen Dank für die extrem gute Anleitung.
Alles hat perfekt geklappt bis auf den remote Ordner da kommt die Fehlermeldung „Fehler beim Erstellen des Ordnersers: Keine Berechtigung“ gibt es Möglichkeiten das zu ändern?
Hallo Markus,
führe den entsprechenden Befehl einfach mal als root-User (z.B. via sudo) aus, dann solltest du auf jeden Fall die nötigen Berechtigungen haben.
Hallo, echt super Anleitung, damit bin ich echt weit gekommen (leider nicht bis zum Ende).
Ich kann über im Verzeichnis ~/raspberry-remote per ./send 11111 1 0 meine Dosen schalten (und nur dort) Leider funktioniert das web interface nicht
Das config.php verlangt 4 Code sequenzen und schalten tut nichts.
Als Neuling eine vielleicht dumme Frage: wie kann ich die alte Version von xkonni installieren (die aus dem link). Dort ist die config.php mit nur drei code sequenzen enthalten.
Grüße
Henry
Hi Alexander,
um auf den oberen Post zu antworten: ich habe nun mal alles nochmal neu installiert, und das default-webinterface genommen. Die Buttons ändern sich nun farblich, allerdings passiert immer noch nichts mit der steckdose, während mit dem send befehl weiterhin alles funktioniert. Anbei nochmal die Fehler-Log (/var/log/apache2, error.log): die Buttons habe ich ein paar mal geklickt, da kommt nichts dazu. Die drei Zeilen kommen jeweils nach jedem Reboot:
Mon Apr 11 22:43:35.668560 2016] [mpm_prefork:notice] [pid 584] AH00169: caught SIGTERM, shutting down
[Mon Apr 11 22:43:41.918214 2016] [mpm_prefork:notice] [pid 580] AH00163: Apache/2.4.10 (Raspbian) configured — resuming normal operations
[Mon Apr 11 22:43:41.924854 2016] [core:notice] [pid 580] AH00094: Command line: ‚/usr/sbin/apache2‘
@Michael: genau das gleiche Problem habe ich auch. Ich bin der Meinung, dass es ein Problem mit dem daemon ist. Ich habe versucht, wie in der daemon.cpp definiert den Befehl „echo 101111011 | nc localhost 11337“ auszuführen. Ich erhalte zwar keine Fehlermeldung, aber es tut sich auch nichts. Es wäre natürlich auch möglich, dass Zugriffsrechte des www-data bzw. pi Benutzers auf den Daemon fehlen.
Ich bin über jede Hilfe sehr dankbar.
Hi, hat sich hier jemand inzwischen ein „Alles Aus“ Knopf gebaut?
Ich bin gerade dabei das selbst mit cURL zu machen, aber wegen mangelnder Kenntnisse in der PHP-Programmierung hänge ich da momentan fest…
Kopieren, anpassen, was dazu schreiben – geht. Aber komplett selbst… :(
HILFE! :)
Hallo Leute,
ich habe Probleme mit meiner Intertechno PAR 1500, bekomme leider kein Signal hin sie lassen sich nicht schalten mit ELRO geht es wunderbar nur bekomme ich den Code nicht raus. Ich hatte diesen Code berechnet: Intertechno Adresse (Hauscode/Geraet) 0100101 – 0100:101 jedoch geht gar nichts. Auch über die FHEM Schalter 1 -> 000000000F FF F0 (entspricht Fernbedienung Gruppe I und Schalter 1) geht es nicht. Habt ihr da eine Idee?
Grüße
Carsten
Moin,
ich schließe mich Henrys Kommentar an und wäre wirklich über eine Kurzanleitung dankbar, wie man die ältere xkonni raspberry-remote Datei installieren kann.
Hilfe wäre super….
[Selbst gelöst]:
$ git clone git://github.com/xkonni/raspberry-remote.git
$ cd raspberry-remote
$ git checkout 40a0c6d9f35d5ee29a8d9f89d23d760527003dbe
Damit bekommt man die ältere Version! ;D
Hallo,
danke für deine tollen Anleitungen immer. Bin gerade dabei alles in Homebridge zu integrieren aber momentan komme ich einfach nicht weiter! habe den Apache und PHP installiere aber das mit dem verschieben funktioniert nicht!
mv: target ‘/var/www/html/remote’ is not a directory
hast du bitte eine Lösung dafür?
Grüße
Sigi
Hallo Sigi,
hast du den remote-Ordner zuvor angelegt im entsprechenden Verzeichnis?
Bei neueren Apache-Versionen hat sich übrigens das Verzeichnis etwas geändert (/var/www) für die HTML-/PHP-Dateien.
Hallo, ich habe das alles soweit verkabelt und die Bibliotheken installiert. Das Tutorial ist toll.
Leider passiert aber beim sudo ./send Befehl nichts. Die Steckdose wird nicht geschaltet.
er gibt mir folgendes aus:
using pin 0
sending systemCode[11011] unitCode[1] command[1]
Vielen Dank für etwaige Hilfe
Hallo Kev,
zumindest softwareseitig deutet das auf keinen direkten Fehler hin. Hast du die Verkabelung auf eventuelle Bruchstellen überprüft? Ansonsten kann es auch sein, dass bei fehlender Antenne die Leistung des Senders zu gering ist.
Hallo!
Bisher gutes Tutorial, das Steuern der Funksteckdosen über die Konsole funktioniert tatellos!
Mir macht gerade der Teil mit der config.php Probleme. Ich weiß nicht wie ich die Arrays füllen soll, bzw. was mit den einzelnen Einträgen gemeint ist.
Bei mir sieht eine Zeile bisher so aus:
array(„1“, „00001“, „01“, „A“),
(Habe einfach die vorherigen Inhalte abgewandelt). Jedoch wird die Steckdose nicht geschaltet! Die Konsole füllt sich zwar mit allen möglichen Meldungen (keine Error-Message), aber sonst passiert nichts. Mich irritiert vor allem die 1 am Anfang, bei dir taucht sie im Screenshot der Internetseite nicht auf, wenn ich sie weg/leer lasse erhalte ich beim Versuch die Seite zu laden den Error „Wrong systemkey“ Bei einem anderen Tutorial über raspberry remote wurde sie jedoch komplett weggelassen und das Array hatte nur drei Einträge.
Ich hatte erst einen anderen Home-Code (01100) und habe versucht den Eintrag in der daemon.cpp zu ändern. Dieser war jedoch bereits so eingestellt wie es von dir erklärt war, ich habe ihn daher so gelassen und den Home-Code der Steckdosen verändert (zu 00001). An den Beschriebenen Symptomen hat es jedoch nichts verändert, ob es damit zusammenhängt weiß ich nicht.
Ich hoffe du oder jemand anders mit Fachkenntnis kann mir weiterhelfen!
MfG, Hans.
Hallo Hans,
in einer neueren version von raspberry-remote scheint tatsächlich ein weiterer Eintrag im Array in der config.php dazugekommen zu sein. Probier mal die alte Version des Webinterfaces (im Artikel verlinkt).
Hallo!
In dem Terminal funktioniert alles super!
Nur im Webinterface klappt garnichts, egal ob ich das alte Webinterface von raspberry-remote oder das neue verwende.
Nur das neue wird wenigstens im Browser angezeigt wie oben von Hans beschrieben array(„1“, „00001“, „01“, „A“), wenn ich von der Syntax abweiche kriege ich das Webinterface nicht mehr angezeigt im Terminal steht dann wrong systemkey. Wenn ich das alte Webinterface benutze kriege ich es nicht mal angezeigt
wodrann liegt das?
Hallo!
array(„1“, „00001“, „01“, „A“), was bedeutet die erste 1? Egal welches Webinterface ich nehme, alt oder neu beides funktioniert nicht.
Nur mit dem unterschied das ich beim neuen Webinterface die Seite im browser aufrufen kann beim alten kann ich das Webinterface nichtmal aufrufen(im Terminal steht dann „wrong systemkey“, im Terminal kann ich alles schalten!
Wodrann liegst? Lösungen?
Halli hallo,
erstmal ein ganz grosses Lob die du Dir da gemacht hast. !!! Sehr vielen Dank
Nun zu etwas wobei ich Hilfe brauche:
habe mein RPi neu aufgesetzt, um sicher zugehen alles richtig gemacht zu haben. Ich kann zum Beispiel aus dem raspberry/remote Ordner heraus mit „sudo send./ 01101 1 1“ meine Funksteckdose anschalten und ebenso mit der „0“ am Ende wieder ausschalten.
Nun wäre das ansteuern über ein Webinterface ein grosser Traum, aber ich denke als Programmier Lehrling komme ich da nicht weiter.
Über die Ip/remote bekomme ich zwar die Steckdose angezeigt. Dennoch spuckt mein Raspberry Meldungen aus die ich nicht verstehe. Sobald ich übers Interface den „Schalter“ betätige:
message: 101101012
nSys: 1
nGroup: 01101 (der eingegebene Code)
nSwitchnumber: 1
nAction:2
nAddr: 60
nPlugs :1110
dazu muss ich sagen ich benutze Funksteckdosen von brennstuhl, als ich mal in der config rumspielte (denn ich habe keine Ahnung was ich zu tun habe) spuckte der Rpi was aus von „computing systemcode for Intertechno Type B…“
Danke im vorraus und das ich es vernüftig rüberbringen konnte
Hallo Ben,
wo siehst du denn diese Meldungen? Nutzt du die aktuellste Version von raspberry-remote?
Ich brauche Hilfe werde fast wahnsinnig
ich benutze den Systemcode 11000 an der Handfernbedienung und ich habe 3 Funksteckdosen
wenn ich es auf der Kommandozeile teste funktioniert alles super
sudo ./send 11000 1 0
sudo ./send 11000 1 1
sudo ./send 11000 2 0
sudo ./send 11000 2 1
sudo ./send 11000 3 0
sudo ./send 11000 3 1
Aber im Webinterface passiert gar nichts
Welche Einträge muss ich in der config.php machen ?
Die sieht so aus im Moment
$source = $_SERVER[‚SERVER_ADDR‘];
$target = ‚192.168.1.48‘;
$port = 11337;
/*
specify configuration of sockets to use
array(„systemcode“, „group“ , „plug“, „description“);
use empty string to create empty box
„“ * */ $config=array( array(„1“, „11000“, „10“, „Steckdose 1“), ) ?>
Hi perlian,
ich kann dir mal meine config.php (von einer früheren Version von raspberry-remote) geben:
Ich hatte mit neueren Versionen auch immer mal Probleme, daher evtl. mal eine ältere Version probieren.
Zuerst einmal ein Kompliment für die tolle Anleitung.
Ich habe leider ein Problem. Das Schalten über Terminal geht einwandfrei. Das Webinterface kann ich aber nicht aufrufen. Ich bekomme stets einen HTTP 500 Error. Liegt das an Apache2? Ich habe irgendwo gelesen, dass ein Eintrag im Apache2 Ordner unter sites-available vorhanden sein müsste. Der Ordner ist bei mir aber leer bis auf die 000-File. Da hat nicht zufällig jemand ne Ahnung und kann nem Linux-Einsteiger helfen? ;)
Hallo Tobias,
kannst du denn die Standard-Seite von Apache aufrufen (nur die IP des Raspberry als URL im Browser eingeben)?
Ansonsten mal einen Blick in die Apache-Logs werfen, ob da mehr zu dem Fehler steht.
Hallo Alex,
vielen Dank für die Anleitung, die funktioniert sehr gut.
Ich habe unter Raspbian Wheezy das Projekt seit längerer Zeit am Laufen.
Mit der aktuellen Debian Jessy klappt es leider nicht.
Der Daemon scheint zu laufen, das bestätigt mir der Zugriff per Telnet auf den Port des Daemons:
###############
telnet localhost 11337
Trying ::1…
Connection failed: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‚^]‘.
message:
###############
Leider funktioniert die Öberfläche von Matteo nicht.
Ich erhalte beim Aufruf folgende Fehlermeldung:
#####
= 8) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die(„Could not create socket\n“); socket_bind($socket, $source) or die(„Could not bind to socket\n“); socket_connect($socket, $target, $port) or die(„Could not connect to socket\n“); socket_write($socket, $output, strlen ($output)) or die(„Could not write output\n“); socket_close($socket); header(„Location: index.php“); } ?>
„; echo “
„; echo “
„; echo „“.$id.““; echo „Kanal „.$ig.“:“.$is.““; echo “
\n“; echo „\n“; } $index++; } ?>
######
Hast Du eine Idee, warum das nicht funktioniert?
Hallo Stefan,
nutzt du die aktuellste Version von raspberry-remote? Damit hatte ich (und andere) einige Probleme.
Ansonsten schau mal in den Apache-Log für weitere Details.
Woher bekomme ich denn eine ältere Version von raspberry remote? Ich benutze Raspbian Jessie und hab auch genau das Problem das im Terminal alles funktioniert, nur sobald ich in der config.php die erste 1 weglasse bekomm ich immer wrong systemkey.
ok sry habs mal richtig durchgelesen und sie gefunden ^^, aber kann ich mit der alten version dann auch das Webinterface von dan oder matteo nutzen? falls ja wie muss ich vorgehen um das zum laufen zu kriegen?
Hallo,
ja – die Webinterfaces funktionieren problemlos mit älteren Versionen. Einfach wie im Artikel beschrieben vorgehen.
Hallo,
Erstmal danke für die tolle Anleitung.
Leider komme ich nicht weiter.
Ich kann die Apache2 Seite sowie eine PHP Test Seite über meinen Browser öffnen.
Möchte ich jedoch auf das Webinterface zugreifen bekomme ich folgende Fehlermeldung: HTTP ERROR 500
Könnte mir bitte jemand helfen?
Hi Thomas,
was sagt die Apache-Logdatei?
Hi Alex,
ich habe die gleichen Funksteckdosen und überlege mir diese mittels HomeKit (HomeBridge via Pi) steuerbar zu machen.
Eine Frage hätte ich zu der Anzahl der möglichen Funksteckdosen. Die Handbedienung erlaubt maximal 4 Steckdosen (A,B,C,D).
Kann ich mit dem Pi noch mehr Steckdosen benutzen? Die Steckdosen selbst erlauben die Konfiguration (A,B,C,D,E), sprich 5. Die sollten allemal gehen, aber kann ich auch AB an der Steckdose wählen und hätte somit eine 6te regelbare Steckdose?
Grüße
Niko
Hallo Niko,
ja, mit dem Pi kannst du mehr Steckdosen ansteuern. Dazu kannst du einfach unterschiedliche Hauscodes verwenden, dann hast du mit A,B,C,D,E insg. 25 Dosen, ohne AB gleichzeitig bei einer Dose einstellen zu müssen. Das sollte zwar auch gehen, wird aber mit meiner (älteren) Version von raspberry-remote soweit ich das gerade sehe nicht unterstützt.
Hi Alex,
besteht die Möglichkeit, dass du uns „dein“ Design vom Webinterface zur Verfügung stellst?
Es sieht mit Abstand am besten aus!
Hi Patric,
Mail an dich mit dem Interface ist raus.
Vielen Dank dafür.
Ich habe mittlerweile einiges umgekrempelt.
Die einzelnen Steckdosen werden nun direkt über das Webinterface eingepflegt, gelöscht, geändert, usw. Die PHP Seite arbeitet nun direkt mit SSH befehlen, sodass
ich viel bessere Möglichkeiten habe, wie z.B. einen Knopf, der alles ausschaltet bzw. einschaltet. Außerdem kann ich nun über das Webinterface den Rspberry rebooten oder komplett herunter fahren. Jetzt arbeite ich noch an den crontabs, sodass man über das Webinterface Zeitgesteruerte Ein- und Ausschaltvorgänge programmieren kann.
Hi Patric,
das klingt sehr interessant :)
Wie meinst du das mit den SSH-Befehlen? Verbindet sich der PHP-Server dann mit dem gleichen Raspberry selbst per SSH? Die Architektur erscheint mir doch ein wenig komplex für dein Vorhaben ;)
Hi Alex,
es ist eigentlich ohne Probleme möglich, SSH Befehle per PHP an den Raspberry zu senden. Hier kannst du dir mal nen Screenshot anschauen
https://picload.org/image/rdgrwoap/steckdosensteuerung.jpg
Das originale Webinterface ruft ja einfach nur nen Link auf, um die Steckdosen zu schalten, mein Interface arbeitet nur noch mit SSH Befehlen. Die Steckdosen werden über das Webinterface in eine MySQL Datenbank eingepflegt. Die Hauptseite liest diese Datenbank aus und erstellt dementsprechend die Knöpfe. Ich kann dir das ganze gerne mal zukommen lassen.
Hallo Patric,
das raspberry-remote webinterface arbeitet mit einem Socket-Server, der über einen Port angesprochen wird und in dem der Status jeder Dose gespeichert wird. Das mit dem SSH ist mir immer noch nicht so klar, ich hätte da eher „exec()“ oder „shell_exec()“ von PHP verwendet, um lokale Sachen auf dem Raspberry aufzurufen, aber vermutlich habe ich dich da nicht genau verstanden ;)
Die Sache mit der Datenbank ist sicher eine gute Ergänzung, um nicht immer in den config-Dateien rumarbeiten zu müssen. Gerne kannst du dein Projekt auch verlinken, ich werde es mir bei Zeiten gerne ansehen und wenn du einverstanden bist im Artikel verlinken – sind ja sinnvolle Erweiterungen, die du erarbeitet hast.
Hallo Alex,
ich hab das problem, dass ich über sudo ./send 10110 1 1 die Funksteckdose ansteuern kann.
In der Weboberfläche allerdings nicht. Dort kann ich die zwar einschalten, sendet aber kein Signal an die Steckdose.
Was könnte dies für ein problem sein bzw. weisst du da einen Rat?
Grüße
Pierre
Hi Pierre,
nutzt du die aktuelle Version des Webinterfaces? Erscheint etwas im Apache-Log?
Hi Alex,
Danke für deine Antwort, wo finde ich den Apache-Log?
Unter /var/log/apache2 error.log und access.log steht nichts drin…
Das Webinterface ist glaub ich das aktuelle. Ich weis leider nicht, wie ich eine ältere installiere…
Grüße Pierre
Hi Pierre,
das alte webinterface kannst du hier downloaden
https://github.com/xkonni/raspberry-remote/tree/master-20121106
Hallo Patric,
ich bekomme es irgendwie nicht hin. Habe mir die von dir verlinkte Datei als Zip Ordner geladen und auf den Pi gezogen. Da hängt er im Webinterface fest. Sprich er lädt aber die Seite erscheint nicht.