WhatsSecurity Alarmanlage ESE Projektdokumentation Sebastian Dykas Inhaltsverzeichnis Inhaltsverzeichnis ........................................................................................................................... 2 Projektziel ....................................................................................................................................... 4 Hardware ........................................................................................................................................ 5 Raspberry Pi, Model 1-B+ ........................................................................................................... 5 Spezifikation ............................................................................................................................ 6 Connectors .............................................................................................................................. 6 Pyroelectrische Infrarot PIR Bewegung Sensor ........................................................................... 6 Raspberry Pi NoIR Kamera-Modul .............................................................................................. 7 Software ......................................................................................................................................... 7 Linux ........................................................................................................................................... 7 WhatsApp.................................................................................................................................... 8 Python ......................................................................................................................................... 8 Funktionen ...................................................................................................................................... 9 Log ............................................................................................................................................... 10 Erkenntnisse ................................................................................................................................. 11 Prototyp ........................................................................................................................................ 13 Installation..................................................................................................................................... 13 Hardware Setup ........................................................................................................................ 13 Betriebssystem Setup................................................................................................................ 14 Installation notwendiger Software-Pakete .............................................................................. 14 Whatsapp Setup ........................................................................................................................ 15 Installation von yowsup .......................................................................................................... 15 Registrieren eines Whatsapp-Accounts für die Alarmanlagen-Nummer ................................. 15 Testen des Alarmanlagen Whatsapp-Accounts...................................................................... 17 Hardware anschließen............................................................................................................... 17 Anschließen der Raspberry Pi Camera .................................................................................. 17 Bewegungsmelder anschließen ............................................................................................. 17 Die LEDs anschließen ........................................................................................................... 18 Buzzer anschließen ............................................................................................................... 18 2 Whatssecurity installieren .......................................................................................................... 18 Troubleshooting ..................................................................................................................... 19 Whatssecurity bei Systemstart automatisch starten ................................................................... 19 3 Projektziel Ziel des Projektes ist es eine funktionsfähige Alarmanlage zu bauen, entwickeln und zu programmieren. Die Alarmanlage hat den Namen WhatsSecurity. Die Steuerung der Alarmanlage erfolgt hauptsächlich über einen internetbasierten und plattformübergreifenden Instant-MessagingDienst namens WhatsApp. Über einen Infrarot Bewegungsmelder wird die Alarmanlage ausgelöst. Sobald die Alarmanlage aktiviert ist und der Bewegungsmelder auslöst bekommt der Alarmanlagenbesitzer eine Nachricht auf sein Smartphone über WhatsApp, dass der Bewegungsmelder ausgeschlagen hat und zusätzlich ertönt durch einen Buzzer der Alarm. Weiteres soll eine Kamera zur Alarmanlage installiert werden die den zu überwachenden Raum überwacht. Mittels WhatsApp kann man sich per Befehl jederzeit ein Live Bild zukommen lassen. An die Alarmanlage werden zwei LEDs angehängt die zeigen sollen ob die Alarmanlage momentan aktiviert oder deaktiviert ist. Mittels einem extra USB Ziffernblock kann die Alarmanlage auch deaktiviert werden. WhatsSecurity soll noch eine intelligente Funktion haben die automatisch die Alarmanlage aktiviert und deaktiviert. Die intelligente Funktion soll folgendermaßen aufgebaut sein: WhatsSecurity überprüft im Minuten Rhythmus ob sich das Smartphone des Besitzers im Heimnetzwerk befindet. Falls ja wird die Alarmanlage deaktiviert und falls nicht wird die Alarmanlage aktiviert. Optional soll mithilfe der eingesetzten Kamera eine Gesichtserkennung oder eine Gestikerkennung möglich sein. 4 Hardware Folgende Hardware Komponenten werden in dem Projekt eingesetzt: Microcontroller: Vilros Raspberry Pi Model B+ (B Plus) Ultimate Starter Kit (€ 58,99) Raspberry Pi, Model 1-B+ Wirless Wifi WLAN Adapter Netzteil 1 rote LEDs (10 sind im Package dabei, wir brauchen nur 1) 1 gelbe LEDs (10 sind im Package dabei, wir brauchen nur 1) Widerstände Pyroelectrische Infrarot PIR Bewegung Sensor Detektor Modul (€ 6,90 für 5 Stück) Kamera: Raspberry Pi NoIR Kamera-Modul (€ 19,50) Krachmacher: 5v Active Buzzer Continuous Beep Tone Alarm Ringer von GAOHOU (€ 5,59 für 10 Stück) USB Ziffernblock (Teil eines Keyboards) (< 10 Euro) Eine Telefonnummer kaufen für WhatsApp-Aktivierung Raspberry Pi, Model 1-B+ Der Raspberry Pi ist ein Einplatinencomputer, der von der britischen Raspberry Pi Foundation entwickelt wurde. Sein großer Markterfolg wird teils als Revival des bis dahin weitgehend bedeutungslos gewordenen Heimcomputers zum Programmieren und Experimentieren angesehen. Der im Vergleich zu üblichen Personal Computern sehr einfach aufgebaute Rechner wurde von der Stiftung mit dem Ziel entwickelt, jungen Menschen den Erwerb von Programmier- und Hardwarekenntnissen zu erleichtern. Die Platine enthält ein Ein-Chip-System von Broadcom. Als Betriebssystem können unter anderen angepasste Linuxdistributionen, Android oder RISC OS installiert werden, die alle die ARM-Architektur unterstützen. Eine Festplatten-Schnittstelle ist nicht vorhanden, stattdessen müssen SD-Speicherkarten als Bootmedium benutzt werden. 5 Spezifikation Chip: Broadcom BCM2835 SoC Core architecture: ARM11 CPU: 700 MHz Low Power ARM1176JZFS Applications Processor GPU: Dual Core VideoCore IV® Multimedia Co-Processor Provides Open GL ES 2.0, hardware-accelerated OpenVG Capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering Memory: 512MB SDRAM Operating System: Boots from Micro SD card, version of the Linux operating system Dimensions: 85 x 56 x 17mm Power: Micro USB socket 5V, 2A Connectors Ethernet: 10/100 BaseT Ethernet socket Video Output: HDMI (rev 1.3 & 1.4); Composite RCA (PAL and NTSC) Audio Output: 3.5mm jack, HDMI USB: 4 x USB 2.0 Connector GPIO Connector: 40-pin 2.54 mm (100 mil) expansion header: 2x20 strip Providing 27 GPIO pins as well as +3.3 V, +5 V and GND supply lines Camera Connector: 15-pin MIPI Camera Serial Interface (CSI-2) JTAG: Not populated Display Connector: Display Serial Interface (DSI) 15 way flat flex cable connector with two data lanes and a clock lane Memory Card Slot: SDIO Pyroelectrische Infrarot PIR Bewegung Sensor Beschreibung: Infrarot Sensor mit Kontrolle Platine. Die Empfindlichkeit und Haltezeit kann eingestellt werden Detektionsrang: ca.7m / 23 feet Detektionswinkel: niedriger als 100 Grad Ruhender Strom: weniger als 50uA Betriebstemperatur: -15 to +70 Grad C PCB Größe: ca.32mm x 24mm / 1,3 x 0,9 Inch 6 Raspberry Pi NoIR Kamera-Modul Der Anschluss erfolgt über ein Flachbandkabel an der 15-poligen seriellen MIPIKameraschnittstelle (CSI) des Raspberrys. Verbaut wurde ein Omnivision 5647 CMOS Bildsensor mit festem Fokus. Durch das Weglassen eines Infrarot-Blockierfilter eignet sich die Kamera ideal für den Einsatz bei schlechten Lichtverhältnissen. Ausstattung: Digitaler Video-Anschluss Kein IR Filter (ideal für schlechte Lichtverhhältnisse) 5 Megapixel Fotoauflösung: 2592 x 1944 Pixel Videoauflösung: 1920 x 1080 Pixel (Full HD) Max. Framerate: 30 fps Automatischer Weißabgleich Automatische Belichtungssteuerung Automatischer Schwarzwertabgleich Software Das Projekt wird in der Programmiersprache Python entwickelt und folgende Software Komponenten werden in dem Projekt eingesetzt: Betriebssytem Linux WhatsApp Linux Die Bezeichnung Linux wurde von Linus Torvalds anfänglich nur für den Kernel genutzt, dieser stellt der Software eine Schnittstelle zur Verfügung, mit der sie auf die Hardware zugreifen kann, ohne sie genauer zu kennen. Der Linux-Kernel ist ein in der Programmiersprache C geschriebener monolithischer Kernel. Wichtige Teilroutinen sowie zeitkritische Module sind jedoch in prozessorspezifischer Assemblersprache programmiert. Der Kernel ermöglicht es, nur die für die jeweilige Hardware nötigen Treiber zu 7 laden. Weiterhin übernimmt der Kernel auch die Zuweisung von Prozessorzeit und Ressourcen zu den einzelnen Programmen, die auf ihm gestartet werden. Bei den einzelnen technischen Vorgängen orientiert sich das Design von Linux stark an seinem Vorbild Unix. Der Linux-Kernel wurde zwischenzeitlich auf eine sehr große Anzahl von Hardware-Architekturen portiert. Das Repertoire reicht von eher exotischen Betriebsumgebungen wie dem iPAQ-HandheldComputer, Navigationsgeräten von TomTom oder gar Digitalkameras bis hin zu Großrechnern wie IBMs System z und neuerdings auch Mobiltelefonen wie dem Motorola A780 sowie Smartphones mit dem Android Betriebssystem. Trotz Modulkonzept blieb die monolithische Grundarchitektur erhalten. Die Orientierung der Urversion auf die verbreiteten x86-PCs führte früh dazu, verschiedenste Hardware effizient zu unterstützen und die Bereitstellung von Treibern auch unerfahrenen Programmierern zu ermöglichen. Die hervorgebrachten Grundstrukturen beflügelten die Verbreitung. WhatsApp WhatsApp ist ein internetbasierter und plattformübergreifender InstantMessaging-Dienst für den Austausch von Textnachrichten, Bild-, Video- und Ton-Dateien sowie Standortinformationen zwischen Benutzern von Mobilgeräten. Das kalifornische Unternehmen Whatsapp Inc. bietet dabei das eigentliche Anwendungsprogramm Whatsapp-Messenger für verschiedene Smartphone-Betriebssysteme zum Herunterladen an und betreibt zudem die Server, über die die Nachrichten vom Sender- zum Empfängergerät geleitet werden. Dem lange Zeit völlig kostenlosen, aber mittlerweile teilweise kostenpflichtigen Dienst wird die weitgehende Ablösung der SMS zugeschrieben. Zur Nutzung ist nach der Installation der App eine Registrierung unter Angabe der eigenen Telefonnummer erforderlich. Python Python ist eine universelle, üblicherweise interpretierte höhere Programmiersprache. Ihre Entwurfsphilosophie betont Programmlesbarkeit, sodass Python-Code im Vergleich mit anderssprachigem Code teilweise deutlich kürzer ist. Zur besseren Lesbarkeit soll auch der Verzicht auf Klammern zur Bildung von Code-Blöcken dienen, da die Programmstruktur durch Einrückungen gebildet wird. Python unterstützt mehrere Programmierparadigmen, z. B. die objektorientierte, die aspektorientierte und die funktionale Programmierung. Ferner bietet es eine dynamische Typisierung. Wie viele dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache hat ein offenes, gemeinschaftsbasiertes Entwicklungsmodell, das durch die gemeinnützige Python Software Foundation, die de facto die Definition der Sprache in der Referenzumsetzung CPython pflegt, gestützt wird. 8 Funktionen Use case: Alarmanlage scharf stellen Der Benutzer schickt mit Whatsapp eine Nachricht an die Telefonnummer des WhatsSecuritys: Benutzer: „AE 1234“ WhatsSecurity: „Alarmanlage ist scharf.“ Use case: Alarmanlage ausschalten Der Benutzer schickt eine Whatsapp-Nachricht: Benutzer: „AA 1234“ WhatsSecurity: „Alarmanlage ausgeschalten“ Alle Whatsapp-Befehle: Benutzer: „Huhu“ => wenn WhatsSecurity ein Kommando nicht erkennt, antwortet er: WhatsSecurity: „Das Kommando verstehe ich nicht: Tippe „help“ für mehr Informationen.“ Benutzer: „help“ WhatsSecurity: „Alarmanlage ist aus. AE 1234 - Alarmanlage einschalten AA 1234 - Alarmanlage ausschalten status - Wenn du wissen willst ob ich eingeschalten bin pic - Aktuelles Bild schicken“ Benutzer: „LB“ oder „pic“ WhatsSecurity: BILD Benutzer: „AE 1234“ WhatsSecurity: „Alarmanlage ist scharf“ WhatsSecurity: „Pin Code ist falsch!“ WhatsSecurity: „Sie ist bereits scharf gestellt!“ WhatsSecurity: „Pin code ist falsch, aber die Alarmanlage ist bereits scharf gestellt!“ Benutzer: „AA 1234“ WhatsSecurity: „Alarmanlage ausgeschalten“ WhatsSecurity: „Pin Code ist falsch!“ WhatsSecurity: „Alarmanlage ist sowieso nicht an!“ WhatsSecurity: „Alarmanlage ist sowieso nicht an! Und der Pin-Code ist auch falsch.“ 9 Selbstständige Nachrichten von WhatsSecurity Einmal am Tag, um 17 Uhr: WhatsSecurity: „Alles roger.“ Wenn die Internetverbindung ausfällt, wird eine Nachricht gesendet, sobald die Internetverbindung wieder da ist. WhatsSecurity: „Ich hatte jetzt keine Internetverbindung (16:10-16:30). Jetzt bin ich wieder für dich da. Alles roger.“ Wenn eine Bewegung am Bewegungsmelder erkannt wird während die Alarmanlage scharf ist: Zuerst fängt die Alarmanlage dezent zum piepsen an. Wir warten 20s warten, ob ein Code eingegeben wurde. Dann alle Benutzer-Geräte im WLAN pingen. goto (Wenn eines gefunden wurde ? A : B). A: WhatsSecurity an den Benutzer der da ist: „Alarmanlage wurde ausgelöst. Bitte Code eingeben.“ Der Benutzer hat dann 30s Zeit, den Code einzugeben. Der Krachmacher piepst dezent. Falls er nicht innerhalb von weiteren 30s den Code eingibt, goto B. Sonst: Alarmanlage ist eben deaktiviert. B: WhatsSecurity an alle Benutzer: „Alarmanlage wurde ausgelöst.“ BILD Krachmacher piepst ordentlich. Deaktivierung über Tastatur An einer gut sichtbaren Stelle ist ein Ziffernblock, und darüber 2 LEDs. Die rote LED ist mit „scharf“ beschriftet Die gelbe LED ist mit „deaktiviert“ beschriftet. Log 2015-02-12 lernen, wie man mit einem Transistor die 5V-Leitung verwenden könnte, um mit einem der PWMGPIOs (3,3V max.) einen Buzzer mit bis zu 25mA betätigen zu können. Fortschritt: Noch bei der Theorie von Strom, Spannung und “Selbstregelung” des Transistors zum Verstärken. Nächste Aufgabe: OpenCV lernen und damit eine Bewegungserkennung über (CSI-)Kamera realisieren (Infrarotbereich). Versuch, ob das Ganze auch mit einem alten Raspberry B (rev1) funktioniert. Fortschritt: Pins werden mit demselben Skript von Sebastian getestet, um feststellen zu können, ob bei einem der Geräte bereits GPIO-Pins kaputt sind. 10 WhatsApp-API kann bereits verwendet werden. Fortschritt: Unterstützung zum Senden von Bildern (z.B. später von der Kamera ein Live-Schnappschuss) implementiert. Dabei war es notwendig, auf dem RPi neue Libraries für die Verarbeitung von JPEG zu installieren und zu konfigurieren. 2015-02-23 Aufbau der richtigen Schaltung mit dem Transistor, plus einer LED an einem Potentiometer, um das GPIO-Signal trivial testen zu können, falls der Buzzer keinen Ton von sich gibt. Der erwartete Piezzo-Buzzer hatte überraschenderweise schon eine Elektronik drin, sodass dieser auch ohne PWM funktionierte. Getestet wurde statt mit dem GPIO-Output nur mit der 3,3V-Versorung. 2015-02-24 Python-Script mit GPIO-Ansteuerung + PWM funktioniert nun. Bestellung einer NoIR-Kamera wird in Auftrag gegeben. 2015-03-09 Testen und Ausprobieren der NoIR-Kamera (Memorysplit-Problem). Lernen von Python (cursesBibliothek, Unterschiede 2.7 zu 3.x - Code des Buzzer-Moduls ist momentan universell kompatibel; Variablen-Scopes). Debugging der anderen NoIR-Kamera (bzw. Zusehen) -> “es konnte nur noch der Tod festgestellt werden”. Abstimmung der Interfaces zwischen Hauptprogramm und BuzzerKlasse in Python. Erkenntnisse Buzzer / Piezzo + Transistor Wegen des benötigten relativ starken Stroms (knapp 25mA) muss der PWM-GPIO-Ausgangsstrom verstärkt werden. Mithilfe eines Transistors wird das Problem gelöst, allerdings sind HTLElektrotechnik-Kenntnisse dazu nicht ausreichend. An der Basis muss die Spannung höher sein als am Kollektor, damit das Schalten auf den Emitter funktioniert. Einfach Versorgungsstrom (hat 5V) an Kollektor, PWM-GPIO (hat 3.3V) an Basis und Buzzer an Emitter funktioniert deshalb nicht. Es ist notwendig, eine etwas aufwändigere Schaltung zu basteln, die den Transistor “regelt”. Dazu sind im Allgemeinen mehrere Widerstände notwendig, und es gibt sogar eine empfohlene Schaltung dafür: http://raspberrypi.stackexchange.com/questions/5325/how-do-i-connect-a-buzzerto-gpio → http://product.tdk.com/en/catalog/datasheets/ef532_ps.pdf → 11 Somit ist das Problem mit den Spannungen zwischen Basis und Kollektor gelöst (am Kollektor liegt nur wenig Spannung an, wegen des 1kOhm-Widerstands, sodass die 3.3V des GPIO-Pins ausreichen, die Basis des Transistors zu beeinflussen). Der Widerstand zwischen GPIO-Pin und Transistor-Basis wurde vorübergehend mit 1500 Ohm gewählt, was auch funktioniert hat. Python RPi.GPIO Das von uns bevorzugte PWM-lastige Buzzer-Ansteuerungs-Signal kann zwar mit dieser Library sehr einfach realisiert werden, allerdings setzt diese Implementierung auf Software-PWM, was wir so verstehen, dass nicht die PWM-Hardware genutzt wird, sondern ressourcenverschwendenderweise Timer verwendet werden, die in Software in Python ablaufen. Dadurch ist bei 2000 Hz - vermutlich durch OS-Jitter (der Timer kann Scheduler-bedingt nicht exakt arbeiten) - ein unregelmäßiges Knacksen neben dem eigentlichen Piepsen zu hören Raspberry Kamera: Interface und Unterstützung Um die Kamera zu verwenden ist es notwendig, in der Konfiguration beim Raspberry Pi der GRafik beim Memorysplit mindestens 128MB zuzuteilen. Dadurch bleiben zwar nur noch 384MB RAM für Raspbian übrig, es geht sich allerdings alles noch mit ca. 64MB freiem RAM aus. Solange Python/unsere Software nicht mehr Ressourcen braucht, würde alles Out-of-the-box funktionieren. Andernfalls müsse auf Swap zurückgegriffen werden (was auf einem unserer Raspberrys deaktiviert ist), oder die Software bzw. sogar das Betriebssystem müsste abgespeckt werden. 12 Prototyp Während der Entwicklungsphase ist natürlicherweise ein Prototyp gebaut worden. Dieser Prototyp beinhaltet alle Hardware und Software Komponenten die in dieser Dokumentation beschrieben sind. Installation Dieses Dokument beschreibt, wie man die Whatssecurity-Applikation auf einem Raspberry Pi installieren kann. Aktueller Status: wir können Whatsapp-Nachrichten senden und empfangen wir können Bilder mit der Raspberry Pi Camera machen und per Whatsapp verschicken Ansteuerung des Bewegungssensors Ansteuerung der LEDs und des Buzzers Dateianhänge: ws_program-v0.1.1.zip Hardware Setup Um die Whatssecurity-Alarmanlage zu installieren benötigen wir folgende Hardware: einen Raspberry Pi eine SD-Karte, auf der das Betriebssystem für den Raspberry Pi installiert werden kann ein Micro-USB-Netzteil ein Raspberry Pi Camera Modul ein Ethernet-Kabel, um den Raspberry an ein Netzwerk anzuschließen. einen Bewegungsmelder eine rote und eine gelbe LED geeignete Vorwiderstände für die LEDs, wenn die LEDs mit 3,6V angesprochen werden 13 Verkabelung, um die LEDs sowie den Bewegungsmelder anschließen zu können eine Telefonnummer, auf der wir SMS empfangen können, um einen Whatsapp-Account zu registrieren Betriebssystem Setup Wir verwenden eine Debian-Installation auf dem Raspberry Pi namens "Raspbian". Sie kann auf https://www.raspberrypi.org/downloads/ runtergeladen und installiert werden. Der erste Schritt besteht darin, den SSH-Server zu aktivieren, sodass wir den Raspberry Pi ohne angeschlossene Tastatur, Maus und Bildschirm benutzen können. Installation notwendiger Software-Pakete Zuerst müssen wir mit "apt-get" einige Pakete installieren, die wir für Whatssecurity brauchen werden. Die folgenden Pakete werden benötigt: vim gcc python-setuptools python-picamera python-pip python-dev libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk Alle können einfach mit apt-get installiert werden. Die Befehle dafür lauten sudo sudo sudo dev sudo sudo sudo apt-get update apt-get install vim gcc apt-get install python-setuptools python-picamera python-pip pythonapt-get install libtiff4-dev libjpeg8-dev zlib1g-dev apt-get install libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev apt-get install tk8.5-dev python-tk Weiters benötigen wir 3 Python-Pakete, die einfach mit pip installiert werden können (Die Reihenfolge ist wichtig, pip haben wir im vorhergehenden Schritt mit apt-get installiert.) sudo pip install python-dateutil sudo pip install -I pillow sudo pip install tendo Danach müssen wir das Raspberry Pi Kamera-Modul aktivieren, sodass wir per Software auf eine angeschlossene Raspberry Pi Camera zugreifen können: sudo raspi-config Dieser Befehl öffnet ein graphisches (ncurses-basiertes) Menü, und einer der Punkte lautet so etwas wie "Raspberry Pi Camera aktivieren". 14 Whatsapp Setup Als nächstes müssen wir einen Whatsapp-Account registrieren. Wir brauchen in Folge 2 Telefonnummern. Die Alarmanlagen-Nummer registrieren wir über den Raspberry, die AdminTelefonnummer sollte bereits auf einem Smartphone mit Whatsapp aktiviert sein. Installation von yowsup yowsup ist eine Opensource-Library die einen Whatsapp Netzwerk-Stack zur Verfügung stellt. Zuerst müssen wir die yowsup-Library installieren. Diese können wir von https://github.com/tgalal/yowsup runterladen. Da diese Library aktiv weiterentwickelt wird, kann es sein, dass die Whatssecurity-App mit der neuesten Version von yowsup nicht funktionieren wird. In diesem Fall laden Sie bitte die Version herunter, die am 15. Mai 2015 aktuell war. Da es sich bei dem Link um ein git-Repository handelt ist das leicht möglich. Bei jeder Revision befindet sich ein Link, über den man das gesamte Repository zum damaligen Zeitpunkt herunterladen kann. Der Ordner muss dann entpackt werden, und dann muss der Befehl sudo python setup.py install im yowsup-Verzeichnis ausgeführt werden. (Danach: nix tun. Nicht das Fenster schließen, nicht in einen anderen Ordner wechseln, etc.) Registrieren eines Whatsapp-Accounts für die Alarmanlagen-Nummer Um einen Whatsapp-Account zu registrieren, senden wir eine SMS-Anfrage an die WhatsappServer. Dies ist jetzt der erste Befehl, der keine root-Rechte benötigt: ./yowsup-cli registration -r sms -p Telefonnummer -C Countrycode wobei statt Telefonnummer die internationale Handynummer verwendet werden muss, ohne vorangestelltes "+". Beispiel: 436501234567. Der Countrycode besteht aus den ersten Ziffern der Telefonnummer. In diesem Beispiel wäre er 43, bei einer deutschen Handy-Nummer wäre er 49, etc. Es gibt aber auch 1-stellige oder 3-stellige country codes. Die Ausgabe wird dann in etwa so aussehen: INFO:yowsup.common.http.warequest:{"status":"sent","length":6,"method":"sms","re try_after":1805} status: sent retry_after: 1805 length: 6 method: sms 15 Wenn es geklappt hat, bekommen Sie kurze Zeit später eine SMS an die angegebene Handynummer. Diese SMS enthält einen Code, z.B. 141-256 . Danach müssen wir diesen Code benutzen, um das Whatsapp-Passwort zu bekommen: ./yowsup-cli registration -R Code -p Telefonnummer -C Countrycode Im Erfolgsfall sieht die Ausgabe dann ungefähr so aus: INFO:yowsup.common.http.warequest:{"status":"ok","login":"4366488431683","pw":"8 T/bNA5KnPQ7m2DnvSl63HJhPuw=","type":"new","expiration":1461089783,"kind":"free", "price":"\u20ac 0,89","cost":"0.89","currency":"EUR","price_expiration":1432347894} status: ok kind: free pw: 6T/cNA5PrPQ8s1DNvSl35HKiQuw= price: € 0,89 price_expiration: 1432347894 currency: EUR cost: 0.89 expiration: 1461089783 login: Telefonnummer type: new Wichtig ist hier das Whatsapp-Passwort, das neben "pw: " steht. Jetzt haben wir genügend Informationen, um die Whatssecurity-Konfigurationsdatei zu erzeugen. Wir nennen die Datei config.txt, der Inhalt ist wie folgt aufgebaut: # Country code cc=Countrycode # Telefonnummer der Whatsapp Alarmanlage phone=Telefonnummer password=6T/cNA5PrPQ8s1DNvSl35HKiQuw= # Admin user - Nummer des Users, der die Alarmanlage administrieren darf: admin_phone=436649999999 Die Konfigurationsdatei, sollte jetzt gleich außerhalb des Raspberry Pi's gesichert werden. 16 Testen des Alarmanlagen Whatsapp-Accounts Als nächstes wollen wir überprüfen, ob das Whatsapp-Passwort funktioniert, d.h. ob wir es benutzen können. Dazu starten wir einen "Echo-Server" mit: ./yowsup-cli demos -e -c config.txt wobei config.txt ggf. durch den Pfad ersetzt werden muss, an den Sie die Konfigurationsdatei abgelegt haben. -e steht für "echo server". Wichtig ist in diesem Schritt nur, dass die Konfigurationsdatei die Einträge "phone", "password" und "cc" enthält. Der Eintrag "admin_phone" wird vom Echo-Server ignoriert, er ist erst später nötig, wenn wir Whatssecurity installieren. Der Echo-Server beantwortet einfach alle Anfragen, die an ihn gestellt werden. Sende dazu einfach eine Nachricht von deinem Smartphone (Admin-nummer 'admin_phone') zum Echo-Server (Alarmanlagen-Nummer 'phone'). Es sollte prompt eine Papagei-artige Antwort zurück kommen. Gratulation, Sie haben erfolgreich einen Whatsapp-Account für Ihre Whatssecurity-Alarmanlage eingerichtet. Hardware anschließen Jetzt müssen wir die Raspberry Pi Kamera und den Bewegungsmelder anschließen. Dazu sollten wir zuerst den Raspberry Pi herunterfahren und vom Netz trennen! Klarerweise könnte man diesen Schritt auch schon viel früher erledigen, er baut in keinster Weise auf den vorhergehenden Schritten auf. Anschließen der Raspberry Pi Camera Es gibt am Raspberry Pi zwei Orte, an denen man sich grundsätzlich vorstellen kann, dass man dort eine Raspberry Pi Camera anschließen könnte. Der richtige Anschluss ist der, der gleich neben dem Ethernet-Anschluss ist. Man muss die Kamera so anschließen, dass die Kontakte vom Ethernet-Anschluss weg zeigen, und die blaue Seite zum Ethernet-Anschluss hin zeigt. Für Details, wie man den Anschluss auf und wieder zu kriegt siehe dieses Video: http://neuerdings.com/2014/03/23/raspberry-pi-camera-module-einrichten/ Bewegungsmelder anschließen Der Bewegungsmelder hat 3 Anschlüsse: "VCC", "OUT" und "GND". VCC muss an die 5VVersorgungsspannung angehängt werden (z.B. Pin 2). GND gehört zu Ground (z.B. Pin 6). Und OUT schließen wir an Pin 7 an (das ist ein GPIO-Pin). Welche Pins welche Möglichkeiten haben ist unter folgendem Link einsehbar: http://pi.gadgetoid.com/pinout 17 Die LEDs anschließen Die rote LED schließen wir an Pin 11, die gelbe LED an Pin 13 an. Der Minus-Pol muss jeweils an Ground angeschlossen werden. (Vorwiderstand nicht vergessen, sonst gibts gegrillte LEDs!) Buzzer anschließen Der Plus-Pol kommt an Pin 15, der Minus-Pol an Ground (wir haben Pin 9 dafür verwendet, aber das ist eigentlich egal.) Da der Buzzer ja möglichst laut sein soll verzichten wir bewusst auf einen Vorwiderstand! Die Pin-Nummern sind in der Datei ws_gpio.py (und nur dort) konfiguriert. Whatssecurity installieren Lade die Datei ws_program-v0.1.1.zip auf den Raspberry Pi und entpacke sie in folgende Ordnerstruktur: Home-Folder des Users "pi": /home/pi o alarmanlage config logs ws_program Der Inhalt der ZIP-Datei sollte in den Ordner ws_program kommen. Wenn im ws_program-Ordner die Datei "wsrun" und die Ordner "yowsup" und "whatssecurity" sind, dann wurde die ZIP-Datei richtig entpackt. In den config-Ordner muss die Konfigurations-Datei mit Namen config.txt landen. Der logs-Ordner wird automatisch befüllt, er muss aber angelegt werden. Die Ordner-Struktur sieht dann so aus: Home-Folder des Users "pi": /home/pi o alarmanlage/ config/ config.txt logs/ (Ordner ist leer) ws_program/ whatssecurity/ o ... alarmanlage.sh wsrun ws-gpio.py yowsup-cli … o … (ev. liegen noch Files im Home-Ordner rum, diese werden für Whatssecurity aber nicht mehr benötigt.) 18 Starte nun das Shell-Script alarmanlage im ws_program Ordner: sudo alarmanlage/ws_program/alarmanlage.sh start Optional: Wenn du möchtest, kannst du in einem anderen Konsolen-Fenster die Log-Meldungen betrachten. In den DEBUG-Logs werden alle Netzwerk-Requests und Responses protokolliert: tail -f ~/alarmanlage/logs/debug.log -n200 Wenn du jetzt "pic" von deinem Admin-Telefon an den Alarmanlagen-Whatsapp-Account schickst, wird ein Bild generiert und an dich zurück geschickt. Bilder werden auf dem Raspberry übrigens im Ordner alarmanlage/logs/images gespeichert. Nachrichten, die von einem anderen Whatsapp-Account als dem des Admins an die Alarmanlage geschickt werden, werden von Whatssecurity ignoriert. Um den Deamon zu beenden: sudo alarmanlage/ws_program/alarmanlage.sh stop Troubleshooting Hinter dem alarmanlage.sh Shell-Script stecken 2 Python-Scripts, die die eigentliche Arbeit machen: wsrun kommuniziert mit dem Whatsapp-Server und der Kamera ws-gpio.py kommuniziert mit der Hardware Beide Programme kommunizieren über Text-Dateien miteinander. Whatssecurity bei Systemstart automatisch starten Damit whatssecurity automatisch beim Systemstart gestartet wird, füge der Datei /etc/rc.local zwei Zeilen hinzu (vorzugsweise vor der Zeile in der exit 0 steht…): # Start Whatssecurity /home/pi/alarmanlage/ws_program/alarmanlage.sh start Die Alarmanlage wird dann automatisch bei Systemstart hochgefahren. 19