Raspberry Pi: Funksteckdosen einrichten
Dem Thema Hausautomation kann man sich mit dem Raspberry Pi im Kleinen recht einfach nähern. So kann man mittels eines 433 MHz Funk-Sendemoduls Funksteckdosen intelligent steuern. Dies bietet nicht nur die Möglichkeit Steckdosen per Webinterface auf dem Rechner, am Smartphone oder gar aus der Ferne zu steuern, sondern auch abhängig von Zeit und anderen Faktoren zu entscheiden ob die Steckdose aktiviert oder deaktiviert werden soll. Im Folgenden erkläre ich wie man mit Hilfe eines 433 MHz Funk-Sendemoduls Funksteckdosen auf dem Raspberry Pi einrichtet, per Webinterface steuern kann und intelligente Schaltungen anlegt.
Funksteckdosen erhält man in der Regel in Elektrofachgeschäften oder in Onlineshops. Dabei ist zwischen zwei Arten dieser Geräte zu unterscheiden. Erstere haben einen DIP Schalter mit einem 1-0-Code, der es ermöglicht Ein und Aus zu steuern. Es gibt inzwischen jedoch auch selbstlernende Funksteckdosen, die eine gewisse Intelligenz mitbringen. Letztere benötigen wir nicht, da wir die Steckdosen selbst beeinflussen möchten.
Außerdem benötigen wir ein 433 MHz Funk-Sendemodul, welches meist in Kombination mit einem Empfänger zu erwerben ist. Dieses schließen wir über die GPIO-Pins am Raspberry Pi an, weshalb wir female-female Jumperwires benötigen.
- Funksteckdosen von CSL (Amazon)
- Aukru 433 MHz Funk-Sende- und Empfänger-Modul (Amazon)
- Jumperwires female-female (Amazon)
Zunächst müssen wir das Sendemodul an den Raspberry Pi anschließen. Bei dem vorgeschlagenen Aukru 433 MHz Sender ist dies die quadratische Platine mit drei Pins und einem Anschluss (ANT beschriftet) oben rechts.
- Pin 1 (links): ATAD (Daten)
- Pin 2 (mitte): VCC (Versorgungsspannung)
- Pin 3 (rechts): GND (Masse)
- Anschluss: Ant (Antenne)
Der Pin 1 muss mit dem Pin 11 (GPIO-Pin 17) des Raspberry Pis verbunden werden. Der Sender benötigt eine Spannung von 3.5-12V, weshalb wir, um eine größtmögliche Sendeleistung zu erreichen, diesen an einen 5V Versorgungs-Pin des Raspberry Pis anschließen (bspw. Pin 2). Außerdem müssen wir Pin 3 mit einem GND Pin des Raspberry Pis verbinden (bspw. Pin 6). Diejenigen, die sich noch nicht mit GPIO auskennen, können die Belegungen und den Aufbau der GPIO-Schnittstelle in dem Artikel GPIO-Schnittstelle erklärt nachlesen.
Außerdem haben wir oben rechts einen Anschluss um eine Antenne anzubringen oder anzulöten, um die Reichweite des Sendemoduls zu erhöhen. Als Antenne genügt ein Stück gedrehter Draht mit der Länge 17,3 cm. Ohne Antenne konnte ich durch übliche Ziegelwände eine Reichweite von rund 8 Metern feststellen.
Wir brauchen zum Installieren der benötigten Software Git und Screen, welche wir über den Paketmanager installieren.
sudo apt-get install git screen
Zur Ansteuerung des 433 MHz Senders benötigen wir die Bibliothek WiringPi. Hiervon holen wir uns mittels Git den Quellcode und führen das Build-Script aus, welches einige Dateien kompiliert.
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
cd ..
Außerdem installieren wir Raspberry-remote. Diese Software bietet uns eine Anwendung mit der wir einfach die benötigten Funkbefehle absetzen können und beinhaltet außerdem ein Webinterface auf dem wir später die Steckdosen steuern können.
git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
make send
Nachdem der Raspberry Pi präpariert ist, müssen wir an die Funksteckdosen. Diese können wir auf der Rückseite aufschrauben und finden darunter zehn sogenannte DIP Schalter. Diese setzen sich aus fünf Systemcode-Stellen (1-5) und fünf Unitcode-Stellen (A-E) zusammen. Man kann die einzelnen Schalter ein- (1) oder ausschalten (0). Dabei ließt man die Werte von links nach rechts einfach ab.
Der Systemcode ist sozusagen der Schlüssel um die Steckdose ansprechen zu können und sollte somit bei allen Steckdosen gleich sein. Dabei ist es empfehlenswert diesen zu verändern, damit nicht euer Nachbar versehentlich eure Steckdose übernimmt. Ich habe mir diesen Beispielsweise auf 01100 gestellt. Sofern ihr die Fernbedienung neben dem Raspberry Pi nutzen möchtet, müsst ihr dort im Batteriefach den Code in der selben Weise verändern.
Der Unitcode gibt hingegen die Nummer der Funksteckdose an. Folglich sollte diese bei jeder Steckdose verschieden sein, außer man möchte mehrere Steckdosen zugleich steuern. Zu beachten ist außerdem, dass man nur einen Schalter (A, B, C, D oder F) aktiviert. In meinem Fall habe ich bei meiner ersten Steckdose den Unitcode 10000 (A aktiv) und bei der zweiten 01000 (B aktiv). Der Unitcode lässt sich in Steckdosen-Nummern übersetzen, die wir im Folgenden benötigen werden.
Unitcode | Steckdosen-Nummern |
---|---|
10000 | 1 |
01000 | 2 |
00100 | 3 |
00010 | 4 |
00001 | 5 |
Nachdem wir alle Informationen haben, können wir die Steckdose über den Raspberry Pi schalten. Dazu bedienen wir uns des send Kommandos von Raspberry-remote, bei dem wir den Systemcode, die Steckdosen-Nummer und den gewünschten Zustand (1 für einschalten, 0 für ausschalten) angeben müssen. Hat es funktioniert, so hören wir das Schalten der Steckdose.
sudo ~/raspberry-remote/send [Systemcode] [Steckdosen-Nummer] [Zustand]
Beispiel: Zweite Steckdose einschalten
sudo ~/raspberry-remote/send 01100 2 1
Der grundsätzliche Aufbau steht und die Steckdosen sind ansprechbar. Damit ist es an der Zeit ein Webinteface in Betrieb zu nehmen, damit wir die Steckdosen bequem steuern können. Hierzu benötigen wir den Webserver nginx mit php5-fpm. Wie man diese Software installiert erklärte ich in dem Artikel Webserver Nginx installieren.
Nun verschieben wir die Webinterface Dateien in einen Ordner namens remote-power-plug im Verzeichnis des Webservers.
sudo mkdir /usr/share/nginx/www/remote-power-plug
sudo mv ~/raspberry-remote/webinterface/* /usr/share/nginx/www/remote-power-plug
Außerdem müssen wir die Konfigurationsdatei des Webinterfaces bearbeiten. In dieser müssen wir bei $target die IP-Adresse durch 127.0.0.1 (lokal; der Raspberry Pi selbst) ersetzen. Außerdem muss der Block $config durch unsere zuvor getroffenen Einstellungen ersetzt werden. Bei jeder Steckdose, als Array geschrieben, muss zunächst der Systemcode, anschließend die Steckdosen-Nummer mit anführender Null und abschließend ein Bezeichner für die Steckdose angegeben werden. Im Folgenden habe ich dies beispielhaft für die oben eingestellte Konfiguration umgesetzt. In dem Editor nano kann man mittels STRG + X, Y und Enter speichern.
sudo nano /usr/share/nginx/www/remote-power-plug/config.php
$target = '192.168.11.124';
ersetzen durch
$target = '127.0.0.1';
und
$config=array( array("00010", "01", "Schreibtisch"), array("00010", "02", "Laptop"), "", "", array("00001", "01", "Sofa Lampe"), array("00001", "02", "Sofa Steckdose"), array("00001", "03", "TV"), array("00001", "04", "Verstaerker"), )
ersetzen durch (Beispiel)
$config=array( array("11111", "01", "Computer"), array("11111", "02", "Nachttischlampe"), )
Damit das Webinterface nun Befehle senden kann, benötigen wir noch den Raspberry-remote Daemon, welchen wir zunächst kompilieren und anschließend dafür ein kleines Startscript schreiben, welchem wir die Rechte ausgeführt zu werden geben müssen.
cd ~/raspberry-remote
make daemon
nano start.sh
#!/bin/bash cd ~/raspberry-remote/ sudo screen -dmS RaspberryPiRemoteDaemon ./daemon & exit 0
chmod +x start.sh
Anschließend müssen wir das Startscript ausführen und man kann unter http://IP/remote-power-plug/ (IP durch IP-Adresse des Raspberry Pis ersetzen) das Webinterface aufrufen wie auch die Funksteckdosen schalten.
./start.sh
Abschließend müssen wir den Daemon in den Autostart legen, sodass das Webinterface auch nach einem Neustart des Raspberry Pis einwandfrei funktioniert. Dazu fügen wir folgende Zeile am Ende der Crontab Datei ein.
crontab -e
@reboot /home/pi/raspberry-remote/start.sh
Damit sind die Funksteckdosen eingerichtet und über das Webinterface ansprechbar. Für die meisten Zwecke sollte diese Art der Steuerung reichen, jedoch könnte man diese natürlich um Intelligenzen erweitern.
Die Funksteckdosen lassen sich wie in Step 6 beschrieben ansprechen. Damit ist die Funktionalität der Steuerung allgemein geben – denn mehr als ein und aus geht im Grunde nicht.
Möchte man die Steckdosen zeitlich steuern, so bietet es sich an Crontabs zu verwenden. Wer deren Syntax nicht kennt kann einfach auf einen der diversen Crontab Generatoren zurückgreifen. Diese liefern einem die Angabe wann ein Befehl ausgeführt wird. Den Befehl kann man aus Step 6 übernehmen und die daraus resultierende Zeile am Ende der Crontab Datei eintragen.
Beispiel: Zweite Steckdose wird um 23:00 Uhr aus- und um 06:00 Uhr eingeschaltet
crontab -e
0 23 * * * ~/raspberry-remote/send 01100 2 0 >/dev/null 2>&1 0 6 * * * ~/raspberry-remote/send 01100 2 1 >/dev/null 2>&1
Es wäre möglich abhängig von weiteren Faktoren die Schaltung der Funksteckdosen zu beeinflussen. Jedoch ist dies je nach Anwendung individuell und muss folglich mit der allgemeinen Funktion des Steuerungsbefehls zusammenspielen.
64 Kommentare. Hinterlasse eine Antwort
Moin,
interessantes Thema 😉
Du hast ja die mumbi-Steckdosen verlinkt. Bei diesen steht in der Amazon-Beschreibung “HausCode: Selbstlern-Funktion”. Bist du sicher, dass die Steckdosen noch DIP-Schalter haben? Irgendwie scheinen die meisten Hersteller mittlerweile auf die selbstlernenden Dosen zu setzen und welche mit DIP-Schalter sind nur noch vereinzelt erhältlich (das war vor 1-2 Jahren irgendwie noch anders…).
Stimmt, das steht in der Beschreibung. Bei der Nutzung konnte ich diese Funktion jedoch nicht bemerken.
Wenn die noch die DIP-Schalter haben werden es auch keine selbstlernenden sein, dort sind die Schalter nämlich überflüssig 😉
Aber gut zu wissen, dass hier auch noch die „alte“ Variante verbaut wird. Danke!
Hi,
klasse Turorial, wie immer!
Kl.Anm.: im Crontab muß es
0 6 * * * ~/raspberry-remote/send 01100 2 1 >/dev/null 2>&1
lauten, damit die Stecktose um Sechs Uhr angeschaltet wird.
Stimmt natürlich, ist verbessert. War ich beim Schreiben wohl zu schnell 😉 Danke!
Hallo Jan,
danke für Deinen Artikel. War auch gerade an der Planung und Hardwaresuche für so ein Projekt. Da kam Dein Artikel sehr gelegen. Frage: Muss es für das Einschaltkommando in crontag um 6 Uhr statt: „0 6 * * * ~/raspberry-remote/send 01100 2 0 >/dev/null 2>&1“ nicht „send 01100 2 1“ heissen? Oder habe ich etwas falsch verstanden?
Alles richtig verstanden. Danke für den Hinweis! Der Fehler ist korrigiert.
Hey!
Tolle Anleitung, ich werde sie mir mal zu Herzen nehmen und durcharbeiten.
Eine Frage habe ich aber:
– Läuft das Daemon-Script auch mit Apache?
Gruß
Christian
Ich nehme an, dass es auch mit Apache2 und php5-fpm einwandfrei läuft, aber habe es nicht getestet.
Der Daemon arbeitet auch wunderbar mit Apache2 und PHP5 zusammen 😉
Kurze Erklärung: Der Daemon an sich läuft ja erst einmal nur auf dem Raspberry Pi. Damit wird ein (web-) Socketserver zur Verfügung gestellt, mit dem sich hier eben das Webinterface via PHP verbindet. Man kann den Socketserver übrigens auch von außerhalb des Pis erreichen (sofern keine Firewall das verhindert), um z.b. mit Python oder einer anderen Programmiersprache einen Socket-Client umzusetzen, der sich damit verbindet und z.B. Schaltbefehle absetzt oder den Status abruft.
Danke für die tolle Anleitung.
Besteht die Möglichkeit noch zu erklären wie man von unterwegs, d.h. aus dem Internet per ddns die Steckdosen schalten kann? Dazu müsste man den WebServer mit einem Passwort sichern. Leider bin ich nicht in der Lage den Zugriff von außen mit einem Passwort abzusichern.
@Björn: VPN ist dein Freund…
Das Stichwort nach dem du hierfür suchen müsstest wäre „nginx basic auth“ und der Port 80 müsste freigeben werden. Ich werde die Anleitung (vorerst) nicht um diesen Punkt erweitern, da man sich bei Funksteckdosen, da diese im Falle eines erfolgreichen Angriffs durchaus Schadenspotenzial bieten, meiner Meinung nach mit dem Thema Sicherheit umfassender informieren sollte.
Entweder wie ALI schon sagt per VPN oder per NAT auf dem Port 80 greifen, von außen ist er dann z. B. 12398, dann wird er nicht mehr so oft abgeklopft.
Hallo nochmals, ich habe mich dem Thema wieder gewidmet. Ich habe durch Ihre OpenVPN Anleitung jetzt Zugriff auf meine Steckdosen über das Internet. Muß ich hierbei noch etwas beachten?
Hi Björn,
ich habe meinen RasPi jetzt so weit, daß ich meine Funksteckdosen über den Webserver steuern kann. Wie kann ich das aber machen, daß ich nun aus der Ferne übers Internet meine Steckdosen schalten kann? Deine kurze Bemerkung oben habe ich nicht so recht kapiert (bin hier Anfänger). Ich habe meine Anfrage auch schon an Christian geschickt.
Hallo Ulrich,
Ich habe die Openvpn Anleitung von dieser Seite hier befolgt und konnte so von außen in mein Heimnetzwerk. D.h. Ich kann dann über den internen Webserver zugreifen und so die Dosen z.B. Von meinem Smartphone Steuern.
Hi – gibts hardwareseitig (nicht den rasp an sich) sondern das modul – keine fertige lösung, die man einfach aufstecken kann und gut ist?
Du könntest die Fernbedienung der Funksteckdosen nutzen. Der Zweck des Raspberry Pis ist es jedoch das ganze dynamischer gestalten zu können. Wenn du das nicht brauchst benötigst du keinen Raspberry Pi zur Steuerung.
Ich bin etwas von den male/male Steckern verwirrt. Meinst du nicht female/female? An dem Funk-/Sendemodul sind doch Pins dran, auf die female-Stecker gehören 🙂
Vollkommen richtig, da hab ich einen Fehler gemacht. Habe es verbesset. Dankre dir!
Wie sieht eigentlich die Reichweite des Senders aus? Kann ich dann nur Steckdosen um selben Raum ansteuern oder ist es auch raumübergreifend möglich?
Ich habe es ohne Antenne versucht und konnte damit aus ein Raum weiter auch noch steuern. Mehr jedoch nicht mehr.
Danke. Also sollte es kein Problem sein, wenn der Sender relativ zentral im Flur steht.
Also bei mir steht der Raspberry im Keller und ich kann damit problemlos Steckdosen im ersten Stock schalten. Am Sender habe ich einen ca. 17cm langen Draht als Antenne angebracht, der Sender hängt bei mir nur an 3.3V. Kommt aber wahrscheinlich auch darauf an, wo du wohnst. Das 433MHz-Band ist ja sehr beliebt bei allen möglichen Fernbedienungen, das kann sich natürlich gegenseitig stören.
Moin,
zunächst ein Lob an deine Seite, ich habe schon einige deiner Tutorials erfolgreich realisiert.
Bei diesem habe ich allerdings ein Problem bei der Ansteuerung der Funksteckdosen (3 von CSL und 2 von ELRO).
Ich kann alle mit den Befehlen send 01100 2 1 jeweils nur einschalten aber KEINE mit send 01100 2 0 ausschalten, das geht dann leider nur über die dazugehörige Fernbedienung der Funksteckdosen.
Komme hier irgendwie nicht weiter… Hast Du eine Idee?
Mhhh… das klingt strange. Anhand deiner Beschreibung klingt alles richtig. Habe da auf Anhieb leider auch keine Idee für dich, sorry.
Hat sich erledigt. Es war ein Problem mit der Reichweite des Transmitters.
Nach anlöten einer Antenne hat funktionierte es.
Hey,
erstaml danke für die super Anleitung von dir. Ich konnte sie jedoch bereits noch nicht so ganz umsetzten. 😛
Ich hab das Problem, dass mein nginx Server mir die Fehlermeldung „504 Gateway Time-out“ liefert, wenn ich in der Adresszeile des Browser >> http://„meineIP“/remote-power-plug/ << eingebe.
Vielleicht hatte das Problem ja auch schon jemand und weis wie man es beheben kann?
Würde mich freuen wenn sich jemand meldet und mir dabei hilft es doch noch über den Webserver steuern zu können! 😛
Hast du denn php5-fpm, wie in Step 7 beschrieben, installiert? Ob php5-fpm läuft kannst du auch mit folgendem Kommando überprüfen.
sudo /etc/init.d/php5-fpm status
Hallo zusammen.
Als blutiger Anfänger der bisher ein paar LED´s hat blinken lassen, habe ich nach einiger Web-Recherche hier eine super Anleitung gefunden. Vielen Dank dafür.
Die Anleitung funktioniert auch mit Steckdosen aus dem T00m-Baumarkt. Was ich leider nicht hingekriegt habe, ist das aufsetzen des Webservers.
Da ich ein Anfänger bin, habe ich beim Link wie ein Nginx-Server aufgesetzt wird erst nur die Anleitung bis Step 3 befolgt und dann hier in der Anleitung weitergemacht. Am Ende habe ich beim Aufrufen der http://“meineIP”/remote-power-plug/ nur ein 403 Forbidden Fenster erhalten.
Habe dann noch die Steps für die PHP Installtion durchgeführt (Step 4-8). Danach wurde/wird die Index-datei mit der Fehlermeldung „php_network_getaddresses: getaddrinfo failed: No address associated with hostname (0)“ angezeigt.
Weiß einer wo ich hier den Fehler gemacht habe? Muss ich alles nochmal neu aufsetzen und erst die Steps 1 – 8 aus der Nginx Anleitng befolgen, bevor ich hier weitermache? Das war mir hier nicht so ganz klar.
Ich hoffe ihr könnt mir helfen!!! Danke im Voraus
Das könnte ein Rechteproblem sein. Versuch doch mal ob folgendes Kommando Abhilfe schafft.
chown -R www-data:www-data /usr/share/nginx/www/remote-power-plug
Hallo Jan,
Super Beschreibung hat alles wunderbar funktioniert.
Eine Frage habe ich als Laie da aber noch.
Ist es möglich die Funksteckdose per Fotosensor(oder widerstand) schalten zu lassen.
also wenn es draussen hell wird das dann die Beleuchtung draussen aus geht.
gruss
Kelle
Wäre denkbar, dass man das als Bedingung zum Enden des Kommandos macht. Dazu müsste man ein entsprechendes Script für einen Sensor schreiben – das wäre aber schon wieder ein ganzer weiterer Artikel 😉
Guten Abend zusammen,
habe das Tutorial wie oben beschrieben durchgeführt.
Wenn ich in meinem Browser (Firefox, Chrome) die IP meines Raspberrys eingebe,
erscheint der Text: Welcome to nginx! – Schönchen. Das bedeutet, dass der Server funktioniert.
Anschließend habe ich IP/remote-power-plug eingegeben. (IP = IP-Adresse meines Raspb)
Das Endergebnis war eine schwarze Seite. Innerhalb dieser die Meldung connection refused (111)
Wie in Step 9 beschrieben hatte ich die IP
$target = ‚192.168.11.124‘; auf 127.0.0.1 gesetzt.
Da mein Raspberry aber eine statische IP besitzt, habe ich nun diese mal eingegeben. Wenn ich nun IP/remote-power-plug eingebe, so erscheint eine weiße Seite, auf der nichts angezeigt wird.
Zu einem bin ich mir nicht sicher, warum vorher die Anfrage verweigert wurde. Muss man in der Fritzbox noch einen Port freigeben? Habe mal Port 11337(den hab ich aus der config.php des Ordner remote-power-plug) freigegeben.
Oder kann es sein, dass das Webinterface angezeigt wird, aber keinen Inhalt besitzt? Wie soll das denn genau am Ende ausschauen?
Ich hoffe, ihr könnt mir ein wenig weiter helfen.
Gruß
Marcel
Antwortet Marcel doch mal bitte, habe ein ähnliches Problem
Der daemon läuft nicht und muss gestartet werden.
Dann gibts keine Fehlermeldung „connection refused“ mehr.
Gruß Ralf
Hallo Jan,
erstmal super Tutorial! So, ich arbeite mit selbstlernenden Funksteckdosen (also ohne DIP Schalter) und möchte diese eben auch übers Raspi steuern. Ich habe über die normale Fernsteuerung (4 Kanäle + Master) jeder Steckdose einen Kanal zugewiesen. Danach habe ich über einen RFSniffer (von 433Utils) Dezimal-Codes für jeden Knopf herausbekommen und mir die Binärcodes kalkuliert, zB bei Kanal 1:
ON 4542741 010001010101000100010101
OFF 4542740 010001010101000100010100
Kannst du (oder jemand anderer hier^^) mir sagen, ob ich diese Steckdosen mit Raspberry-remote steuern kann und wenn ja, wie der send-Befehl ausschauen soll?
Gruß, Manuel
Hallo Jan,
wollte mich auch für das schöne TUT bedanken und einen kleine Info hinterlassen, die anderen vielleicht auch hilft.
Wenn mann beim Webinterface den „Hauscode“ 00000 verwendet funktioniert es nicht!!!
Benutzt man einen anderen wo mind. eine 1 enthalten ist, dann funktioniert alles reibungslos 😉
Warum bleib mir zwar ein Rätsel, ist aber so….
Hat mich einiges an Zeit gekostet, bis ich auf die Idee gekommen bin, den Code mal zu ändern.
Nur zum Verständniss ich hatte natürlich im Webinterface und an den Steckdosen immer den selben Code eingestellt.
Gruß,
Ralf
Hi!
Ist es möglich mit diesem Tutorial auch meinen bestehenden Raspy 2 und der laufenden HDD 2,5„ mittels phyton and the commend GPIO.output(38, True) und einen anderen GPIO Ausgang z.B. [url=http://abload.de/image.php?img=1yasp6.png][img]http://abload.de/img/1yasp6.png[/img][/url] eine elektrischen Verbraucher von 230V zu schalten – ohne, dass ich ein anderes Netzgerät bei Raspy 2 verwende?
Kann man auch mehr als Fünf Funksteckdosen verwenden?
???
Das würde mich auch interessieren. Angenommen ich stelle an einer Steckdose die Dips bei A und B auf 1. Wie spreche ich diese Steckdose dann korrekt an?
Hallo Jan,
erst einmal auch von mir vielen Dank für das tolle Tutorial. Das hat mir als blutigem Anfänger wirklich sehr geholfen!
Leider habe ich ein kleines Problem mit dem Webzugriff. Wenn ich auf http://“meineIP”/remote-power-plug/ mit der IP des Raspberry zugreife erhalte ich die 404 – Not found von nginx. Ich bin jeden Schritt gewissenhaft durchgegangen, mein PHP5 Server steht auf active und bis Punkt 8 hat auch alles funktioniert..
Kann mir hier jemand helfen?
Vielen Dank schon mal!
Beste Grüße
Christoph
Ich kann Dir dazu keine direkte Antwort/Lösung geben. Der beste Schritt bei der Behebung solcher Probleme ist, sich auch das Error-Log von nginx anzusehen. Der 404 wird sicherlich mit den Details geloggt, die Du brauchst um herauszufinden auf welche Resource er versucht zuzugreifen.
Hallo Jan,
in Step 4 bekomme ich folgende Fehlermeldung:
pi@raspberrypi:~/raspberry-remote $ make send
g++ -Wall -lwiringPi -c -o RCSwitch.o RCSwitch.cpp
RCSwitch.cpp:31:42: warning: converting to non-pointer type ‘long unsigned int’ from NULL [-Wconversion-null]
unsigned long RCSwitch::nReceivedValue = NULL;
^
RCSwitch.cpp: In constructor ‘RCSwitch::RCSwitch()’:
RCSwitch.cpp:41:28: warning: converting to non-pointer type ‘long unsigned int’ from NULL [-Wconversion-null]
RCSwitch::nReceivedValue = NULL;
^
RCSwitch.cpp: In member function ‘void RCSwitch::enableReceive()’:
RCSwitch.cpp:569:30: warning: converting to non-pointer type ‘long unsigned int’ from NULL [-Wconversion-null]
RCSwitch::nReceivedValue = NULL;
^
RCSwitch.cpp:570:34: warning: converting to non-pointer type ‘unsigned int’ from NULL [-Wconversion-null]
RCSwitch::nReceivedBitlength = NULL;
^
RCSwitch.cpp: In member function ‘bool RCSwitch::available()’:
RCSwitch.cpp:582:38: warning: NULL used in arithmetic [-Wpointer-arith]
return RCSwitch::nReceivedValue != NULL;
^
RCSwitch.cpp: In member function ‘void RCSwitch::resetAvailable()’:
RCSwitch.cpp:586:28: warning: converting to non-pointer type ‘long unsigned int’ from NULL [-Wconversion-null]
RCSwitch::nReceivedValue = NULL;
^
g++ -Wall -lwiringPi -c -o send.o send.cpp
send.cpp: In function ‘int multipleSwitch(int, char**)’:
send.cpp:36:17: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
if (argv[1] = „-b“) {
^
send.cpp:36:23: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (argv[1] = „-b“) {
^
send.cpp:85:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
mySwitch.send(„010101010001000101010001“);
^
send.cpp:89:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
mySwitch.sendTriState(„FFFF0F0FFF0F“);
^
send.cpp: In function ‘int main(int, char**)’:
send.cpp:224:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
mySwitch.send(„010101010001000101010001“);
^
send.cpp:228:53: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
mySwitch.sendTriState(„FFFF0F0FFF0F“);
^
g++ RCSwitch.o send.o -o send -Wall -lwiringPi
Ne Idee was das ist/ bzw. wie ich das beheben kann?
LG René
Hallo alle zusammen,
ich bin auch ganz neu mit dem RasPi und habe dasselbe Problem wie
brocel1 vom 8. September 2015 um 21:10. Ich habe die IP meine RasPi eingegeben und erhalte die Meldung „Connection refused (111)“ . Kann mir jemand helfen?
Hallo zusammen.
Als erstes mal ein echt schön beschriebenes TUT, aber leider hab ich damit ein Problem.
Ich habe mich genau nach der Beschreibung gehalten, auch bei dem nginx Server, der auch tadellos läuft.
Doch leider bekomme ich wenn immer wenn ich mich auch http://meineip/remote-power-plug verbinden will, den Fehler 404.
Habe auch schon in der Error.log von Nginx nach geschaut, ob dort ein Fehler vorliegt, aber in dem Fall leider nicht.
Falls jemand eine Lösung für dieses Problem hat, wäre ich sehr verbunden
MFG
Vielleicht hilft das:
In der nginx config
sudo nano /etc/nginx/sites-available/default
einfach:
alt: root /var/www/html
ändern in
neu: root /usr/share/nginx/www/
speichern und neustarten:
sudo /etc/init.d/nginx restart
Möglicherweise noch:
cd /usr/share/nginx/www/
sudo chown -R www-data:www-data remote-power-plug/
sudo find baikal/ -type d -exec chmod 755 {} \;
–> sudo reboot
es muss natürlich (3. Zeile on unten)
sudo find remote-power-plug/ -type d -exec chmod 755 {} \;
heißen
Vielen Dank für das super Tutorial!
Ich bekomme aber bei eingabe von „http://xxx.xxx.xxx.xxx/remote-power-plug/“ nur eine Seite ohne Inhalt angezeigt.
Kann mir jemand bei diesem Problem weiterhelfen?
Danke!
Deine Anleitungen sind wie immer sehr gut! Bitte weiter so! Ich habe hierzu eine ähnliche Anleitung, allerdings unter Verwendung von 433Utils und einem Webserver, mit dem man über schlichte PHP-Dokumente die Funksteckdosen auch per Webinterface von anderen Computern oder Smartphones aus steuern kann: http://www.nazim-kenan.de/wie-man-mit-dem-raspberry-pi-und-einem-webserver-einfach-und-schnell-funksteckdosen-steuert/#more-439
Hi Christian,
ich habe meinen RasPi jetzt so weit, daß ich meine Funksteckdosen über den Webserver steuern kann. Wie kann ich das aber machen, daß ich nun aus der Ferne übers Internet meine Steckdosen schalten kann? Deine kurze Antwort oben habe ich nicht so recht kapiert (bin hier Anfänger).
Ou man, ich hänge nun schon 2 Tage an dem blöden Webzugriff und bekomme es nicht zum laufen.
Ich kann einrichten was ich will, sobald ich auf den Link klicke wird zwar registriert, dass das Gerät angeschaltet worden sein soll, es macht aber nix. Mit „send“ kann ich das Gerät aber einschalten.
Gibt es seit einer neuen PHP oder NGINX Version vielleicht Probleme mit Rechten? Warum kann php sonst nicht mit dem Daemon kommunizieren? Auch mit „echo….“ bekomme ich es nicht hin. Die Steckdose geht einfach nicht an.
Ich hoffe du kannst mir weiterhelfen.
Hallo,
Ich habe mir mal selbstlernende Funksteckdosen bestellt und möchte nun wissen wie ich an den Geräte Code komme und was ich sonst noch anderes nach der Anleitung machen muss.
Ich hoffe jemand hat hier schon Erfahrung damit.
Super Anleitung, Jan!
Kann ich am PI erkennen ob eine Steckdose angeschalten ist und deren Status abfragen?
Hallo Jan, ich überlege mir auch diese Steuerung zu basteln, gibt es auch eine Möglichkeit die Dosen danach mit einem Iphone (ab Modell 5 IOS 9.3.3) zu steuern?
Hi Jan,
ich schon wieder, ich hab n problem mit dem anzeigen der Website und zwar bekomme ich wie Kokscola nur eine leere seite. Hat irgendjemand eine Lösung dazu?
Hallo,
Hatte am Anfang Probleme verschiedene Funksteckdosen im Haus zu schalten. Anscheinend hat die Reichweite nicht gepasst. Habe mir dann dieses Set mit Antennen (http://www.ebay.de/itm/433-Mhz-Sender-Empfanger-Komplett-Set-Raspberry-Pi-Arduino-Modul-Funkmodul-/252713874872) geholt, und jetzt klappt es.
Konnte die Reichweite mehr als verdoppeln. Ich denke, man kann die Antenne auch selber basteln mit einem Stück Draht. Hier ist dann aber wichtig, dass die Länge exakt zur 433 Mhz Funkfreuquenz passt.
LG
Hallo,
vielen Dank für das hilfreiche Tutorial! Leider hänge ich bei Schritt 6 fest.
„pi@raspberrypi:~/raspberry-remote $ sudo ~/raspberry-remote/send 10011 3 1
using pin 0
sending systemCode[10011] unitCode[3] command[1]“
Ich verstehe nicht wieso er mit Pin 0 senden will, muss ich doch noch irgendwo etwas einstellen?
Übrigens würde mich die Meldung nicht weiter stören, aber er schaltet (dadurch?) eben auch nicht.
Kannst Du mir ggf dazu etwas sagen bitte?
Beste Grüße und vielen Dank
Andy
Hi Jan,
vielen Dank für die super Anleitung, bei mir funktioniert auch alles so wie es soll.
Aber ich hätte da noch eine Frage, kann man den GPIO ändern?
Ich würde den GPIO 17 gerne für den OnOff SHIM nutzen.
Oder gibt es evtl. eine andere Lösung?
Schönen Gruß
Knut
Hi Jan,
kaum liest man das README vom Raspberry-remote-Paket, schon findet man den Parameter p und alles ist gut. 🙂
Schönen Gruß
Knut
Hallo Jan,
auch von mir: super Anleitungen! Vielen Dank dafür.
Bei dieser hier musste ich auf PHP7 umsteigen, da das PHP5 nicht recht funktionieren wollte.
Das hat auch alles funktioniert. Aber ich kriege die Adresse http:///remote-power-plug nicht aufgerufen. Da lädt der Browser ewig und irgendwann kommt dann die Gateway Timeout-Meldung.
Kannst Du mir bei der Fehlerbehebung helfen?
Gruß
Björn
Ich habe jetzt die Sache etwas eingrenzen können. Es liegt scheinbar am Sendkommando des Webinterfaces zum Daemon. Dort wird noch eine Rückmeldung erwartet. Und die scheint nicht zu kommen.
Habe ich evtl. falsche Angaben in der config.php eingetragen?
Ich finde auf meinen Steckdosen immer nur einen 5-stelligen Systemcode und einen Buchstaben (A-E). Den Systemcode kann ich in der Konfiguration zuordnen. Aber was ist Group und was ist Plug?