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.
Hallo Leute,
leider stürzt mir ein bis zweimal im Monat der Daemon ab der die Schaltung übernimmt. Sieht man dann immer an der Fehlermeldung auf der Webseite: Could not connect to socket anstatt der Buttons. Ich habe daher heute mal schnell noch einen Watchdog geschrieben, vielleicht hat ja nochjemand das Problem.
1. Skript anlegen das prüft ob daemon läuft:
check_remote.sh
#!/bin/bash
CHECKDAEMON=$(ps -A | grep -w daemon_remote)
if ! [ -n „$CHECKDAEMON“ ] ; then
cd /home/pi/raspberry-remote/
sudo ./start_remoted.sh
#echo „läuft nicht“;
exit;
else
echo „läuft“;
fi
2. Daemon in daemon_remote umbennen um ihn eindeutig unterscheiden kann
sudo mv daemon damon_remote
3. Startskript anpassen:
start_remote.sh
#!/bin/bash
cd /home/pi/raspberry-remote/
sudo ./daemon_remote &
exit 0
4. Cronjob bauen
sudo vi /etc/crontab:
#einfügen:
0,15,30,45 * * * * root /home/pi/raspberry-remote/check_remote.sh
Hi Mirko,
das ist sicher eine gute Idee!
Danke für deine Lösung des Problems.
hallo, ich habe Schwierigkeiten mit den codes für meine Steckdosen, Wenn ich die codes in der config.php eintrage werden die auch in der Weboberfläche angezeigt kann die auch einschalten aber nicht wieder ausschalten!! Was mache ich falsch?
In der daemon.cpp habe ich auch auf 1110 geändert.
Muss ich nach der änderung von der config datei noch was „neustarten“???
danke
Moin dobi,
Hast du den daemon neu kompiliert (und neu gestartet) nach der Änderung?
Wenn du mit config-Datei die config.php meinst: Nein, da musst du nichts neu starten.
Was zeigt denn z.B. Firefox unten als URL an, wenn du über die Buttons fährst mit der Maus? Wenn die Geräte aus sind, sollte dort „action=1“ enthalten sein, andernfalls „action=0“. Passt das soweit?
Hallo, danke für die antwort!
Jetzt klappt es mit der einen Steckdose, warum auch immer.
Probiere gleich mit den nächsten.
wie kompiliere ich daemon neu? und das neu starten?
Das mit der URL das passt mit action=1 bzw action=0
Danke
=============================================
diese 3 befehle?
cd ~/raspberry-remote
daemon: make daemon
sudo ./daemon &
Kannst du mir noch mit einer Zeitschaltung helfen?
Hi dobi,
ja genau. Mit make wird er kompiliert und mit dem unteren Befehl (im Hintergrund) gestartet.
Welches Webinterface nutzt du genn genau? Das von Dan, von Matteo, meines oder ein anderes?
ich benutze deins, die anderen habe ich nicht hinbekommen.
Hi,
ich hab dir mal mein Interface gepackt. Du kannst es hier runterladen. Aus Lizenz-Gründen ohne Bilder. Die config.php musst du natürlich wieder anpassen.
Danke, werde es ausprobieren .Was für Bilder muss ich da einfügen? Welches Format müssen die Bilder haben? In welchen Ordner muss ich dass alles einfügen?
So viele fragen sorry.;-)
Danke
Hi,
die einzelnen Dateien sind:
Für das Favicon: „apple-touch-icon-114×114.png, apple-touch-icon-72×72.png, apple-touch-icon-120×120.png, apple-touch-icon-76×76.png, apple-touch-icon-144×144.png, apple-touch-icon.png, apple-touch-icon-152×152.png, apple-touch-icon-57×57.png, favicon.ico“
Für den Button: „on_off_sd.png (53×87), on_off.png (106×174)“
Für das Logo oben: „logo.png (540×72), logo_sd.png (270×36)“
Für das Wallpaper (den Hintergrund): „wallpaper_light.jpg (möglichst groß)“
Hi, die ganzen Dateien kommen in den Remote Ordner?
Muss ich danach noch was machen? neustart oder ähnlich?
Komme mit den denn Favicon bilder nicht klar, weiß nicht welche ich nehmen soll.
Für Button, Logo und Wallpaper kann ich mir was vorstellen.
Danke
Ja, vorhandene Dateien damit ersetzen. Favicons sind die Bilder, die der Browser oben anzeigt. Das sind einfach verschiedene Größen, speziell für Smartphone und Tablets. Kannst du fürs erste auch weglassen.
Moin moin,
bin schwer begeistert von dem Tutorial und es hat auch auf Anhieb Problemlos funktioniert.
Ich nutze das WebInterface von Matteo.
Was ich mir noch wünschen würde wäre ein Button um alle Steckdosen An/Aus zu schalten.
Leider hab ich keine Idee wie ich das realisieren kann.
Wäre super wenn mir da jemand helfen könnte.
Vielen Dank!
grtz
C0mmanda
Hi C0mmanda,

