Entries tagged Router

Mit Arduino und Android 434MHz Funk Steckdosen schalten

Posted on 10. April 2013 Comments

Schon lange wollte ich die Funksteckdosen wieder hervorräumen und mit meinem ebenfalls schon eingestaubten Arduino Uno (rev 3)und einem 434MHz Sender von watterot wieder in Gange bringen. Das Ganze gestaltet sich aufgrund der RCSwitch Library relativ einfach. Ich benutze hier im Gegensatz zum homecontrol4me-Projekt (mit kostenpflichtiger Android App) die Arduino IDE 1.0 aus den Ubuntu Repositories. Das hatte zur Folge, dass man den Beispielcode etwas anpassen muss. Dazu muss man aber auch sagen, dass ich hier keine Sicherheit eingebaut habe, jeder der die (interne) IP vom Arduino kennt, kann HTTP-Requests absenden und damit wild meine Geräte an- und ausschalten, NAT ist ja nicht wirklich ein Sicherheitsfeature.

Arduino

Sketch: Download (github)

Weil Arduino 1.0 die neuen libraries enthält muss für Server immer EthernetServer und für Client immer EthernetClient geschrieben werden. Ausserdem müssen die beiden Dateien EthernetServer.h und EthernetClient.h included werden. Am besten kann man das mit Strg+F(Suchen+Ersetzen) machen.

Die Funktion httpResponseHome() stellt die Website dar. Im Grunde bräuchte man das nicht, wenn man nur die Android App benutzen möchte.

 

Android

Android-Projekt für Eclipse: Download (github)screenshot-lichtsteuerung

Im Grunde muss man nur HTTP-Requests absetzen, die /?1-On usw. hinter der IP stehen haben. In Android dürfen keine langen Operationen, also hier Netzwerkverbindungen, in der MainActivity aufgebaut werden. Dafür habe ich die Klasse Network.java geschrieben, welche über einen AsyncTask Threads mit den HTTP-Requests startet. Weil sich das bei Lampen anbietet, habe ich ToggleButtons genommen. Diese haben das Attribut  android:onClick=“onToggleButton1Clicked“. Für jeden dieser Button habe ich eine entsprechende Methode in der mainActivity.java, die diesem Schema folgen. update: weil es manchmal hakte, hab ich eine loop eingebaut, die die Requests an die Network-Klasse drei mal sendet. Das löst zwar nicht das Problem(was immer es war), aber es funktioniert.

public void onToggleButton1Clicked(View v) {

boolean on = ((ToggleButton) v).isChecked();

        if (on) {
            loop(LICHT1ON);
        } else {
            loop(LICHT1OFF);
        }

 

In Requests.java finden sich ein Haufen Strings nach dem Schema:

public static final String IP = "http://192.168.1.42/";
public static final String LICHT1ON = IP + "?1-on";

Da ich den Code hier sehr simpel (und damit natürlich auch unsicher) gehalten habe, war’s das auch schon. Den Arduino und den Sender habe ich dann in eine Box hinter den Schrank gestellt und ein altes Netzteil zur Stromversorgung benutzt.

arduino-lichtsteuerung

Credits
Den Async Task Code habe ich (leicht editiert) von Konstantin Burov von stackoverflow.com.

Den Code für die ToggleButtons habe ich aus der Developer API von Google.

Der Arduino Code stammt überwiegend von RCSwitch aus der Datei /examples/Webserver/Webserver.pde. Ich habe die oben genannten Anpassungen an Arduino 1.0 vorgenommen, mal abgesehen von der Anpassung an meine Steckdosen.

DynDNS auf OpenWrt mit updatedd

Posted on 24. Juli 2011 Comments

Nachdem ich mir irgendwie LuCI und Webif² zerschossen habe auf meinem WRT54GL und mein DynDNS nicht mehr funktionierte, musste ich das ja irgendwie über SSH wieder anstellen. Es hat mich einige Zeit gekostet das passende Programm zu finden. Auf einer Website fand ich den Hinweis, dass es sich hierbei um updatedd handelt, einfach mal eingetippt bekam ich die folgende Meldung:

root@router:/usr/bin# updatedd --help

Usage: updatedd [OPTION]... SERVICE -- ...

Please use `updatedd-wrapper' instead of updatedd.

Options:
-L        list installed plugins (services) and exit
-Y        use syslog
--help    print help and exit
--version    print version information and exit

Report bugs to <updatedd@philipp-benner.de>.

Mit updatedd -L bekommt man zu sehen, welcher Service installiert ist.

root@router:/usr/bin# updatedd -L

Services:
dyndns

Die Zugangsdaten für den DynDNS Account liegen in /etc/config/updatedd:

config 'updatedd'
	option 'service' 'dyndns'
	option 'username' 'alice'
	option 'password' 'secret'
	option 'host' 'bob.dyndns.org'
	option 'update' '1'

Denke mal der Aufbau ist selbsterklärend. Wenn man sich ein bisschen umguckt, findet man auch noch die Datei /etc/init.d/updatedd, die man, entgegen des Hinweises von updatedd, updatedd-wrapper zu benutzen, startet, den Service zu updaten:

root@router:/# /etc/init.d/updatedd start
Connecting to checkip.dyndns.org (1.2.3.4:80)
updatedd_ip_check    100% |*******************************|   104  --:--:-- ETA

bzw.

/etc/init.d/updatedd enable

für den Autostart.

Zonet ZSr0104WE Router Sicherheitslücke

Posted on 8. Februar 2008 Comments

Wie sich aus dem Quelltext(folgt noch) erkennen lässt, kann man einfach hinter die IP(standardmässig 192.168.2.1)

/cgi-bin/login.exe

schreiben und ist im Konfigurationsmenü:)