Hacking your Home @bdx.io

1 652 vues

Publié le

Venez voir comment "hacker" des objets de votre maison pour en faire des "objets connectés" en réutilisant vos compétences de développeur.

Des exemples de montages et de code seront présentés, entre autres :
- Comptage électrique (téléinfo)
- Monitoring de température (hacking de station météo radio)
- Contrôle d'équipements (Chauffage, VMC, Volets roulants, ...)
- RaspberryPi, BeagleBone Black et Arduino seront les principaux ingrédients.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

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

Aucune remarque pour cette diapositive

Hacking your Home @bdx.io

  1. 1. Hacking your Home @lhuet35 SOFTEAM Cadextan
  2. 2. Qu'allez-vous voir ? • Du « Hacking » • Du Hard • Du Soft • … et quelques idées bonus
  3. 3. Qui suis-je • 10 ans de Java/Web • 4 ans de développement – Grosse SSII • 4 ans dans le bâtiment ! https://github.com/lhuet
  4. 4. Please DO NOT TRY this at home
  5. 5. PLEASE TRY THIS AT HOME
  6. 6. Hacking ??
  7. 7. Hacking - Wikipedia “ Dans un sens large, le bidouillage ou hacking concerne les activités visant à détourner un objet de sa fonction première. ”
  8. 8. Hacking - 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 » ”
  9. 9. Hacking - Wikipedia “ Les motivations principales du hacker sont « la passion, le jeu, le plaisir, l’échange et le partage » ”
  10. 10. Station météo
  11. 11. « Hacking » station météo Liaison radio (433 / 868 MHz)
  12. 12. « Hacking » station météo Liaison radio (433 / 868 MHz)
  13. 13. Passer du hard au soft HopeRF RFM12b Bus SPI
  14. 14. Coté soft • Arduino / JeeNode – Code C – Librairie JeeLabs ● Raspberry Pi – Code C – Driver Linux https://github.com/jcw/jeelib – Module Node.js https://github.com/gkaindl/rfm12b-linux
  15. 15. Montage Arduino http://openenergymonitor.org/emon/buildingblocks/rfm12b-wireless
  16. 16. Démo
  17. 17. Hard
  18. 18. 2 grandes familles de cartes • Microcontroleurs – Programme « flashé » – Code C (le + souvent) • Cartes avec OS (Linux) – Souvent un SoC ARM – Choix du langage
  19. 19. 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
  20. 20. Arduino « pinout » GPIO UART Entrée Analogiques I2C « Power »
  21. 21. Multiples « devices » Pression atmosphérique Température Humidité Affichage Texte Affichage graphique & « Touch Screen » Caméra
  22. 22. Pilotage « courant fort » Appareils 220 V (Max 10A) 3,3V GPIO GND 5V
  23. 23. Soft
  24. 24. Arduino IDE Compilation Upload IDE écrit en Java Port série
  25. 25. Arduino → Langage accessible /* http://arduino.cc/en/Tutorial/AnalogInput */ int sensorPin = A0; int ledPin = 13; int sensorValue = 0; void setup() { /* 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); } 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); }
  26. 26. 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
  27. 27. Ecosystème Raspberry Pi • C / C++ – WiringPi – API bas niveau (gpio.h) • Java – Java Embedded – Pi4J - http://pi4j.com/ – Libulldog - http://libbulldog.org/ • JavaScript – Node.js et multiples modules
  28. 28. 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/onoff • LCD Texte I2C – https://github.com/wilberforce/lcd-pcf8574 • ...
  29. 29. Exemple Node.js 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 = 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); var lcd = new LCD('/dev/i2c-0', 0x27); boutonJaune.watch(function(err, value) { boutonJaune.watch(function(err, value) { ledRouge.write(0); lcd.setCursor(0,0).print('--- Bdx.io ---'); lcd.setCursor(0,1).print(' The place to be ! '); setTimeout(function() { ledRouge.write(0); lcd.setCursor(0,0).print('--- Bdx.io ---'); lcd.setCursor(0,1).print(' The place to be ! '); setTimeout(function() { lcd.setCursor(0,1).print(' ') ; } }); lcd.setCursor(0,1).print(' ') ; } });
  30. 30. Compteur EDF
  31. 31. « Hacking » compteur EDF UART Rien n'est illégal dans ce montage (hacking != illégal) Liaison Téléinfo (Bornier client) Adaptateur « custom »
  32. 32. Montage téléinfo Réalisation Prototype
  33. 33. Cablage sur le compteur
  34. 34. 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)
  35. 35. 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'); // Évt 'tramedecodee' pour chaque trame reçue trameEvents.on('tramedecodee', function (data) { // data : objet avec données validées (checksum) var teleinfo = require('teleinfo'); var util = require('util'); // Exemple d'utilisation sur Raspberry Pi var trameEvents = teleinfo('/dev/ttyAMA0'); // Évt 'tramedecodee' pour chaque trame reçue trameEvents.on('tramedecodee', function (data) { // data : objet avec données validées (checksum) console.log(util.inspect(data)); console.log(util.inspect(data)); }); });
  36. 36. Module Tarifbleu sur Node.js • https://github.com/lhuet/tarifbleu-node var var tarifbleu tarifbleu = = require('require('tarifbleu'); tarifbleu'); var var util util = = require('require('util'); util'); var var logger logger = = function function ((data) data) { { console.log(util.inspect(data)); console.log(util.inspect(data)); }; var info = tarifbleu('/dev/ttyAMA0', '00 * * * * *', }; var info = tarifbleu('/dev/ttyAMA0', '00 * * * * *', logger); setInterval(function() { console.log(info.getPuissanceApparente() + ' VA'); console.log(info.getIntensite() + ' A'); console.log(info.getIndex() + ' Wh'); }, 2000); logger); setInterval(function() { console.log(info.getPuissanceApparente() + ' VA'); console.log(info.getIntensite() + ' A'); console.log(info.getIndex() + ' Wh'); }, 2000);
  37. 37. Application • MongoDB – SAAS – Aggregation framework • Node.js – Express + Liaison Téléinfo • AngularJS https://github.com/lhuet/teleinfo-app
  38. 38. Application Web
  39. 39. Démo
  40. 40. Réseau IoT « Low Cost »
  41. 41. RS485 à la rescousse • Liaison série – 32 « devices » sur le bus – 100kbit/s sur plus de 1000 m ! • « Low Cost » – 1 simple paire torsadée suffit – < 1.5 € les 5 sur ebay
  42. 42. Cablage Paire Torsadée Résistance Terminale MAX485 « Device »
  43. 43. Prototypage Bus RS485 d'environ 15 cm MAX485
  44. 44. … avec un fil de 100m
  45. 45. Kit IoT Arduino ~ 2 €
  46. 46. Montages
  47. 47. Chauffage & ECS • Ballon tri-énergie – Chauffage bois – Panneaux solaires – Résistance électrique • A venir – Monitoring des températures & circulateurs – Pilotage résistance
  48. 48. Ecran supervision « familial » • Supervision / Contrôle – Visualisation des consommations en « live » – Aide à l'optimisation d'énergie ● Prototypage en cours Arduino Pro Mini Ecran LCD 2,2 "
  49. 49. Quelques pointeurs
  50. 50. Liens utiles • « Learn Adafruit » – https://learn.adafruit.com – Tutoriels Arduino / Raspberry Pi / Beaglebone • Référence Linux embarqué – http://elinux.org – 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/
  51. 51. Merci :-) Questions ?

×