das ginge z.B. mit einem Python-Script, das bei Button-Druck aufgerufen wird (analog hierzu). Statt dass du den Status abrufst, kannst du auch einen Ein- bzw. Aus-Befehl schicken. Hier mal ein kleines Python-Script dazu:
Das Script hat jetzt nur einen Device-Code, du könntest aber natürlich auch eine Liste anlegen mit all deinen Device-Codes und über einen Schleife darüber alle Dosen nacheinander schalten. Das Script erfordert keine besonderen Rechte und sollte daher recht einfach einzubinden sein über die PHP exec-Funktion.
Hallo Alexander,
Vielen Dank für die schnelle Reaktion und Hilfe.
Leider muss ich gestehen dass ich von PHP und von Python erst recht KEINE Ahnung habe. Hier und da was anpassen kriege ich hin, mehr leider nicht…
Eine Liste mit all meinen Devices anlegen: Heißt ich kann die einfach hintereinander nach dem Schema in deinem Beispiel eingeben?
Oder müssen die einzelnen Devices voneinander getrennt werden (Wie auch immer)??
Wie erstelle ich die Schleife?
Und zu guter letzt: Wie binde ich das Script per exec ein und wie mache ich das, damit ich auch einen Button dafür erhalte?
Sorry, aber ich stehe da echt auf dem Schlauch… :(
Danke im voraus!
Hi C0mmanda,
damit meinte ich nur, dass statt „device_code=’01′“ eine Liste angelegt wird: z.B. „device_list=[’01‘,’02‘,’03‘]“ und dann halt mit „for device_code in device_list:“ über den try-except-Block iterieren. Die Python-Datei dann z.B. unter „alles_an.py“ auf den Webserver in das Verzeichnis legen und über exec(„python alles_an.py“) auf Button-Druck im Webinterface ausführen.
Geht aber natürlich auch alles direkt in PHP. Dazu halt eine Funktion anlegen, die alle Dosen nacheinander über den Daemon schaltet. In den Webinterface-Dateien von xkonni ist in der index.php schon eine Schleife drin, in der über die Liste von Geräten aus der config.php iteriert wird. Das könnte man gleich als Ausgangspunkt für die Schleife nehmen.
Aber das sind nur so ein paar Ideen. Ganz ohne grundlegende Kenntnisse in Python (sehr einfach zu lernen!) oder PHP (auch recht simpel) wirds schwer, aber wenn man sich ein bisschen damit beschäftigt, ist das durchaus auch für einen Anfänger machbar.
Hallo Alexander,
ich habe jetzt dein Webinterface , aber da gibts auch keine Zeitschaltung.
Hi dobi,
das ist genau mein Webinterface, das ich dir da gepackt habe. Unten müsste eine Auswahl für die verschiedenen Verzögerungen zum schalten erscheinen – analog zum „Original“ Webinterface von raspberry-remote.
Oder meinst du eine Zeitschaltung mit definierbarer Uhrzeit?
Hallo,ja genau das meinte ich! Da wo man die Uhrzeit zum schalten einstellen kann.
Sorry habe mich falsch ausgedrückt :-(
Danke
Hi dob,
ach so – das ist bisher bei keinem der hier vorgestellten Webinterfaces implementiert. Das ist schon eine ganze Ecke schwieriger, da der Daemon nur mit delays (also Verzögerungen) arbeitet. Man müsste also ein Formular für die Auswahl der Zeit einfügen, die Werte dann z.B. per JavaScript verarbeiten und die Differenz von der aktuellen Zeit zur eingegebenen Zeit in Minuten berechnen und diesen Wert als Argument an die PHP-Funktion übergeben.
Vll finde ich mal Zeit und Lust das umzusetzen, momentan ist meine Motivation dafür eher gering, da ich die Funktion eigentlich nicht benötige ;)
Hallo Alexander, danke für die Antwort.
Ok verstehe, danke dir.
Achso, ich komme bei dem On-Off Butten nicht weiter.
Ich finde kein passenden der mir den schaltzustand richtig anzeigt.Beim schalten kriege ich nicht die passende Grafik hin.Es ist immer irgendwie verschoben.
Die größe habe ich eingestellt wie du mir oben geschrieben hast.
Danke
Hi dobi,

ich hab dir die 2 Dateien mal hier gepackt.
Wenn du andere willst, musst du bei diesem Webinterface genau darauf achten, dass sie exakt übereinander liegen. Du kannst aber auch mit 2 einzelnen Button-Bildern arbeiten, dann musst du die styles.css anpassen, etwa so:
Hallo Alexander.
Super, Vielen Dank!
Hallo,
erstmal herzlichen Dank für das tolle Tutorial! Ich habe alles soweit zum laufen bekommen und hab mich echt drüber gefreut…
Ich habe allerdings das Problem, dass ich das Automatisieren des daemons nicht gebacken bekomme. Ich habe die Anleitung oben für den Start des daemon bei Systemstart mind. 3 mal wiederholt… Ich habe gecheckt, ob die Dateien in den entsprechenden Ordnern sind… alles okay. Trotzem geht es nach einem Neustart nicht und ich muss den daemon immer erst manuell starten.
Hast Du eine Idee woran das liegen kann?
Danke für Deine Hilfe!
Hallo Christian,

ich habe mir vor kurzem selbst ein Script gebastelt, das den Daemon automatisch startet und (wenn er abgestürzt sein sollte) automatisiert neu startet. Vielleicht hilft dir das weiter:
Zur Verwendung: Zuerst sollte der daemon umbenannt werden in daemon_remote. Dazu die Datei „daemon“ 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 legst du noch 2 Einträge in der root-crontab an: „sudo crontab -e“ -> dort diese Zeile einfügen: „@reboot cd /home/pi/ && ./daemon_restart.sh“ und noch diese: „*/15 * * * * cd /home/pi/ && ./daemon_restart.sh“ (jeweils eine eigene Zeile), 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.
Ich hoffe, das hilft dir weiter. Über eine Rückmeldung würde ich mich freuen, dann baue ich das in das Tutorial ein.
Hallöchen,
das script war leider nicht von Erfolg. Es geht immer noch nicht. :( Ich habe es 2 mal probiert, aber es hat nichts gebracht…
Muss im crontab die Zeilen einfach unten drunter kopieren oder dabei irgendwas beachten?
Die daemon_restart.sh ist auf jeden Fall richtig angelgt, hat auch 755-Rechte…
Weiß nicht woran es liegen soll. Kann es an RaspBMC liegen? Sollte ich noch irgendwas nachinstallieren?
Aber wenn das Starten des daemon über das Terminal geht und dieser funktioniert, dann sollte es auch auch automatisch gehen, oder?
Hi Christian,
merkwürdig. Ich muss allerdings auch gestehen, dass ich mich mit Raspbmc nicht wirklich auseinandergesetzt habe bisher. Wenn alles von der Konsole aus funktioniert, muss es ein Problem mit cron sein.
Was ich so auf die Schnelle in der Raspbmc-FAQ gesehen habe: „Q: Why does cron not work? A: You need to enable it in Raspbmc Settings.“. Hast du das schon mal gemacht? Wie ich das verstehe ist das ein eigener Menüpunkt in der Raspbmc-GUI, der sich dort einfach aktivieren lässt.
Ansonsten wären die System-Logs (/var/log/syslog) interessant, ob die cronjobs überhaupt ausgeführt werden.
Hallo Alex,
in der Tat war Crontab bei RaspBMC nicht standardmäßig aktiviert… Nach dem Aktivieren ging es allerdings auch noch nicht ohne Probleme, da die Anleitung einen kleinen Fehler enthält.
Du sagst erst, dass man „daemon_restart.sh“ erstellen soll, dann im crontab aber „restart_daemon.sh“ eintragen soll… Wenn man da „daemon_restart.sh“ nutzt, dann geht es. Ist nur ein kleiner Fehler, den Du aber beheben solltest, wenn Du das in das Tutorial aufnehmen möchtest. Wie gesagt, bei mir geht das script.
Hallo Christian,
da hast du natürlich völlig recht! Hab den Kommentar eben editiert und werde das Ganze (in hoffentlich korrekter Fassung) in den Artikel aufnehmen.
Danke für die konstruktive Rückmeldung!
Hallo zusammen,
ich habe mal ein Programm geschrieben, das von einem Android Gerät aus die Dosen schalten kann und auch mit Infrarot Geräten umgehen.
http://server47.de/homecontrol/
Würde mich über konstruktive Kommentare freuen.
Viele Grüße,
Jens
Hi Alex, vielen Dank für das Tutorial. Hat auf Anhieb geklappt :-)
Hoffentlich folgen noch weitere coole Tutorials.
lg, Lukas
Hi ich habe da eine frage, ich habe Steckdosen bei den man den Code nicht von alleine eingibt, sondern die Steckdose stellt sich automatisch an die Fernbedienung ein. indem man die dose ein steckt und dann erst die gewünschte ein taste drückt auf die die dose reagieren soll und um sie wieder von der taste zu lösche drückt man die aus taste. Meine frage ist, was muss ich da einstellen ?
Hallo arkadiusz,
leider habe ich selbst keine Erfahrung mit selbstlernenden Funksteckdosen. Sollten sie keinen „rolling code“ haben, also ein Code, der sich ständig ändert, sollte man die Dosen auch ohne größere Probleme vom Raspberry Pi aus ansteuern können. Das vorgestellte Programm wird allerdings ohne Änderungen am Programmcode nicht mit den Dosen funktionieren, da es nur für das bekannte Elro-Protokoll ausgelegt ist.
Du kannst dein Glück aber z.B. mal mit pilight probieren. Damit kannst du die Fernbedienung auch auslesen (siehe hier). Dazu benötigst du natürlich auch einen 433MHz-Empfänger.
Hallo Alexander,
danke für deine Antwort.
Ja ich werde es probieren!! Zum glück hab ich direkt sender und Empfänger gekauft, ich dachte mir schon das es für etwas gut sein wird !!!
Hallo,
ich habe vor kurzem das Problem das wenn ich im Web Interface die Buttons zum schalten drücke nix passiert. Das lustige ist jedoch das es vorher funktioniert hat und das einzigste was anders sein könnte ist die SD die ich geclont habe.Mit Voice Control funk. es weiterhin.
Freundliche Grüße
Hi Niklas,
klingt sehr merkwürdig. Aber zumindest kann man dann einen Harware-Defekt des Senders schon mal ausschließen. Der Unterschied zw. der Sprachsteuerung und dem Webinterface liegt darin, dass beim Webinterface der Daemon verwendet wird. Ich würde erst einmal einen Blick in den Fehler-Log von Apache (oder welchen Webserver auch immer du verwendest) werfen. Wenn die komplette Karte geclont wurde, sollten eigentlich keine Probleme auftreten, aber man weiß ja nie. Ansonsten evtl. den Daemon noch mal neu kompilieren und starten.
Danke für die Antwort,
wenn ich denn Daemon neu kompilieren will steht da:
make: ‚daemon‘ is up to date.
Grüße
Hi Niklas,
entferne doch mal die alte kompilierte daemon-Datei mit „sudo rm daemon“. Dann sollte er dich den Daemon nochmal kompilieren lassen.
Das Deamon neu zhu kompilieren hat das Problem leider nicht gelöst auch im Log scheint nix auffäliges zu sein
Hi Niklas,
allmählich gehen mir die Ideen aus ;)
Was du noch testen könntest: Führe den Daemon mal im Vordergrund in der Konsole aus und schau, ob er was ausgibt, wenn du einen Button im Webinterface drückst.
Ansonsten könntest du natürlich auf einem anderen PC im Netzwerk z.B. einen kleinen Socket-Client aufsetzen, der mit dem Daemon außerhalb des Webinterfaces kommuniziert. Ich habe so etwas z.B. hier in Python umgesetzt (zum Auslesen des Status einer Steckdose). Analog kannst du hier die Steckdosen mit anschalten, indem du statt der „2“ eine „1“ übermittelst. Sollte das funktionieren, kann man das Problem zumindest schon mal auf das Webinterface eingrenzen.
Hallo,
nach einer kompletten neu installation hat es dann funk.
Danke trz.
Noch eine Frage kann man in der Voice Control app auch domains als ip angeben die ich per DYNDNS geschaltet habe ? Soweit funkt. alles außer das Voice Control per domain ip :/
Hi Niklas,
merkwürdige Sache, aber schön, wenn es nach einer Neuinstallation wieder funktioniert :)
Zu der Sprachsteuerung: Statt der IP-Adresse sollte man Problemlos auch eine Domain eingeben können (die Adresse wird in der App als Datentyp „string“ gehalten, sodass das kein Problem sein sollte). Wichtig wäre dann halt eine Portfreigabe von deinem Router für Apache (Standard: 80). Das ist allerdings ein ziemliches Risiko, da man über die detect.php auch andere Dinge hochladen könnte und die Schnittstelle auch nicht abgesichert ist. Ich persönlich würde die App aus der Ferne nur mit VPN nutzen.
Ohne VPN würde ich dir eher zu meiner anderen vorgestellten Lösung mit AIVC raten, da hier das Webinterface auch mit htaccess abgesichert werden kann (die Daten dazu können fest in der App hinterlegt werden, sodass die Bedienung sehr bequem ist).
„Jetzt muss noch in der config.php Datei die IP Adresse des Raspberry Pis angepasst werden: dazu einfach nano verwenden.“
Und da komme ich nicht weiter
Kann mir das jemand in 1-2 Sätzen erklären?
Danke
Hallo HerBert,
in der config.php muss nur der Wert von „$target“ (Zeile „$target = ‚192.168.11.124‘;“) umgeändert werden auf die IP Adresse des Raspberry Pi. Du kannst aber die Zeile auch einfach mit „$target= $_SERVER[‚SERVER_ADDR‘];“ ersetzen.
Hallo Alexander
Bin mit deiner Hilfe einen Schritt weiter. Hatte mir WinSCP installiert auf meinem Rechner
und die Datei mit edtiert (die richtige IP eingetragen). Webinterface kann ich nun starten, nur
ohne das ich damit etwas schalten kann, da muss ich wohl noch die Datei auf meinem Code anpassen.
Was mir nur nicht gelungen ist wie im TUT beschrieben ist der Automatischer Start des Daemon und Neustart bei Absturz.
Da habe ich noch ein Umsetzproblem…
Hallo HerBert,
hast du in der config.php die entsprechenden Codes für deine Steckdosen eingetragen?
Hallo Alexander
Ja das habe ich gemacht.
Nur dieser FS1000A ist wohl von der Senderleistung nicht der Hit.
Das funktioniert, nur halt nicht der Autostart beim neuen booten des Pi.
Sowie wird die WebGUI auf den Handy ist nicht so dolle da zu groß angezeigt wird.
Ich habe mir nun mal zur Verbesserung der Senderleistung ein 5-12 Volt Sender bestellt,
mal schauen ob er verbesserung bringt.
mfg HerBert
_____________________________________________________________
Also Codes habe ich die Standartcodes eingetragen, erst mal.
Hi HerBert,
zur Reichweite: Auch der verlinkte Sender kann mit 3-12V betrieben werden! Erfahrungsgemäß hilft eine ca. 17cm lange Antenne (z.B. ein Stück Draht) am Antennen-Pin des Senders aber bereits sehr viel. Betreibe meinen Sender mit 3,3V und Antenne vom Keller aus und komme ohne Probleme in den ersten Stock. Vermutlich gibt es bei diesen billigen Sendern aber auch große Qualitätsunterschiede, da mein Sender, den ich für den Banana Pi gekauft habe (gleiches Modell) eine wesentlich geringere Reichweite hat.
Hast du ein konkretes Problem mit dem Autostart? Das Skript an sich sollte passen, habe es selbst auf meherern Geräten im Einsatz und auch andere Leser haben die Funktionstüchtigkeit bestätigt. Hast du mal einen Blick in den Log des Systems geworfen nach dem Booten (zu finden unter /var/log/syslog)?
Zur WebGUI: Welches Interface benutzt du? Das von Dan (darauf habe ich auf meines entwickelt) sollte eigentlich auch super auf Smartphones dargestellt werden. Das Interface kannst du zu Testzwecken (oder auch so) auch neben dem anderen Interface nutzen. Dazu einfach z.B. einen Ordner /var/www/remote2 anlegen, in den du die Dateien legst.
Heyho,
hab das Tutorial durchgearbeitet und es hat auch alles soweit geklappt. Allerdings bekomme ich wenn ich das Webinterface aufrufen möchte folgende Fehlermeldung:
Error respone
Error code 403.
Message: Not Serving Client „IP Adresse“
Error code explanation: 403 = Request forbidden — authorization will not help.
Liegt das daran, dass der Port nicht freigegeben ist oder was ist das Problem? Die config.php habe ich mit der IP des RasPi’s angepasst, daemon auch neu kompiliert.
Hoffe du kannst du helfen – Danke =)
Gruß Micha
Hi Michael,
betreibst du den Raspberry in einem anderem Netz als den Client, von dem du die Steckdosen aus schalten möchtest? Wenn ja muss zumindest der Port 80 für den Webserver in der Router-Firewall freigegeben werden. Der Port des Daemons muss nicht freigegeben werden, wenn nur das Webinterface genutzt werden soll.
Der Fehler 403 beschreibt, dass der Zugriff für den Client verboten ist. Das ist vermutlich allerdings weniger eine Sache des Raspberry Pi als einer Firewall o.ä.. Im Error-Log von Apache wird kein derartiger Fehler angezeigt, oder?
Hallo Alexander,
hab den Fehler schon selbst herausgefunden. Der Error-Log hat keinerlei Dinge angezeigt, allerdings kam beim Versuch den apache2 Server zu starten die Fehlermeldung, dass die IP bereits verwendet wird. Ich hab noch plexconnect auf dem RasPi installiert, das automatisch beim booten gestartet wird und dauerhaft die IP benutzt. Nachdem ich PlexConnect gestoppt habe, klappt alles einwandfrei. Gibt es irgendeine Möglichkeit die 2 Programme parallel nebeneinander laufen zu lassen oder gibt das dann einen IP-Konflikt oder so? Bin nicht ganz so der Experte in dem Thema.
Danke für die schnelle Hilfe!
Gruß Micha
Hi Michael,
verstehe – das ist natürlich fies ;)
Bei PlexConnect habe ich gelesen, dass man dort die Port-Nummer leider nicht anpassen kann. Was du also machen müsstest, wäre die Port-Nummer deines Webservers zu ändern. Bei Apache muss dazu die Datei /etc/apache2/ports.conf bearbeitet werden. Dort kannst du einen anderen Port festlegen:
Standard:
NameVirtualHost *:80
Listen 80
Anderer Port (hier: 8080):
NameVirtualHost *:8080
Listen 8080
Anschließend muss noch die Datei /etc/apache2/sites-enabled/000-default bearbeitet werden:
Standard:
VirtualHost *:80
Anderer Port (wieder 8080):
VirtualHost *:8080
Jetzt noch Apache neu starten: sudo /etc/init.d/apache2 reload
Ab sofort sollte der Apache Webserver unter http://[IP_Raspberry]:8080 erreichbar sein. Alle Unterordner etc. müssen in der URL dann nach „:8080“ angehängt werden, also z.B. der Ordner „remote“ wäre zu erreichen unter http://[IP_Raspberry]:8080/remote
Mit der IP-Adresse ist das übrigens kein Problem, es liegt hier nur an der Portnummer, die von 2 Diensten gleichzeitig benutzt wird.
Ich hoffe, das löst dein Problem :)
Hey Alexander,
klappt perfekt – vielen Dank!
Gruß
Hi
Danke für das Super tut @Alexander hat alles auf Anhieb funktioniert.
@Matteo habe dein Webinterface als Vorlage genutzt und mir mein eigenes Design gebastelt hoffe das ist in Ordnung.
Eine frage habe ich wie kann ich mehre Steckdosen gleichzeitig schalten z. B. alle Gleichzeitig ausschalten, alle gleichzeitig einschalten
Hier noch ein Bild wie es auf meinem Android ausschaut.
http://abload.de/img/smartcontrolxly3f.png
Hi Heiko,
da gibt es vermutlich unzählige Möglichkeiten das umzusetzen ;)
Ein Beispiel wäre am Ende einen Button für „alles an“ und einen für „alles aus“ einzubauen und dort z.B. über die PHP-Funktion „shell_exec“ ein Bash-Script zu verlinken, das die Befehle für alle Steckdosen enthält.
Sollen nur bestimmte Steckdosen geschalten werden, könnte man das Webinterface noch um Checkboxen (bzw. 2 Boxen, eine für „an“, eine für „aus“) bei den jew. Steckdosen erweitern, deren Werte dann als Formular vom PHP-Script gelesen werden und dann entsprechend geschaltet wird.
Das sind aber nur grobe Ideen, habe das selbst noch nicht umgesetzt – machbar ist es auf jeden Fall ;)
Das sind aber nur grobe Ideen
Danke für deine Tips,
Habe jetzt 2 php dateien erstellt eine zum anschalten und die andere zum ausschalten. Wenn ich die direkt aufrufe dann geht das Wunderbar.
Wie kann ich die am besten in das webinterface einbauen. So das es das selbe Desing hat und den Wechsel mechanismus beibehalten kann.
Wäre dir voll dankbar wenn mir da weiterhelfen könntest
Anlage
all-off.php
all-on.php
Hallo Heiko,
erstmal sorry für die verspätete Antwort – bin gerade erst dazu gekommen ;)
Zu deiner Umsetzung: Das ist auch eine gute Idee! Verwendest du in den PHP-Dateien den Socket-Server oder den send-Befehl? Bei ersterem sollte sich der Status der Dosen im Webinterface automatisch anpassen, daher wäre das die bevorzugte Lösung. Zum Einbauen: Eigentlich müssten 2 Button reichen, die einen HTTP-Request auf die jeweiligen PHP-Dateien bei Klick machen, ein Aufruf der Dateien im Browser sollte damit umgangen werden können. Habe ich selbst unter PHP noch nicht gemacht, sollte aber ähnlich gut funktionieren, wie unter Python usw.
Hi
OT: Das mit der späten Antwort ist doch kein Problem. Jeder von uns hat ein real life.
Zu der Schaltung ich schalte das über den send Befehl.
wenn mir das erkärst wie das mit dem socket geht kann ich das abändern.
Das mit den 2 buttons ist kein Problem. Das habe ich schon hinbekommen.
1. Aber ich will dasselbe Design haben wie ich bei den andern steckdosen auch habe.
[url=http://abload.de/image.php?img=smartcontrolxly3f.png][img]http://abload.de/img/smartcontrolxly3f.png[/img][/url]
(ist ein älteres Bild sind jetzt mehr Steckdosen)
2. Will den Wechselmodus bei behalten also 1 butten. erster Klick alles aus dann selben butten nochmal klick alles an.
Kannst mir vllt erläutern wie ich das bei mir umsetzen kann?
Hallo Heiko,
hmmm….ich persönlich würde das über den Socket-Server lösen, indem ich den Code erweitere um eine alles-aus oder alles-an-Funktion. Dann könntest du auch den Status des „Alles“-Buttons auf allen Geräten synchron halten.
Zum Thema Socket-Server kann ich den Quellcode von raspberry-remote empfehlen oder einen in Python zu schreiben (meiner Meinung nach einfacher, siehe z.B. hier). Damit könntest du neben den Send-Befehlen für einzelne Dosen auch einen alles-Befehl integrieren, von dem du dann auch den Status im Webinterface wie gewünscht abfragen kannst.
Eine andere Möglichkeit wäre zwar zum Schalten in deinen PHP-Scripts den normalen Socket-Server von raspberry-remote zu benutzen aber zusätzlich z.B. in eine Textdatei (sagen wir mal alles.txt) den aktuellen Wert des „Alles“-Status zu schreiben und dann immer auszulesen, wenn das Webinterface dargestellt wird. Dann könntest du das wie in der index.php von raspberry-remote lösen (über eine einfache if-Abfrage den jew. Code für an oder aus aufrufen).
Ich hoffe meine Gedanken waren einigermaßen verständlich ;)
Es gibt aber vermutlich noch unzählige andere Lösungen für dein Anliegen, das waren nur mal meine ersten Gedanken dazu.
Ich benutze das Design von Matteo und bei mir fehlen die Schalter. ich habe daemon auch schon neu hochgefahren , trotzdem geht nix , was tue ich falsch ? Bitte helfen.
Das steht immer : Could not connect to socket .
Hi Philipp,
diese Meldung kommt, wenn der Daemon nicht erreichbar ist. Wenn ein Neustart des Daemons nichts bewirkt hat, kann es sein, dass eine Firewall in deinem Netzwerk den entsprechenden Port blockiert.
Ich hab das gleiche Problem. Mein Rpi fungiert neben der Raumsteuerung als Wlan Router. Er hat bis jetzt immer ein neues Netzwerk erstellt. Also mit einem neuen Berecih von IP Adressen. Jetzt hab ich ihn mal für den Brideged Modus konfiguriert. Wlan funzt. Sew Server ist auch erreichbar, bloß seht da eben immer: „Could not connect to soccet“ Kann das was mit der Firewall des Rpis zu Tun haben.?
Hi Marc,
wenn das Problem nach der Netzwerkänderung auftrat, vermute ich eher, dass es mit der in der config.php eingetragenen IP zusammenhängt. Trage hier mal für source und target „127.0.0.1“ (localhost) ein und probiere es dann nochmal. Ansonsten würde ich mal einen Blick in den Apache Error-Log werfen, dort sollte das genaue Problem zu finden sein.
Die Apache Error Log Datei meldet:
[Tue Jul 07 15:18:08 2015] [notice] caught SIGTERM, shutting down
[Tue Jul 07 15:18:38 2015] [notice] Apache/2.2.22 (Debian) PHP/5.4.41-0+deb7u1 configured — resuming normal operations
[Tue Jul 07 15:19:48 2015] [error] [client 192.168.178.20] PHP Notice: Undefined index: 192.168.178.21 in /var/www/remote/config.php on line 13, referer: http://192.168.178.21/remote/index.php?delay=60
[Tue Jul 07 15:19:48 2015] [error] [client 192.168.178.20] PHP Warning: socket_bind(): Host lookup failed [-10004]: No address associated with name in /var/www/remote/index.php on line 97, referer: http://192.168.178.21/remote/index.php?delay=60
[Tue Jul 07 15:19:49 2015] [error] [client 192.168.178.20] PHP Notice: Undefined index: 192.168.178.21 in /var/www/remote/config.php on line 13, referer: http://192.168.178.21/remote/index.php?delay=60
[Tue Jul 07 15:19:49 2015] [error] [client 192.168.178.20] PHP Warning: socket_bind(): Host lookup failed [-10004]: No address associated with name in /var/www/remote/index.php on line 97, referer: http://192.168.178.21/remote/index.php?delay=60
[Tue Jul 07 15:19:50 2015] [error] [client 192.168.178.20] PHP Notice: Undefined index: 192.168.178.21 in /var/www/remote/config.php on line 13, referer: http://192.168.178.21/remote/index.php?delay=60
[Tue Jul 07 15:19:50 2015] [error] [client 192.168.178.20] PHP Warning: socket_bind(): Host lookup failed [-10004]: No address associated with name in /var/www/remote/index.php on line 97, referer: http://192.168.178.21/remote/index.php?delay=60
Bei Zeite 13 handelt es sich um:
$source = $_SERVER[‚192.168.178.21‘];
(IP vom RaspberryPi)
Bei Zeile 96 handelt es sich um:
socket_bind($socket, $source) or die(„Could not bind to socket\n“);
Bin langsam ratlos. Hab schon das ganze Tutorial neu gemacht. Aber es hilft nix.
Hi Marc,
ich würde die Zeile 13 wie beschrieben mal ändern in
$source = $_SERVER[‚127.0.0.1‘];
und schaun, ob es damit geht.
mit:
$source = $_SERVER[‘127.0.0.1′];
hat es nicht funktioniert.
Es bleibt beim: „Could not connect to socket“
Hi Marc,
das ist natürlich ärgerlich. Falls du die neueste Version von raspberry-remote auf dem Raspberry Pi laufen hast, kannst du mal eine ältere Version wie in diesem Kommentar beschrieben installieren.
Ansonsten kannst du z.B. ein kleines Python-Script schreiben, das sich mit dem Socket-Server verbindet, um zu sehen, ob es an Apache / PHP liegt.
Gab es irgendwelche Updates, die du vor dem Verbindungsproblem installiert hast?