Archive for the ‘Other’ Category

LED Knight Rider with Arduino

Wednesday, February 2nd, 2011

Beim Herumspielen mit meinem Arduino UNO habe ich mal noch ein Knight Rider LED Stripe gebastelt.

DIY: Türklingel Push Notification für das iPhone

Tuesday, February 1st, 2011

Da ich demnächst umziehen werde, habe ich mich in letzter Zeit ein Bisschen mit Heimautomatisation beschäftigt. Meine Kriterien dafür sind:

  • Keine hohen Kosten
  • Möglichkeit um eigene Programme bzw. Abläufe zu erstellen

Bei meiner Suche bin ich dann auf den Loxone Miniserver gestossen, welcher mich sehr überzeugt hat. Eine Preisanfrage bei einem schweizer Vertreter von Loxone wurde leider abgeschmettert, da dieser Vertreter nicht an Privatkunden liefert. Also ist das für mich vorerst gegessen.

Wie es der Zufall so wollte bin ich dann über einen Artikel im iPhoneBlog gestossen. Darin wird gezeigt wie ein Briefkasten Push Notifications über einen Mikrocontroller sendet und diese auch auf dem iPhone ankommen. Dazu ist die iOS-App Prowl nötig. Da ich Prowl sowieso schon für andere Dinge im Einsatz habe, kommt mir das gerade recht.

Bei dem Mikrocontroller handelt es sich um ein Arduino UNO Board (mehr über Arduino auf Wikipedia). Nach einer kurzen Recherche nach einem Anbieter von Adruino Produkten, bin ich dann im dshop.ch fündig geworden.  Da der Preis für den Mikrocontroller unter meinen Vorstellungen lag, habe ich das Arduino UNO Board und ein Ethernet Shield bestellt. Paar Tage später hatte ich meine Bestellung auch schon im Briefkasten.

Nun aber zum eigentlichen Thema: Die Türklingel soll Push Notifications via Prowl auf mein iPhone senden.

Um das zu realisieren habe ich einen Prototypen gebaut. Dieser Prototyp sendet auf Knopfdruck eine Push Notification auf mein iPhone. Um den Prototypen zu bauen sind folgende Dinge nötig:

  • Arduino UNO Mikrocontroller
  • Arduino Ethernet Shield
  • 1x Breadboard
  • ca. 10x Jumpwire
  • 1x 10kΩ Widerstand 1/4W
  • 1x Taster als Schliesser
  • 1x LED (optional)
  • 1x USB Kabel
  • 1x RJ45 Ethernet Kabel Cat 6.

Wie bereits erwähnt ist die LED optional. Diese habe ich zusätzlich als optisches Signal in die Schaltung eingebaut, muss aber nicht zwingend sein.

Ich habe ein Schaltplan gezeichnet. Dieser ist nicht nach den allgemein bekannten Normen für Schaltpläne gestaltet, sondern soll für jeden klar verständlich sein.

Eine weitere Vorraussetzung für das versenden von Push Notifications ist ein Webserver auf dem ein PHP-Script vom µC aufgerufen werden kann. Dies ist nötig, weil die Prowl API eine SSL Verschlüsselung erfordert. Die Ethernet Library für den Controller unterstützt aber kein SSL.

Auf dem Webserver habe ich also die ProwlPHP Library am laufen. Für die Testzwecke habe ich einfach die example.php aus dem Package auf mich angepasst. Diese example.php wird dann vom µC aufgerufen und somit eine Notification an mein iPhone bzw. mein iPad gesendet.

Ist das PHP-Script auf dem Webserver eingerichtet kann nun der µC programmiert werden. Es ist zu beachten, dass die Ethernet Library kein DHCP kann. Wer die erforderlichen Skills hat, darf eine DHCP Funktionalität gerne implementieren. Da DHCP ausfällt, muss die IP-Adresse sowie die MAC-Adresse direkt im Coding gesetzt werden. Mein Programm für den µC sieht wie folgt aus:

#include <SPI.h>
#include <Ethernet.h>

#define switchPin 7  // Snap action switch which closes when the mailbox door is opened.
#define ledPin 9

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,2 }; // local Arduino IP
byte server[] = { 192,168,1,1 }; // IP of your web server

Client client(server, 80);

void setup() {
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  delay(1000);
  pinMode(switchPin, INPUT);
  pinMode(ledPin, OUTPUT);
  //delay(20000);
}

void loop()
{
  if (digitalRead(switchPin) == HIGH) // if button is pressed:
  {
    digitalWrite(ledPin, HIGH);
    Serial.println("Button pressed");
    if (client.connect()) { //connect to server
      Serial.println("connected to server");
      // Make a HTTP request:
      client.println("GET /~silas/example.php"); //location of ProwlPHP script
      client.println();
    }
    else {
      Serial.println("connection failed");
    }
    delay(1000);
    Serial.print("Response from server: ");
    while (client.available()) {
      char c = client.read();
      Serial.print(c);

    }
    Serial.println();
    // if the server's disconnected, stop the client:
    if (!client.connected()) {
      Serial.println("disconnecting from server");
      client.stop();
    }
    while (digitalRead(switchPin) == HIGH)
    {
      // hold here while button is pressed
    }
    Serial.println("Button released");
    digitalWrite(ledPin, LOW);
    delay(500);
  }
}

