Heimautomatisierung mit Python und Raspberry Pi

15.309 Aufrufe

Veröffentlicht am

Folien meines Vortrags zu "Heimautomatisierung mit Python und Raspberry Pi" auf der FrOSCon 2014.

Der Raspberry Pi ist ein kreditkartengroßer Mini-Computer, der vielfältige Einsatzmöglichkeiten bietet - vom MediaCenter über den eigenen Mini-Cloud-Server bis zum stromsparenden Home-Server als Schaltzentrale der Heim-Automatisierung.

Neben einer Vorstellung des Raspberry Pi wird in dem Vortrag in die Programmierung der GPIO-Schnittstelle mittels Python eingegangen und Beispiele zur Verwirklichung eigener Heim-Automatisierungsprojekte präsentiert.

s. http://programm.froscon.de/2014/events/1467.html

Veröffentlicht in: Software
0 Kommentare
7 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
15.309
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
162
Aktionen
Geteilt
0
Downloads
57
Kommentare
0
Gefällt mir
7
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Heimautomatisierung mit Python und Raspberry Pi

  1. 1. Heimautomatisierung mit Python und Raspberry Pi Thomas Koch 
 @tomy_koch FrOSCon St.Augustin 24. August 2014 content is licensed under a Creative Commons Attribution 4.0 International license
  2. 2. über mich • Thomas Koch • Bonn • Software-Entwickler • Python, JavaScript,Web ... • Python User Group PyCologne • Hobby-Bastler • Raspberry Pi • OrbiTeam Software (Bonn) • BSCW (Collaboration Server)
  3. 3. Agenda • Heimautomatisierung • Motivation und Beispiele • Grundlagen Raspberry Pi • Hardware, GPIO • Programmierung & Steuerung • GPIO mit Python, weitere ‚Helferlein‘ • Praktische Beispiele & Demos • Funksteckdose per Smartphone steuern • Weitere Informationen • Literatur & Links
  4. 4. HEIMAUTOMATISIERUNG Motivation
  5. 5. Heimautomatisierung (Home Automation) • Idee: Überwachung und Steuerung elektrischer Geräte im Haushalt • durch Verbindung von Sensoren und Aktoren über eine Steuereinheit im Haushalt • Sensoren: Thermometer, Bewegungsmelder, Rauchmelder, Kamera, Druckschalter • Aktoren: (Funk)steckdose, Relais, LED, Servo-Motor • Steuereinheit (Controller): Hardware + Software • Ziele • Kostenersparnis durch 'intelligente' Steuerung (Heizkosten/Stromkosten) • Mehr Komfort durch automatische Anpassung der Umgebung
 (z.B. Lichtsteuerung: zeitgesteuert, je nach Helligkeit/Bewegung etc.) • Spaß & Spiel
  6. 6. Heimautomatisierung: Beispiele • Automatische Heizungssteuerung und Monitoring der Energiekosten • Automatisch Rolladen zu bestimmter Zeit hochfahren • Lampen im Haus in Gruppen anordnen und per FB steuern • Bei Annäherung das Garagentor öffnen • E-Mail wenn Briefkasten geöffnet wird • Foto wenn Türklingel betätigt wird • Alarmanlage
  7. 7. Heimautomatisierung: Komponenten • Controller (Steuereinheit) • Hardware: PC, RaspberryPi, Arduino, NAS, Fritzbox etc. • Software: • fertige Lösung wie FHEM (Perl, www.fhem.de) • eigene Lösung auf Basis von Python 
 & bestehenden Bibliotheken • HCI (Human Computer Interface) • Fernbedienung (IR) • Touchscreen (z.B. Tablet) • Web-GUI • Smartphone App Controller ! ! ! Sensor Aktor HCI Hardware Software
  8. 8. RASPBERRY PI Grundlagen
  9. 9. Vorstellung: Der Raspberry Pi • SOC Minicomputer: "System on a chip" ! • GPU + CPU + RAM = BCM2835 • on-board: Ethernet-Schnittstelle und zwei USB-Anschlüsse (Modell B) • "BYOP"-Prinzip: "bring your own peripherals“ • Lieferung ohne Maus, Tastatur, Netzstecker etc. • Nackte Platine (ohne Gehäuse), ohne SD-Card und OS • Einsetzbar für Elektronikprojekte • Steuerung elektronischer Geräte mittels Ein-/Ausgabekontakte (GPIOs)
  10. 10. Thomas Koch Hardware: Raspberry Pi • GPIO • General Purpose 
 Input/Output • CSI • Camera
 Serial Interface USB LAN micro USB HDMI
  11. 11. Datenblatt: Raspberry Pi • Kosten: ca. 30 € (nur Board) • Betriebsspannung: 5 V (Micro-USB Buchse) • alternativ 4 × AA-Batterien • CPU: ARM11, 700 MHz • Verbrauch: ca. 3,5 Watt • RAM: 512 MB Hauptspeicher (Modell B) • Datenträger: SD-Speicherkartenslot • Anschlüsse: HDMI, LAN 10/100 Mbps, 2x USB 2.0, Audio, Video-Out • Modell B+ (2014) hat 4x USB (und microSD) • optional: Kamera-Modul (5 Megapixel)
  12. 12. Raspberry Pi „Tutorial“ • Erste Schritte … • Raspbian-OS auf SD-Karte „installieren“ , einstecken & anschalten!
 (siehe weitere Informationen … im Anhang!) • Raspbian = Standard Betriebssystem (auf Debian-Basis)
 http://www.raspbian.org/RaspbianImages • Batteries Included … • Raspbian kommt mit Python 2.7 und 3.2 • Zusatzpakete per apt-get oder ‚pip install‘ hinzufügen $ sudo apt-get update $ sudo apt-get install python-dev $ sudo apt-get install python-rpi.gpio
  13. 13. Monitor am Raspi anschliessen • Per HDMI • TFT-Monitor, Fernseher etc. • Per Video-Out • z.B: mini-KFZ-TFT 3.5‘‘ (für ca. 20 € bei e-bay) • Lässt sich auch auf 5V- Betrieb (USB) „umbasteln“:
 http://kampis-elektroecke.de/?page_id=2631
  14. 14. GPIO Basics • GPIO = General Purpose Input Output • Pins können als Ausgang ODER Eingang fungieren • VDD = 3.3 V • Ausgewählte Pins für Schnittstellen 
 (UART, I2C, SPI) • Ports steuern: +----------+------+--------+------+-------+! | wiringPi | GPIO | Name | Mode | Value |! +----------+------+--------+------+-------+! | 0 | 17 | GPIO 0 | IN | Low |! | 1 | 18 | GPIO 1 | IN | Low |! | 2 | 27 | GPIO 2 | OUT | Low |! | 3 | 22 | GPIO 3 | IN | Low |! | 4 | 23 | GPIO 4 | IN | Low |! | 5 | 24 | GPIO 5 | IN | Low |! | 6 | 25 | GPIO 6 | IN | Low |! | 7 | 4 | GPIO 7 | IN | Low |! | 8 | 2 | SDA | ALT0 | High |! | 9 | 3 | SCL | ALT0 | High |! | 10 | 8 | CE0 | IN | Low |! | 11 | 7 | CE1 | IN | Low |! | 12 | 10 | MOSI | IN | Low |! | 13 | 9 | MISO | IN | Low |! | 14 | 11 | SCLK | IN | Low |! | 15 | 14 | TxD | ALT0 | High |! | 16 | 15 | RxD | ALT0 | High |! | 17 | 28 | GPIO 8 | IN | Low |! | 18 | 29 | GPIO 9 | IN | Low |! | 19 | 30 | GPIO10 | IN | Low |! | 20 | 31 | GPIO11 | IN | Low |! +----------+------+--------+------+-------+ $ gpio mode 0 out! $ gpio write 0 1 $ gpio readall
  15. 15. Einfaches Anwendungsbeispiel • E-Mail Alert via LED • Anwendung der 
 GPIO Pins: LED an • GPIO idealerweise via
 breakout kit ausführen • Verdrahtung erfolgt auf
 sog. bread board ! http://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds
  16. 16. PROGRAMMIERUNG & STEUERUNG GPIO mit Python
  17. 17. Python auf dem Raspberry PI • GPIO mit Python • RPi.GPIO einfacher GPIO Python Wrapper 
 https://pypi.python.org/pypi/RPi.GPIO " • Alternative: Python Wrapper für WiringPi: 
 https://github.com/WiringPi • Hinweis: Zugriff auf GPIO erfordert root Recht! • Sonstige nützliche Pakete! • Flask einfaches Web Micro-Framework für kleinere Projekte
 http://flask.pocoo.org ! • SH subprocess Interface als generischer shell wrapper
 http://amoffat.github.io/sh/
  18. 18. Beispiel: RPi.GPIO • LED einschalten ! import RPi.GPIO as GPIO! # header pin numbering ! GPIO.setmode(GPIO.BCM) ! # Set up one output channel! GPIO.setup(18, GPIO.OUT)! GPIO.output(18, GPIO.HIGH)! ! ! https://projects.drogon.net/raspberry-pi/gpio-examples/tux-crossing/gpio-examples-1-a-single-led/
  19. 19. Beispiel zur Heimautomatisierung • Szenario: Bewegungsmelder schaltet Licht an • Zutaten 1x Sensor (PIR-Bewegungsmelder), 1 x Aktor (Funksteckdose) • Anschluss über GPIO, Steuerung per Python-Script • Bewegungsmelder • PIR-Bewegungsmelder: Passiver Infrarot Sensor • Achtung: nur Sensoren mit 3.3 V Ausgangsspannung verwenden! • Funksteckdose • Steuerung Funksteckdose erfolgt über 433 MHz Frequenz • und 434MHz Sendemodul
  20. 20. Bewegungsmelder • Schaltung • PIR-Bewegungsmelder schaltet gelben PIN auf 3.3V • Anschluss an 5V (rot) 
 und GND (schwarz) • Python Code import time! import RPi.GPIO as io! io.setmode(io.BCM)! ! pir_pin = 18! io.setup(pir_pin, io.IN) ! ! while True:! if io.input(pir_pin):! print("PIR MOTION")! time.sleep(1)! ! siehe https://learn.adafruit.com/adafruits-raspberry-pi-lesson-12-sensing-movement/
  21. 21. Funksteckdose • Technik • 434MHz RF Link Transmitter • Funktsteckdose 
 (z.B. Elro AB440S/3C Funksteckdosen Set) • Python Code • "elropi.py" - verwendet RPi.GPIO Library
 http://pastebin.com/aRipYrZ6 • ODER: “elro_wiringpi.py" - verwendet WiringPi Library
 http://www.raspberrypi.org/forums/viewtopic.php?f=32&t=32177 $ python elro_wiringpi.py 8 1 # Switch D is turned on
  22. 22. Heimautomatisierung: Demo-Projekt • Einfaches Web-GUI • Steuerung von Funksteckdosen über Smartphone • Bewegungsmelder löst Ereignis aus (Zeitstempel) • Foto per USB-WebCam aufnehmen • Bild aufnehmen von WebCam • Python-Bibliothek OpenCV bietet vielfältige Möglichkeiten • Alternative: per SH-Library einfach ‚fswebcam‘ verwenden: $ fswebcam --title Demo webcam.jpg >> sh.fswebcam(title="Demo", save="webcam.jpg")
  23. 23. Demo-Projekt: PyHome • Umsetzung der vorgestellten Beispiele: 
 PIR-Sensor, WebCam, Funksteckdosen • Einfaches Web-GUI mit 
 Flask und jQuery Mobile • 3 Python Module • 1 JavaScript Modul • PyHome Projekt auf github $ git clone 
 https://github.com/tommykoch/pyhome.git
  24. 24. PROJEKTE EINIGE BEISPIELE Praxis
  25. 25. Projekte: WebIOPi Internet of Things framework • Supports binary GPIOs • HTML/CSS & Javascript • REST/JSON Web API • Server side available in several technologies • PHP/Apache/lighttpd • Python • Smartphone compatible • Apache License »https://code.google.com/p/webiopi/
  26. 26. Projekte: PiHome • fertiges Image für Raspberry Pi zur Heimsteuerung von Funksteckdosen • Zugriff per Smartphone über WLAN 
 und Web-GUI • Ansteuerung per Fernbedienung 
 (Platine direkt mit GPIO-Pins verbunden) • Apache Webserver (PHP + MySql) • Python Socket Server
 for control GPIO Pins • Frontend (HTML, CSS, JS) »http://pihome.harkemedia.de/
  27. 27. Projekte: PowerPi • Raspberry Pi Haussteuerung • Steuerung beliebig vieler Funksteckdosen • Steuerung der Raspberry Pi GPIO's • Auslösen von angelegten Ereignissen • Erreichbar über das gesamte Hausnetzwerk • Optimiert für Smartphones und Tablets • Nginx + PHP • Version 0.1 »http://raspberrypiguide.de/howtos/powerpi-raspberry-pi-haussteuerung/
  28. 28. Projekte: pimatic • Rahmenwerk für verschiede Geräte und Sensoren zur Heimautomatisierung und Haussteuerung mit dem Raspberry Pi • Sensoren und Aktoren werden durch Plugins eingebunden • pimatic stellt ein Regelwerk zur Automatisierung zur Verfügung • Basis: Node.js »http://www.pimatic.org/
  29. 29. Voice Control: Meet Jasper • Projekt Jasper • Voice Control auf Raspberry Pi (Siri@Home…) • basiert auf diversen OpenSource Tools 
 (Pocketsphinx, OpenFST, MIT Language Modeling Toolkit, Phonetisaurus …) • http://jasperproject.github.io/ • Erweiterbar - in Python :-) • Running Jasper $ cd jasper/client
 $ python main.py
  30. 30. Voice Feedback: Sprachausgabe in Python • ESpeak • eSpeak ist ein Open Source Sprach Synthesizer (in Software) • für English und andere Sprachen http://espeak.sourceforge.net • läuft auch auf Raspberry Pi (wird u.a. von Jasper verwendet) • Einfache Anwendung: $ espeak „Hello World“
 $ espeak -vde „Hallo Welt“ • Python Wrapper $ sudo apt-get install espeak python-espeak >>> from espeak import espeak >>> espeak.list_voices() >>> espeak.set_voice('de') >>> espeak.synth("hallo welt")
  31. 31. Anhang Weiterführende Hinweise & Kleingedrucktes
  32. 32. Literatur • Raspberry Pi - Einstieg • Optimierung • Projekte Maik Schmitd, dpunkt Verlag
 http://www.dpunkt.de/raspi 
 • Getting Started with Raspberry Pi (Englisch) Verlag: o’reilly/makers
 http://blog.makezine.com/2012/12/25/ten-raspberry-pi-tips 
 • Hacking Electronics: An Illustrated DIY Guide 
 for Makers and Hobbyists (Englisch) Verlag: Mcgraw-Hill Publ.Comp.
 http://www.amazon.de/Hacking-Electronics-Illustrated-Makers-Hobbyists/dp/0071802363
  33. 33. Ausblick IoT - Internet of Things • IoT-Szenario ‚Server-Monitoring‘ • auf Raspberry Pi Temperatur-Daten mit Sensor erfassen • Raspberry Pi sendet Daten "in die Cloud" • z.B. via MQTT / Mosquito http://mosquitto.org/documentation/python/ • oder an data.SparkFun.com
  34. 34. Ausblick: Hardware Erweiterungen • Raspberry Pi Kameramodul • 1080p HD Videoaufnahme bei 30 fps • PiFace Raspberry Pi Zusatzplatine • direkt auf den GPIO-Port aufsteckbar • Kosten: ca 25 EUR http://www.piface.org.uk • ermöglicht Kommunikation mit Schaltern, Sensoren, Aktoren, Motoren, LEDs usw. • 2 Schaltrelais, 4 Taster, 8 digitale Eingänge • Software-Library: pifacedigitalio
 http://piface.github.io/pifacedigitalio
  35. 35. Heimautomatisierung: Technik • Steuerungsmöglichkeiten: Remote Control per Smartphone-App • Generische Remote Controller mit eigener Middleware • OpenRemote 
 http://www.openremote.org/display/docs/About • OpenHab 
 http://www.openhab.org • Mini-Service mit GUI-Builder und eigener Smartphone App • NetIO 
 http://netio.davideickhoff.de/de/ • RasPiConnect Control Panel 
 http://www.milocreek.com/downloads/index.html

  36. 36. Links • Raspberry Pi Tutorials & Seiten zum Einstieg • Raspberry Pi Wiki: http://elinux.org/RPi_Hub • Tutorial-Übersicht: http://www.forum-raspberrypi.de/Thread-tutorial-uebersicht • Tutorial-Website: http://raspberrypiguide.de • Nützliche Raspberry Pi Websites • Raspberry Foundation (EN): http://www.raspberrypi.org • Adafruit (Tutorials, hardware kits, etc. - EN): http://learn.adafruit.com • Online-Magazin (EN): http://www.themagpi.com
  37. 37. Copyrights • Markennamen • The Raspberry PiWord Mark and Raspberry Pi Logo are owned by the Raspberry Pi Foundation. • All brand names names and marks mentioned may be trademarks or registered 
 trademarks of their respective owners. • Bildquellen: • Logos: python.org, http://www.raspberrypi.org , pycologne.de • PIR Sensor Closeup, PIR Breadboard Layout, ... • https://learn.adafruit.com/assets • by Simon Monk (Attribution Creative Commons License) • Uhr: vintage alarm clock / thermometer by Adelle & Justin (CC BY-NC 2.0)
 https://www.flickr.com/photos/h_is_for_home/4156310480/ • Heimprojekt: Nicolás Boullosa - the home automation system designed 
 by loren amelang himself (CC BY 2.0)
 https://www.flickr.com/photos/faircompanies/6616369115/
  38. 38. Kontakt / Fragen • Thomas Koch • @tomy_koch • http://wiki.pythonde.pysv.org/ThomasKoch • https://github.com/tommykoch/ • PyCologne • http://wiki.python-forum.de/pycologne • http://www.pycologne.de

×