@lhuet35#HackingHome
Hacking your Home
@lhuet35
SOFTEAM Cadextan
@lhuet35#HackingHome
Qu'allez-vous voir ?
•Du « Hacking »
•Du Hard
•Du Soft
•… et quelques idées bonus
@lhuet35#HackingHome
Qui suis-je ?
•9 ans de Java/Web chez
•4 ans de développement dans une grosse SSII
•4 ans dans le bât...
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
H
acking ?
@lhuet35#HackingHome
Hacking - Wikipedia
“ Dans un sens large, le
bidouillage ou hacking concerne
les activités visant à d...
@lhuet35#HackingHome
Hacker - Wikipedia
“ Derrière le terme hacker « se
cachent des utilisateurs à part,
qui préfèrent fou...
@lhuet35#HackingHome
Hacker - Wikipedia
“ Les motivations principales du
hacker sont « la passion, le jeu, le
plaisir, l’é...
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
Station
m
étéo
@lhuet35#HackingHome
« Hacking » station météo
Liaison radio
(433 / 868 MHz)
@lhuet35#HackingHome
« Hacking » station météo
Liaison radio
(433 / 868 MHz)
@lhuet35#HackingHome
Passer du hard au soft
HopeRF RFM12b
Bus SPI
@lhuet35#HackingHome
Coté soft
•Arduino / JeeNode
•Code C
•Librairie JeeLabs
•Raspberri Pi
•Code C
•Driver Linux
•Module N...
@lhuet35#HackingHome
Montage avec Arduino UNO
http://openenergymonitor.org/emon/buildingblocks/rfm12b-wireless
@YourTwitterHandle@lhuet35#HackingHome
Dém
o
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
H
ard
@lhuet35#HackingHome
2 grandes familles de cartes
•Microcontrôleurs
•Programme « flashé »
•Code C le plus souvent
•Cartes ...
@lhuet35#HackingHome
Connecteur Raspberry Pi
•GPIO
•Entrées / Sorties
•PWM
•Liaisons série
•UART
•SPI
•I2C
UART
I2C
SPI
SP...
@lhuet35#HackingHome
Arduino « pinout »
UART
GPIO
Entrée
Analogiques
I2C
« Power »
@lhuet35#HackingHome
Multiples « périphériques »
Pression
atmosphérique Température
Affichage Texte
Humidité
Affichage gra...
@lhuet35#HackingHome
Pilotage « courant fort »
3,3V
GND
5V
GPIO
Appareils 220 V
(Max 10A)
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
Soft
@lhuet35#HackingHome
Arduino IDE
Port série PC
Compilation
Upload
IDE écrit en Java
@lhuet35#HackingHome
/* http://arduino.cc/en/Tutorial/AnalogInput */
int sensorPin = A0;
int ledPin = 13;
int sensorValue ...
@lhuet35#HackingHome
Ecosystème Arduino
•Nombreuses librairies
• Presque une librairie par capteur !
• http://arduino.cc/e...
@lhuet35#HackingHome
Ecosystème Raspberry Pi
•C / C++
• WiringPi
• API bas niveau (gpio.h)
•Java
• Java Embedded
• Pi4J - ...
@lhuet35#HackingHome
Nombreux modules Node.js
•Port série → https://github.com/voodootikigod/node-serialport
•Firmata → ht...
@lhuet35#HackingHome
var LCD = require('lcd-pcf8574');
var Gpio = require('onoff').Gpio;
var ledRouge = new Gpio(22, 'out'...
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
Com
pteur
ED
F
@lhuet35#HackingHome
« Hacking » compteur EDF
Rien n'est illégal dans ce montage (hacking != illegal)
UART
Liaison Téléinf...
@lhuet35#HackingHome
Montage téléinfo
Réalisation
Prototype
@lhuet35#HackingHome
Cablage sur le compteur
@lhuet35#HackingHome
Protocole Teleinfo
•Liaison série 1200 7E1
• http://www.erdf.fr/medias/DTR_Racc_Comptage/ERDF-NOI-CPT...
@lhuet35#HackingHome
Module Teleinfo sur Node.js
•https://github.com/lhuet/teleinfo-node
var teleinfo = require('teleinfo'...
@lhuet35#HackingHome
Module Tarifbleu sur Node.js
•https://github.com/lhuet/tarifbleu-node
var tarifbleu = require('tarifb...
@lhuet35#HackingHome
Application
•MongoDB
• Stockage des données (SAAS)
• Aggregation Framework pour la consolidation
•Nod...
@lhuet35#HackingHome
Frontend Web
•AngularJS
• Rudimentaire pour le moment
•Build avec Gulp.js
• Livereload serveur + clie...
@lhuet35#HackingHome
Application Web
@YourTwitterHandle@lhuet35#HackingHome
Dém
o
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
M
ontages
à
venir
@lhuet35#HackingHome
Chaufage & ECS
•Ballon avec 3 sources d'énergie
• Chauffage bois
• Panneau solaire
• Résistance élect...
@lhuet35#HackingHome
Écran « familial »
•Supervision / Contrôle
• Visualisation des consommations en « live »
• Aide à l'o...
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
Q
uelques
pointeurs
@lhuet35#HackingHome
Liens utiles
•« Learn Adafruit » → https://learn.adafruit.com
• Tutoriels Arduino / Raspberry Pi / Be...
@YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome
Q
&
A
Hacking your home
Hacking your home
Hacking your home
Prochain SlideShare
Chargement dans…5
×

Hacking your home

1 197 vues

Publié le

Idées pour connecter sa maison (Compteur EDF, Station météo, ...)

Publié dans : Périphériques & matériel
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 197
Sur SlideShare
0
Issues des intégrations
0
Intégrations
50
Actions
Partages
0
Téléchargements
19
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Hacking your home

  1. 1. @lhuet35#HackingHome Hacking your Home @lhuet35 SOFTEAM Cadextan
  2. 2. @lhuet35#HackingHome Qu'allez-vous voir ? •Du « Hacking » •Du Hard •Du Soft •… et quelques idées bonus
  3. 3. @lhuet35#HackingHome Qui suis-je ? •9 ans de Java/Web chez •4 ans de développement dans une grosse SSII •4 ans dans le bâtiment ! https://github.com/lhuet
  4. 4. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome H acking ?
  5. 5. @lhuet35#HackingHome Hacking - Wikipedia “ Dans un sens large, le bidouillage ou hacking concerne les activités visant à détourner un objet de sa fonction première. ”
  6. 6. @lhuet35#HackingHome Hacker - Wikipedia “ Derrière le terme hacker « se cachent des utilisateurs à part, qui préfèrent fouiller dans les entrailles d’un ordinateur plutôt que simplement l’utiliser » ”
  7. 7. @lhuet35#HackingHome Hacker - Wikipedia “ Les motivations principales du hacker sont « la passion, le jeu, le plaisir, l’échange et le partage » ”
  8. 8. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome Station m étéo
  9. 9. @lhuet35#HackingHome « Hacking » station météo Liaison radio (433 / 868 MHz)
  10. 10. @lhuet35#HackingHome « Hacking » station météo Liaison radio (433 / 868 MHz)
  11. 11. @lhuet35#HackingHome Passer du hard au soft HopeRF RFM12b Bus SPI
  12. 12. @lhuet35#HackingHome Coté soft •Arduino / JeeNode •Code C •Librairie JeeLabs •Raspberri Pi •Code C •Driver Linux •Module Node.js https://github.com/gkaindl/rfm12b-linux https://github.com/jcw/jeelib
  13. 13. @lhuet35#HackingHome Montage avec Arduino UNO http://openenergymonitor.org/emon/buildingblocks/rfm12b-wireless
  14. 14. @YourTwitterHandle@lhuet35#HackingHome Dém o
  15. 15. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome H ard
  16. 16. @lhuet35#HackingHome 2 grandes familles de cartes •Microcontrôleurs •Programme « flashé » •Code C le plus souvent •Cartes avec Linux embarqué •Souvent avec un SoC ARM •Langage au choix
  17. 17. @lhuet35#HackingHome Connecteur Raspberry Pi •GPIO •Entrées / Sorties •PWM •Liaisons série •UART •SPI •I2C UART I2C SPI SPI http://elinux.org/Rpi_Low-level_peripherals
  18. 18. @lhuet35#HackingHome Arduino « pinout » UART GPIO Entrée Analogiques I2C « Power »
  19. 19. @lhuet35#HackingHome Multiples « périphériques » Pression atmosphérique Température Affichage Texte Humidité Affichage graphique +« Touch Screen » Caméra
  20. 20. @lhuet35#HackingHome Pilotage « courant fort » 3,3V GND 5V GPIO Appareils 220 V (Max 10A)
  21. 21. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome Soft
  22. 22. @lhuet35#HackingHome Arduino IDE Port série PC Compilation Upload IDE écrit en Java
  23. 23. @lhuet35#HackingHome /* http://arduino.cc/en/Tutorial/AnalogInput */ int sensorPin = A0; int ledPin = 13; int sensorValue = 0; void setup() { pinMode(ledPin, OUTPUT); // config. du pin en sortie } void loop() { sensorValue = analogRead(sensorPin); digitalWrite(ledPin, HIGH); // Led allumée delay(sensorValue); digitalWrite(ledPin, LOW); // Led éteinte delay(sensorValue); } /* http://arduino.cc/en/Tutorial/AnalogInput */ int sensorPin = A0; int ledPin = 13; int sensorValue = 0; void setup() { pinMode(ledPin, OUTPUT); // config. du pin en sortie } void loop() { sensorValue = analogRead(sensorPin); digitalWrite(ledPin, HIGH); // Led allumée delay(sensorValue); digitalWrite(ledPin, LOW); // Led éteinte delay(sensorValue); } Arduino → Langage accessible
  24. 24. @lhuet35#HackingHome Ecosystème Arduino •Nombreuses librairies • Presque une librairie par capteur ! • http://arduino.cc/en/Reference/Libraries •Firmata « Firmware » prêt à l'emploi→ • Protocole Firmata - http://firmata.org/wiki/Protocol • Nombreuses implémentations (Java, C, Python, JavaScript, Ruby, ...) •Couplage aisé avec Raspberry Pi
  25. 25. @lhuet35#HackingHome Ecosystème Raspberry Pi •C / C++ • WiringPi • API bas niveau (gpio.h) •Java • Java Embedded • Pi4J - https://github.com/Pi4J/pi4j/ •JavaScript • Node.js et de multiples modules
  26. 26. @lhuet35#HackingHome Nombreux modules Node.js •Port série → https://github.com/voodootikigod/node-serialport •Firmata → https://github.com/jgautier/firmata •GPIO → https://www.npmjs.org/package/onof •LCD Texte I2C → https://github.com/wilberforce/lcd-pcf8574 •Teleinfo → https://github.com/lhuet/teleinfo-node •...
  27. 27. @lhuet35#HackingHome var LCD = require('lcd-pcf8574'); var Gpio = require('onoff').Gpio; var ledRouge = new Gpio(22, 'out'); var boutonJaune = new Gpio(23, 'in', 'falling'); var lcd = new LCD('/dev/i2c-0', 0x27); boutonJaune.watch(function(err, value) { ledRouge.write(0); lcd.setCursor(0,0).print('-- Devoxx France --'); lcd.setCursor(0,1).print(' Bouton appuyé ! '); setTimeout(function() { lcd.setCursor(0,1).print(' ') ; } }); var LCD = require('lcd-pcf8574'); var Gpio = require('onoff').Gpio; var ledRouge = new Gpio(22, 'out'); var boutonJaune = new Gpio(23, 'in', 'falling'); var lcd = new LCD('/dev/i2c-0', 0x27); boutonJaune.watch(function(err, value) { ledRouge.write(0); lcd.setCursor(0,0).print('-- Devoxx France --'); lcd.setCursor(0,1).print(' Bouton appuyé ! '); setTimeout(function() { lcd.setCursor(0,1).print(' ') ; } }); Exemple Node.js
  28. 28. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome Com pteur ED F
  29. 29. @lhuet35#HackingHome « Hacking » compteur EDF Rien n'est illégal dans ce montage (hacking != illegal) UART Liaison Téléinfo (Bornier client) Montage « custom »
  30. 30. @lhuet35#HackingHome Montage téléinfo Réalisation Prototype
  31. 31. @lhuet35#HackingHome Cablage sur le compteur
  32. 32. @lhuet35#HackingHome Protocole Teleinfo •Liaison série 1200 7E1 • http://www.erdf.fr/medias/DTR_Racc_Comptage/ERDF-NOI-CPT_02E.pdf ADCO 000028290000 P OPTARIF BASE 0 ISOUSC 30 9 BASE 002247218 % PTEC TH.. $ IINST 003 Z IMAX 030 B PAPP 00630 * MOTDETAT 000000 B ADCO 000028290000 P OPTARIF BASE 0 ISOUSC 30 9 BASE 002247218 % PTEC TH.. $ IINST 003 Z IMAX 030 B PAPP 00630 * MOTDETAT 000000 B Exemple de trame (Tarif bleu)
  33. 33. @lhuet35#HackingHome Module Teleinfo sur Node.js •https://github.com/lhuet/teleinfo-node var teleinfo = require('teleinfo'); var util = require('util'); // Exemple d'utilisation sur Raspberry Pi var trameEvents = teleinfo('/dev/ttyAMA0'); // Événement 'tramedecodee' pour chaque trame réçue du compteur trameEvents.on('tramedecodee', function (data) { // data : objet avec les données validées (checksum) console.log(util.inspect(data)); }); var teleinfo = require('teleinfo'); var util = require('util'); // Exemple d'utilisation sur Raspberry Pi var trameEvents = teleinfo('/dev/ttyAMA0'); // Événement 'tramedecodee' pour chaque trame réçue du compteur trameEvents.on('tramedecodee', function (data) { // data : objet avec les données validées (checksum) console.log(util.inspect(data)); });
  34. 34. @lhuet35#HackingHome Module Tarifbleu sur Node.js •https://github.com/lhuet/tarifbleu-node var tarifbleu = require('tarifbleu'); var util = require('util'); var logger = function (data) { console.log(util.inspect(data)); }; var infoCompteur = tarifbleu('/dev/ttyAMA0', '00 * * * * *', logger); setInterval(function() { console.log(infoCompteur.getPuissanceApparente() + ' VA'); console.log(infoCompteur.getIntensite() + ' A'); console.log(infoCompteur.getIndex() + ' Wh'); }, 2000); var tarifbleu = require('tarifbleu'); var util = require('util'); var logger = function (data) { console.log(util.inspect(data)); }; var infoCompteur = tarifbleu('/dev/ttyAMA0', '00 * * * * *', logger); setInterval(function() { console.log(infoCompteur.getPuissanceApparente() + ' VA'); console.log(infoCompteur.getIntensite() + ' A'); console.log(infoCompteur.getIndex() + ' Wh'); }, 2000);
  35. 35. @lhuet35#HackingHome Application •MongoDB • Stockage des données (SAAS) • Aggregation Framework pour la consolidation •Node.js • Serveur Express (API REST) • Liaison Téléinfo
  36. 36. @lhuet35#HackingHome Frontend Web •AngularJS • Rudimentaire pour le moment •Build avec Gulp.js • Livereload serveur + client
  37. 37. @lhuet35#HackingHome Application Web
  38. 38. @YourTwitterHandle@lhuet35#HackingHome Dém o
  39. 39. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome M ontages à venir
  40. 40. @lhuet35#HackingHome Chaufage & ECS •Ballon avec 3 sources d'énergie • Chauffage bois • Panneau solaire • Résistance électrique •A venir • Monitoring températures Optimisation conso.→ • Pilotage résistance
  41. 41. @lhuet35#HackingHome Écran « familial » •Supervision / Contrôle • Visualisation des consommations en « live » • Aide à l'optimisation d'énergie •Écrans en cours de tests Ecran 2,2 " Ecran 3,2 " tactile
  42. 42. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome Q uelques pointeurs
  43. 43. @lhuet35#HackingHome Liens utiles •« Learn Adafruit » → https://learn.adafruit.com • Tutoriels Arduino / Raspberry Pi / Beaglebone •Référence eLinux.org → http://elinux.org/Main_Page • Nombreux articles Soft & Hard • Utiles pour le « Troubleshooting » •Blogs • Le mien ;-) → http://lhuet.github.io/blog/ • Celui d'Alexandre  http://alex.thomazo.info/2013/06/16/premiers-pas-avec-un-jeenode/→
  44. 44. @YourTwitterHandle#DVXFR14{session hashtag} @lhuet35#HackingHome Q & A

×