Billiglösung Funksteckdosen mit Netzzugang …

Was macht man, wenn man einen Raspberry-Pi über hat und ständig auf der Suche nach der Fernbedienung für die Funksteckdosen ist? Richtig, man gibt dem Pi eine neue Aufgabe.

das Ergebnis:

rps20141217_125231

Screenshot_2014-12-16-12-22-09 (Small) Screenshot_2014-12-16-12-24-02 (Small)

die Hardware:
  • RaspberryPi
  • WLAN-Dongle
  • 433MHz-Sender –> zB bei Amazon für 5€
  • ein paar Kabel –> zB bei Amazon für 5€
die Software auf dem Pi:
  • Raspbian
  • rcswitch-pi
  • wiringPi
  • Apache2
  • PHP5
die Software (Apps auf dem Smartphone):
  • Tasker
  • AutoRemote
das Konstrukt:

Konstrukt

Step 1 – das OS installieren:

Ich nutze für den Pi am liebsten ein Debian. Es liegt da sehr nahe, dann ein Raspbian zu nutzen. Um das Image auf eine SD-Karte zu bekomme, nehme ich den Win32DiskImager.

  • Raspbian besorgen –> Link
  • Win32DiskImager besorgen –> Link
  • Image auf SD-Karte schreiben
Step 2 – den Empfänger an den Pi basteln
  • PIN 1 – Sender auf PIN 11 – Pi (GPIO 17)
  • PIN 2 – Sender auf PIN 2 – PI (5V)
  • PIN 3 – Sender auf PIN 6 – PI (Ground)
Step 3 – Raspbian das erste mal starten und etwas anpassen

Beim ersten Start fährt Raspbian mit einem Konfigurationsmenü hoch.

  • Passwort setzen
  • SSH-Server starten
  • Systemnamen ändern
  • Systempartition etwas vergrößern

WLAN einrichten, falls gewünscht (geht auch per Shell, aber per GUI geht es fixer)

  • startx
  • wpa-config auf dem Desktop ausführen

git installieren

  1. apt-get update
  2. apt-get upgrade
  3. apt-get install git-core
Step 4 – „wiringPi“ und „rcswitch-pi“ installieren
  1. cd [ZIELORDNER]
  2. git clone git://git.drogon.net/wiringPi
  3. cd wiringPi
  4. ./build
  5. cd [ZIELORDNER]
  6. git clone https://github.com/r10r/rcswitch-pi.git
  7. cd rcswitch-pi
  8. make
Step 5 – Skript basteln

kommt noch

Step 6 – einfache Website basteln

Da mein Pi vom Internet aus nicht erreichbar ist, habe ich eine stupide simple Website gebastelt. Die Security übernimmt mein Webserver :)

kommt noch

Step 7 – Webserver anpassen, der auf den Pi-Webserver zugreift

Ich nutze ein kleines Hilfs-Skript, um das Website-Skript (die Schnittstelle zwischen Tasker und dem heimischen Netz) etwas zu entlasten/sauberer zu halten. Das Skript kann man auch ohne Datenbankzugriff realisieren, aber ich brauchte etwas um den Zustand ab zu speicher und ihn später wieder abfragen zu können.

/usr/src/scripte/smarthomefs.pl

Skript1

Skript2

Auf der Website, die auch vom Internet aus erreichbar ist, müssen dann nur entsprechende Zeilen ausgeführt werden. Die komplette Seite werde ich hier nicht posten, da sie noch etliche Aufgaben mehr ausführt (zB die AVM-DECT-Steckdosen schalten).

/var/www/website.php

Skript3

Skript4

Skript5

Step 8 – in Tasker einen bzw je nach Anzahl der Funksteckdosen mehrere Tasks erstellen

