Domotica met een Raspberry PI
Herfst 2013
Jeroen Bruins Slot
1
Agenda Introductie en waarom De eerste stappen Fouten Wat voor software Arduino – Jeenode Raspberry Velleman k8055 Demo’s Domotica oplossing thuis Toekomst, Boeken , Handige links Herfst 2013
Jeroen Bruins Slot
2
Herfst 2013
Jeroen Bruins Slot
3
Wie ben ik ? ●
●
●
Herfst 2013
Jeroen Bruins Slot,55 jaar, ik werk bij Oracle als Sales Consultant, daarvoor bij Sun MicroSystems en Wang Labs. Eerste Unix/Linux ervaringen met SCO Xenix, Red Hat, Solaris, Debian, Ubuntu, FreeBSD. Hobby domotica (Samentrekking van de woorden domus (huis) en elektronica.) Jeroen Bruins Slot
4
Hoe het allemaal begon ●
Assen
●
Verwarming in de winter
●
Open-Source > OpenSolaris
●
Sun Spots
●
Doelstelling: ervaring opdoen met Java
Herfst 2013
Jeroen Bruins Slot
5
Herfst 2013
Jeroen Bruins Slot
6
Mhz, Memory, CPU,s Atmega328 32kb flash 20Mhz 8bit 1k eeprom 2k sram Raspberry PI 700 mhz 32Bit 256 /512 mb ram T5 3.6 GHz 128 cores 1024 cpu/threads 64 bit 4TB ram
Herfst 2013
Jeroen Bruins Slot
7
Low Power Low Cost Computing
Herfst 2013
Jeroen Bruins Slot
8
Wat ging er direct fout ●
Gebruik maken van nightly OpenSolaris development builds
●
Starten met Java, Python en C
●
Ik ben slecht in programmeren
●
Starten met veel te dure componenten (Sun Spots)
Herfst 2013
Jeroen Bruins Slot
9
Tweede Fase ●
Poging met Cobalt Cube 2,3 en een 4 –
●
(Linux 2.0 -2.2, Mips processor)
Laptop met Debian en K8055 Velleman –
Herfst 2013
Kabels door het hele huis
Jeroen Bruins Slot
10
Toch weer Solaris ●
●
●
●
Geen nightly builds maar stabielere versies van Solaris 11/12 Gebruik het ook als OS op mijn laptop /dual boot Hulp van Solaris developpers (drivers, python, Java)
Os onafhankelijk programmeren –
Gestopt met C, te complex (na een paar maanden heb ik geen idee meer waarom ik iets heb gedaan)
–
Keuze voor PHP en evt. shell scripts
Herfst 2013
Jeroen Bruins Slot
11
Waarom PHP ●
PHP is open-source en draait op elk platform
●
PHP is erg makkelijk te leren.
●
PHP is snel.
●
●
●
PHP heeft een goede documentatie en er zijn veel tutorials te vinden op het web.
Zowel voor de client als de server side. (in Html, maar ook via de command line) Geeft meteen aan waar de fout zit tijdens runnen
Herfst 2013
Jeroen Bruins Slot
12
Eerste echte stappen ●
Aansturing van relais om de verwarming te overbruggen.
●
Gas en Elektra meter uitlezen.
●
Alarm systeem
Herfst 2013
Jeroen Bruins Slot
13
Herfst 2013
Jeroen Bruins Slot
14
Wat hebben we hier staan? JeeNode LCD JeeNode Temperatuur sensor JeeNode LCD (USB) Velleman K8055 (USB) +LDR Laptop
868Mhz
JeeNode aan GPIO
Router (DHCP)
Bluetooth
Herfst 2013
Jeroen Bruins Slot
Telefoon
15
Linux Board? Welke Linux? ●
Openwrt?
●
Debian
●
Centos
●
Ubuntu
●
Of toch FreeBSD
●
Freenas
●
Android ?
●
Solaris
Herfst 2013
Jeroen Bruins Slot
16
Raspberry PI ●
●
●
●
Low power Linux Migratie eenvoudig “c” opnieuw compileren, rrd export-import, de rest is (bijna)hetzelfde Veel problemen met de Power adapter (steeds corrupted filesystems) Nadeel geen analoge input
Herfst 2013
Jeroen Bruins Slot
17
GPIO - LED # echo "17" >/sys/class/gpio/export // stuur alle pinnen afzonderlijk aan # echo "out" >/sys/class/gpio/gpio17/direction // maak output pin # echo "1" >/sys/class/gpio/gpio17/value; # LED aan # echo "0" >/sys/class/gpio/gpio17/value; # LED uit
Herfst 2013
Jeroen Bruins Slot
18
Demo • Blinking Led op GPIO • ./gpio.sh
Herfst 2013
Jeroen Bruins Slot
19
Herfst 2013
Jeroen Bruins Slot
20
Raspberry – K8055 ●
K8055-detach //http://libk8055.sourceforge.net/ –
●
// Disconnecting all Velleman K8055 boards from their current driver
CUEIB // http://linuxk8055.free.fr/ Programma om de K8055 uit te lezen , verder aangepast (meerdere kaarten en fout controle)
Herfst 2013
Jeroen Bruins Slot
21
Gasmeter
Herfst 2013
Jeroen Bruins Slot
22
Demo ●
CUEIB ./cueib.sh
●
LDR
●
Led op Raspberry = Led op K8055 (5)
●
“Houston we have a problem” K8055 (4)
●
Index.php
●
Gasmeter sensor
Herfst 2013
Jeroen Bruins Slot
23
Herfst 2013
Jeroen Bruins Slot
24
Software ●
Van MySQL naar RRDtool
●
Statische Plaatjes ●
(Straks in een demo ook javascript)
●
Netbeans als programmeer omgeving
●
Dropbox om alle software in sync te houden.
●
Rsync alle data naar externe locatie
Herfst 2013
Jeroen Bruins Slot
25
Waarom RRD Tool? ●
●
RRDtool (acronym for round-robin database tool) aims to handle time-series data like network bandwidth, temperatures, CPU load, etc. The data are stored in a round-robin database (circular buffer), thus the system storage footprint remains constant over time. It also includes tools to extract RRD data in a graphical format, for which it was originally intended.
Herfst 2013
Jeroen Bruins Slot
26
Wat grafieken
Herfst 2013
Jeroen Bruins Slot
27
Arduino - JeeNodes ●
Atmel met 868Mhz RFM12b zend/ontvanger ●
ATMEGA328P
●
Programeren in C++
●
Low Cost
●
–
Open Hardware
–
Open Software
Shields om sensors aan te sluiten
Herfst 2013
Jeroen Bruins Slot
28
GPIO – Arduino - Serial ●
Jeenode rechtstreeks op GPIO pins –
sudo usermod -a -G tty pi // maak user pi onderdeel van group tty
–
edit the file /etc/inittab // zorg dat er geen getty proces loopt. –
–
Edit /boot/cmdline.txt //geen console output naar dit device –
●
(T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 naar #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100)
(remove console=ttyAMA0,115200 kgdboc=ttyAMA0,115200)
Na reboot net als de LED demo een reset sturen om de JeeNode te starten (rc.local)
Herfst 2013
Jeroen Bruins Slot
29
Demo Wireless Ping Wireless Temperatuur Sensor
JeeNode Projecten ●
Display met tmp, verjaardag en cpuload
●
Bewegings sensor
●
Kaku verlichting sturen
●
Luchtdruk /Relatieve vochtigheid
●
Mechanische Ventilatie
●
Tuin Sproeier
●
Koelkast / Vriezer
●
Opentherm CV Ketel
Herfst 2013
Jeroen Bruins Slot
31
Herfst 2013
Jeroen Bruins Slot
32
Opentherm Wikipedia: OpenTherm (short: OT) is a standard communications protocol used in central heating systems between a central heating boiler and a thermostat or controller. It is a point to point protocol where one device (thermostat) is the master and the other the slave (boiler).
Herfst 2013
Jeroen Bruins Slot
33
Opentherm • Of toch niet zo open?
Herfst 2013
Jeroen Bruins Slot
34
Output Devices ●
Android telefoon
●
Tablet in de huiskamer
●
Speaker in de meterkast
●
Website
●
●
Leds ipv Sirene en Flitser buiten (voor test doeleinden) SMS
Herfst 2013
Jeroen Bruins Slot
35
Mechanische ventilatie
Herfst 2013
Jeroen Bruins Slot
36
Logica Probeer altijd eerst een duidelijk schema te maken wat je wilt gaan doen. Bijv Mechanische ventilatie, stand 1 2 of 3 afhankelijk van (beweging, temperatuur, vochtigheidsgraad bad-woonkamer, staat het gasfornuis aan, geeft de ketel heet water, is het na 12 uur ‘s nachts. etc
Herfst 2013
Jeroen Bruins Slot
37
Herfst 2013
Jeroen Bruins Slot
38
Fouten ●
Licht om 24:00 standaard uit
●
868Mhz problemen zijn lastig te debuggen
●
Male-Male, Female-Female of Male-Female communication –
Send once, who cares (kaku protocol)
–
Send over and over (Opentherm)
–
Send with Ack’s (Roomnode bewegings sensor)
Herfst 2013
Jeroen Bruins Slot
39
Demo Domotica Systeem Thuis ●
Nu Solaris 11 op Intel boardje (D2500HN mini-itx) –
2 * K8055 + 2 *K2633 (relais) en 2 * K8067 Temp sensor
–
Jeelink (centrale ontvanger)
–
Arduino Nodo (KaKu send)
–
Arduino 433/868 receiver (KaKu + OOK)
Herfst 2013
Jeroen Bruins Slot
40
DEMO Systeem thuis
14-10-13
NLLGG
Jeroen Bruins Slot
42
Roadmap Korte Termijn ●
●
●
●
●
Tipping-Bucket regen meter IR leds om TV besturing te monitoren / over te nemen Bluetooth koppeling (is de auto/telefoon thuis?)
Javascript (zoom) van RRD files Git gebruiken als source code beheertool
Herfst 2013
NLLGG
Jeroen Bruins Slot
43
Roadmap Lange Termijn ●
●
●
Camera voor de Gas – Electrameter (OCR meterstand) DukePad: met een Rasperry Pi –
https://wiki.openjdk.java.net/display /OpenJFX/DukePad
–
JavaFX ipv X11
Android versie
Herfst 2013
Jeroen Bruins Slot
44
De Meest Gebruikte Tools
Herfst 2013
NLLGG
Jeroen Bruins Slot
45
Documentatie
Herfst 2013
Jeroen Bruins Slot
46
Wat Kost Dat Ongeveer? ●
K8055
Euro 30
●
Arduino
Euro 25
●
RaspberryPI
Euro 35
●
Jeenode
Euro 15
●
Jeenode USB
Euro 30
●
RBBB
Euro 15
●
USB-BUB
Euro 15
Herfst 2013
Jeroen Bruins Slot
47
Links ●
http://www.bwired.nl/
●
Jeelabs.org
●
Elektor –
Part #1: From ingredient to dish, and no oven required
–
Part #2: No harm in having a few extra kitchen appliances ready
–
Part #3: Let’s get Serial
–
Part #4: Set the Table for Raspberry (S)PI
–
Part #5: I²C: I Square Seeds (for baking)
–
Part #6: A Distinguished Chef enters the kitchen
–
Part #7: PWMin’ is a piece of cake
●
http://www.themagpi.com/
●
http://www.ladyada.net/learn/arduino/
●
Http://embedded-projects.net
Herfst 2013
Jeroen Bruins Slot
48
14-10-13
NLLGG
Jeroen Bruins Slot
49
Bedankt!
Heb je nog vragen: mail naar
[email protected] Alle software inclusief presentatie zijn beschikbaar:
Herfst 2013
NLLGG
Jeroen Bruins Slot
50
Hello NLLGG LiquidCrystalI2C lcd (myI2C); #define screen_width 16 #define screen_height 2 void setup() { lcd.begin(screen_width, screen_height); lcd.print("Hello, NLLGG!"); } void loop() { lcd.setCursor(0, 1); lcd.print("Up time:"); lcd.print(millis()/1000); lcd.print('s'); delay(500); lcd.backlight(); }
CUEIB void print_help() { printf("Usage: 0.5 \n"); printf("--device -d <device number> Select the device\n"); printf("--counter -c (:Counter:reset) Get counter/Reset counter\n"); printf("--digital-input -di (:bit:Decimal) Get the digital input\n"); printf("--digital-output –do (:bit)
Set the digital output\n"); printf("--analog-input -ai (:device) Get the analog output of device 1 or 2\n"); printf("--analog-output -ao (:device) Set the analog output of device 1 or 2\n"); printf("--help This help message\n");
Arduino-Serial void usage(void) { printf("Usage: arduino-serial -p <serialport> [OPTIONS]\n" "\n" "Options:\n" " -h, --help Print this help message\n" " -p, --port=serialport Serial port Arduino is on\n" " -b, --baud=baudrate Baudrate (bps) of Arduino\n" " -s, --send=data Send data to Arduino\n" " -r, --receive Receive data from Arduino & print it out\n" " -n --num=num Send a number as a single byte\n" " -d --delay=millis Delay for specified milliseconds\n" "\n"