Die Source ist abgeleitet von dem WebClient Example in der Arduino IDE.

Da ich als Webserver den internen Apache von Mac OS X verwende habe ich zusätzlich noch ein Shell-Command aufgerufen, welches mir eine Growl Notification am Display anzeigt.

$out = shell_exec('/usr/local/bin/growlnotify -m "Open the door dude!" -t "My Home"');

Wie das ganze in etwa aussieht habe ich hier mal in einem kurzen Video festgehalten.

Viel Spass beim Herumprobieren!

Push E-Mail fürs iPhone ohne Exchange oder mobile.me

Wednesday, August 4th, 2010

Vor langer Zeit habe ich bei vmware.com mal die Virtual Appliances durchstöbert. Dabei bin ich auf das Zarafa Projekt gestossen.

Auf den ersten Blick sieht das Projekt sehr interessant aus. Zarafa bietet eine Weboberfläche analog zur Outlook Webaccess oberfläche von Microsofts Exchange Server. Die Weboberfläche sieht praktisch identisch aus. Kalender, Kontakte, Notizen, Todo’s, etc. ist auch alles vorhanden. Das beste kommt aber noch: Mit dem der Software Z-Push wird das ganze noch iPhone bzw. ActiveSync fähig. Sprich, es werden die selben Funktionen untestützt wie wenn du dein iPhone mit dem Exchangeserver verbindest. Push-Mail, Push-Contacts und Push-Calendar. Ebenfalls kann Microsoft Outlook als Desktopclient verwendet werden.

In der Communityversion mit Outlooksupport können 3 Benutzer das System benutzen.

Ich habe das ganze bei mir zu hause mal auf eine Virtuele Maschine auf meinem ESX-Server installiert. Von da an läuft das Ding einwandfrei und die E-Mails werden schön auf mein iPhone gepusht.
Aufwand um das Ganze nach Anleitung zu installieren: 1 Tag

Zarafa ist also eine richtige Alternativlösung zu Microsoft’s Exchange Server.

Resurrection EP von Abyss Of Fear

Monday, August 17th, 2009

Ab heute kann die neue EP “Resurrection” von Abyss Of Fear vorbestellt werden! Ihr könnt die CD vorbestellen und kriegt sie direkt zu euch nach Hause geliefert, ohne Versandkosten zu bezahlen. Das einzige was Ihr tun müsst, ist auf der dafür erstellten Seite, euren Namen und E-Mailadresse zu hinterlegen.

Zwei Tage vor dem Veröffentlichungstermin bekommt Ihr eine E-Mail mit den Zahlungsinformationen. Das Eintragen in die Liste verpflichtet nicht zum Kauf. Ihr habt danach immernoch die Wahl ob ihr die CD wirklich kaufen wollt oder nicht.

Auf der Myspace Seite von Abyss Of Fear gibt es die drei neusten Songs und ein Snippet der EP zum Probehören.

Des Weiteren hat sich Abyss Of Fear für den Rock-The-Nation-Award angemeldet. Um unter die Top 100 zu kommen braucht es auch Eure Stimmen! Einfach unter http://award.rockthenation.eu/vote.php auf den Button “Abyss Of Fear” klicken und schon habt ihr eure Stimme abgegeben. Dies könnt ihr auch wiederholen! ;) Zwischen den Stimmabgaben sollte jedoch eine Pause von 5-10 Minuten sein, damit die Stimmen gezählt werden.

Sicherheitslücke in Firefox 3.5

Wednesday, July 15th, 2009

Nachdem ich in diesem Post auf die neuen Funktionen von Firefox 3.5 aufmerksam gemacht habe, möchte ich hiermit noch ein Nachtrag bringen.

Macnews.de berichtet von einer Sicherheitslücke in der neuen Javascript-Engine welche Firefox verwendet, die es Angreifer ermöglicht schädlichen Code auf dem Rechner auszuführen.

Sicherheitswarnung

Sicherheitswarnung

Für dieses Sicherheitsleck gibt es auch einen Workaround um sich vor Angriffen zu schützen.

Um das Sicherheitsloch zu stopfen, öffnet man ein neues Firefox-Fenster und tippt in die Adresszeile about:config ein. In der Filter-Zeile tippt man jit ein und die Liste schrumpft auf zwei Einträge. Davon sollte einer javascript.options.jit.content lauten, anhand der Bezeichnung true erkennt man, dass die Funktion aktiviert ist. Zum Deaktivieren klickt man doppelt auf den Eintrag und das Loch ist gestopft.

Zitat von macnews.de

Sicherheitsloch gestopft

Sicherheitsloch gestopft

Hierbei ist zu beachten, dass die neue Firefoxversion ihren Geschwindigkeitsvorteil gegenüber der alten 3.0.x Version verliert. Diesen “Geschwindigketisvorteil” habe ich aber ehrlichgesagt nicht wirklich bemerkt.

Mal schauen wie lange es geht, bis ein Patch nachgeliefert wird.