Videowand (6)

  1. A1: If [ %SmhA1 gl off ]
  2. A2: HTTP Get [ Server:Port:dieurlzuhause.net Pfad:website.php/smart=ona4 Attribute: Cookies: User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Timeout:10 MIME Typ: Ausgabe Datei: Trust Any Certificate:Aus ]
  3. A3: Variable Setzen [ Name:%SmhA1 Zu:on Mathematisch:Aus Hinzufügen:Aus ]
  4. A4: Wähle Widget Icon [ Name:Videowand Icon:ipack:ilikebuttonshd:perspectivebutton_go ]
  5. A5: Else
  6. A6: HTTP Get [ Server:Port:dieurlzuhause.net Pfad:website.php/smart=offa1 Attribute: Cookies: User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Timeout:10 MIME Typ:text/* Ausgabe Datei: Trust Any Certificate:An Task Weiter Ausführen Nach Fehler:An ]
  7. A7: Variable Setzen [ Name:%SmhA1 Zu:off Mathematisch:Aus Hinzufügen:Aus ]
  8. A8: Wähle Widget Icon [ Name:Videowand Icon:ipack:ilikebuttonshd:perspectivebutton_stop ]
  9. A9: End If

Dem Task verpassen wir jetzt noch ein Icon und platzieren ihn als Widget auf den Homescreen

Screenshot_2014-12-16-12-22-09 (Small)

Step 9 – Zustand der Icons aktualisieren lassen (mit AutoRemote)

Im Skript von Step 7 (/usr/src/scripte/smarthomefs.pl) gibt es Zeilen, die das autoremote-Skript aufrufen. Kurz: dieses Skript nimmt Kontakt mit dem AutoRemote-Plugin des Smartphones auf. Eine etwas ausführliche Vorgehensweise für AutoRemote hatte ich hier beschrieben.

Step 9.1 – AutoRemote öffnen, URL-Shortener folgen und Link rauskopieren

AutoRemote-ShortenerAutoRemote-URL

Step 9.2 – Skript /usr/src/scripte/autoremote.pl

Skript

Syntax-Erklärung (Skript von Step 7)

rot –> Skript, grün –> Ziel, blau –> Aufgabe (CFS)

Skript6

Step 9.3 – Profil in Tasker erstellen

Nachricht Aufgabe PasswordProfil

Task in Tasker erstellen

Task: AutoRemote

  1. A18: If [ %dieaufgabe1 gl CFS ]
  2. A19: Task Ausführen [ Name:SmarthomeStromPi Priorität:%priority Parameter 1 (%par1): Parameter 2 (%par2): Rücksetzungswert Variable: Stop:Aus ]
  3. A20: End If

Task: SmarthomeStromPi

  1. A1: HTTP Get [ Server:Port:dieurlzuhause.net Pfad:website.php/smart=statfs Attribute: Cookies: User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Timeout:10 MIME Typ: Ausgabe Datei: Trust Any Certificate:Aus ]
  2. A2: Variable Setzen [ Name:%splitter Zu:%HTTPD Mathematisch:Aus Hinzufügen:Aus ]
  3. A3: Variable Aufteilen [ Name:%splitter Teiler:<smha1> Basis löschen:Aus ]
  4. A4: Variable Aufteilen [ Name:%splitter2 Teiler:</smha1> Basis löschen:Aus ]
  5. A5: Variable Setzen [ Name:%SmhA1 Zu:%splitter21 Mathematisch:Aus Hinzufügen:Aus ]
  6. A6: Variable Aufteilen [ Name:%splitter Teiler:<smha2> Basis löschen:Aus ]
  7. A7: Variable Aufteilen [ Name:%splitter2 Teiler:</smha2> Basis löschen:Aus ]
  8. A8: Variable Setzen [ Name:%SmhA2 Zu:%splitter21 Mathematisch:Aus Hinzufügen:Aus ]
  9. A9: Variable Aufteilen [ Name:%splitter Teiler:<smha3> Basis löschen:Aus ]
  10. A10: Variable Aufteilen [ Name:%splitter2 Teiler:</smha3> Basis löschen:Aus ]
  11. A11: Variable Setzen [ Name:%SmhA3 Zu:%splitter21 Mathematisch:Aus Hinzufügen:Aus ]
  12. A12: Variable Aufteilen [ Name:%splitter Teiler:<smha4> Basis löschen:Aus ]
  13. A13: Variable Aufteilen [ Name:%splitter2 Teiler:</smha4> Basis löschen:Aus ]
  14. A14: Variable Setzen [ Name:%SmhA4 Zu:%splitter21 Mathematisch:Aus Hinzufügen:Aus ]
  15. A15: If [ %SmhA1 gl off ]
  16. A16: Wähle Widget Icon [ Name:Videowand Icon:ipack:ilikebuttonshd:perspectivebutton_stop ]
  17. A17: Else
  18. A18: Wähle Widget Icon [ Name:Videowand Icon:ipack:ilikebuttonshd:perspectivebutton_go ]
  19. A19: End If

 … und schon ändert sich das Icon auf allen Geräten (Smartphone und Tablet)

Screenshot_2014-12-16-12-24-02 (Small)

Das war jetzt der grobe Weg, wie ich es bei mir realisiert habe. Beim Testen ist mir dann aufgefallen, dass man an den 433MHz-Sender eine Antenne dran löten sollte (ein einfacher Draht).

 

Fazit: Im Vergleich zum Schalten der AVM-Steckdosen gibt es bei dieser Lösung keine Rückmeldung von der Steckdose, ob sie den Befehl erhalten hat oder nicht. Das macht die Lösung mit den AVM-Steckdosen etwas sympathischer, aber auch sehr viel teurer.

 

Basti

Kommentar schreiben

0 Kommentare.

Kommentar schreiben


Hinweis - Du kannst dies benutzenHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>