Beim Herumspielen mit meinem Arduino UNO habe ich mal noch ein Knight Rider LED Stripe gebastelt.
LED Knight Rider with Arduino
February 2nd, 2011DIY: Türklingel Push Notification für das iPhone
February 1st, 2011Da 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!
Zufallszahl mit Objective-C
January 19th, 2011Um mit Objective-C eine Zufallszahl zu generieren muss man auf eine C Funktion zurückgreifen. Wie das geht will ich euch nun zeigen.
Beispiel: Ich benötige eine Zufallszahl im Bereich von 0 und 7 (8 Möglichkeiten).
Das Coding dafür sieht dann wie folgt aus:
int randomInt;
randomInt = (arc4random() % 7);
NSLog(@"Die Zufallszahl ist %i", randomInt);Beispiel2: Ich benötige eine Zufallszahl im Bereich 1 und 11 (11 Möglichkeiten).
int randomInt;
randomInt = (arc4random() % 11) + 1;
NSLog(@"Die Zufallszahl ist %i", randomInt);Diese Funktion funktioniert auch auf dem iPhone!
Happy Coding!
Push E-Mail fürs iPhone ohne Exchange oder mobile.me
August 4th, 2010Vor 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
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.
