SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
Hacking your Home 
@lhuet35 
SOFTEAM Cadextan
Qu'allez-vous voir ? 
• Du « Hacking » 
• Du Hard 
• Du Soft 
• … et quelques idées bonus
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
Please 
DO NOT TRY 
this at home
PLEASE 
TRY THIS AT HOME
Hacking ??
Hacking - Wikipedia 
“ Dans un sens large, le 
bidouillage ou hacking 
concerne les activités visant 
à détourner un objet de 
sa fonction première. ”
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 » ”
Hacking - Wikipedia 
“ Les motivations principales 
du hacker sont « la passion, 
le jeu, le plaisir, l’échange 
et le partage » ”
Station météo
« Hacking » station météo 
Liaison radio 
(433 / 868 MHz)
« Hacking » station météo 
Liaison radio 
(433 / 868 MHz)
Passer du hard au soft 
HopeRF RFM12b 
Bus SPI
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
Montage Arduino 
http://openenergymonitor.org/emon/buildingblocks/rfm12b-wireless
Démo
Hard
2 grandes familles de cartes 
• Microcontroleurs 
– Programme « flashé » 
– Code C (le + souvent) 
• Cartes avec OS (Linux) 
– Souvent un SoC ARM 
– Choix du langage
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
Arduino « pinout » 
GPIO 
UART 
Entrée 
Analogiques 
I2C 
« Power »
Multiples « devices » 
Pression 
atmosphérique Température Humidité 
Affichage Texte 
Affichage graphique 
& « Touch Screen » Caméra
Pilotage « courant fort » 
Appareils 220 V 
(Max 10A) 
3,3V 
GPIO 
GND 
5V
Soft
Arduino IDE 
Compilation 
Upload 
IDE écrit 
en Java 
Port série
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); 
}
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
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
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 
• ...
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(' ') ; 
} 
});
Compteur EDF
« Hacking » compteur EDF 
UART 
Rien n'est illégal dans ce montage 
(hacking != illégal) 
Liaison Téléinfo 
(Bornier client) 
Adaptateur 
« custom »
Montage téléinfo 
Réalisation 
Prototype
Cablage sur le compteur
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)
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)); 
}); 
});
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);
Application 
• MongoDB 
– SAAS 
– Aggregation framework 
• Node.js 
– Express + Liaison Téléinfo 
• AngularJS 
https://github.com/lhuet/teleinfo-app
Application Web
Démo
Réseau IoT 
« Low Cost »
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
Cablage 
Paire 
Torsadée 
Résistance 
Terminale 
MAX485 « Device »
Prototypage 
Bus RS485 
d'environ 15 cm 
MAX485
… avec un fil de 100m
Kit IoT Arduino ~ 2 €
Montages
Chauffage & ECS 
• Ballon tri-énergie 
– Chauffage bois 
– Panneaux solaires 
– Résistance électrique 
• A venir 
– Monitoring des températures 
& circulateurs 
– Pilotage résistance
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 "
Quelques pointeurs
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/
Merci :-) 
Questions ?

Más contenido relacionado

La actualidad más candente

2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open HardwareSylvain Wallez
 
Arduino saison 1-20180526
Arduino saison 1-20180526Arduino saison 1-20180526
Arduino saison 1-20180526FrancisGILLET
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduinoSinGuy
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1SinGuy
 
Intro arduino
Intro arduinoIntro arduino
Intro arduinoSOAEnsAD
 
Café Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - ArduinoCafé Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - ArduinoQuentin Geluyckens
 
Formation arduino 2018
Formation arduino 2018Formation arduino 2018
Formation arduino 2018Hichem Hamdi
 
Relais bluetooth - Balance connectée
Relais bluetooth - Balance connectéeRelais bluetooth - Balance connectée
Relais bluetooth - Balance connectéePeronnin Eric
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino unobyorn TANDU
 
Cours1 presentation de l'environnement arduino
Cours1   presentation de l'environnement arduinoCours1   presentation de l'environnement arduino
Cours1 presentation de l'environnement arduinolabsud
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
Un Raspberry Pi pour bidouiller
Un Raspberry Pi pour bidouillerUn Raspberry Pi pour bidouiller
Un Raspberry Pi pour bidouillerLook a box
 
Monter son pc pour les nuls
Monter son pc pour les nulsMonter son pc pour les nuls
Monter son pc pour les nulsYoussef Bensafi
 
Emulateur d’application soc
Emulateur d’application socEmulateur d’application soc
Emulateur d’application socWassim Smati
 
Carte multifonction 2017
Carte multifonction 2017Carte multifonction 2017
Carte multifonction 2017Peronnin Eric
 

La actualidad más candente (20)

2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
Arduino saison 1-20180526
Arduino saison 1-20180526Arduino saison 1-20180526
Arduino saison 1-20180526
 
Presentation arduino
Presentation arduinoPresentation arduino
Presentation arduino
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Intro arduino
Intro arduinoIntro arduino
Intro arduino
 
Café Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - ArduinoCafé Numérique Bruxelles - Les Makers - Arduino
Café Numérique Bruxelles - Les Makers - Arduino
 
Présentation des IoT
Présentation des IoTPrésentation des IoT
Présentation des IoT
 
Formation arduino 2018
Formation arduino 2018Formation arduino 2018
Formation arduino 2018
 
Relais bluetooth - Balance connectée
Relais bluetooth - Balance connectéeRelais bluetooth - Balance connectée
Relais bluetooth - Balance connectée
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
 
Systeme embarque
Systeme embarqueSysteme embarque
Systeme embarque
 
Cours1 presentation de l'environnement arduino
Cours1   presentation de l'environnement arduinoCours1   presentation de l'environnement arduino
Cours1 presentation de l'environnement arduino
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
 
Un Raspberry Pi pour bidouiller
Un Raspberry Pi pour bidouillerUn Raspberry Pi pour bidouiller
Un Raspberry Pi pour bidouiller
 
Monter son pc pour les nuls
Monter son pc pour les nulsMonter son pc pour les nuls
Monter son pc pour les nuls
 
OWF13 - arduino ardu block sumo
OWF13 - arduino ardu block sumoOWF13 - arduino ardu block sumo
OWF13 - arduino ardu block sumo
 
Emulateur d’application soc
Emulateur d’application socEmulateur d’application soc
Emulateur d’application soc
 
Carte multifonction 2017
Carte multifonction 2017Carte multifonction 2017
Carte multifonction 2017
 

Destacado

Sophia conf 2013 - Le monde du Raspberry
Sophia conf 2013 - Le monde du RaspberrySophia conf 2013 - Le monde du Raspberry
Sophia conf 2013 - Le monde du RaspberryNicolas Hennion
 
Hacking your home
Hacking your homeHacking your home
Hacking your homelaurenthuet
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.iolaurenthuet
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jslaurenthuet
 
Ebook fr 2020 hackers - 214 pages pour apprendre le hacking en francais - c...
Ebook fr   2020 hackers - 214 pages pour apprendre le hacking en francais - c...Ebook fr   2020 hackers - 214 pages pour apprendre le hacking en francais - c...
Ebook fr 2020 hackers - 214 pages pour apprendre le hacking en francais - c...usthbsido
 
Comment gerer-l'energie fr
Comment gerer-l'energie frComment gerer-l'energie fr
Comment gerer-l'energie frSylvie Narith
 
Présentation intelligent home
Présentation intelligent home Présentation intelligent home
Présentation intelligent home Hassen Dahmen
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Hajer Dahech
 
Rapportpfanidbelkacem 140305043828-phpapp01
Rapportpfanidbelkacem 140305043828-phpapp01Rapportpfanidbelkacem 140305043828-phpapp01
Rapportpfanidbelkacem 140305043828-phpapp01bessem ellili
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...Hajer Dahech
 
raspberry pi
 raspberry pi raspberry pi
raspberry piTECOS
 
Projet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleProjet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleAbdo07
 
Correction Examen 2014-2015 RDM
Correction Examen 2014-2015 RDMCorrection Examen 2014-2015 RDM
Correction Examen 2014-2015 RDMMouna Souissi
 
Hardware Hacking for JavaScript Engineers
Hardware Hacking for JavaScript EngineersHardware Hacking for JavaScript Engineers
Hardware Hacking for JavaScript EngineersFITC
 
Cours CyberSécurité - Concepts Clés
Cours CyberSécurité - Concepts ClésCours CyberSécurité - Concepts Clés
Cours CyberSécurité - Concepts ClésFranck Franchin
 
Correction examen Robotique
Correction examen Robotique Correction examen Robotique
Correction examen Robotique Mouna Souissi
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsguest3be047
 
Conception robot mobile
Conception robot mobile Conception robot mobile
Conception robot mobile Mouna Souissi
 

Destacado (20)

Sophia conf 2013 - Le monde du Raspberry
Sophia conf 2013 - Le monde du RaspberrySophia conf 2013 - Le monde du Raspberry
Sophia conf 2013 - Le monde du Raspberry
 
Hacking your home
Hacking your homeHacking your home
Hacking your home
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.io
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.js
 
Ebook fr 2020 hackers - 214 pages pour apprendre le hacking en francais - c...
Ebook fr   2020 hackers - 214 pages pour apprendre le hacking en francais - c...Ebook fr   2020 hackers - 214 pages pour apprendre le hacking en francais - c...
Ebook fr 2020 hackers - 214 pages pour apprendre le hacking en francais - c...
 
Comment gerer-l'energie fr
Comment gerer-l'energie frComment gerer-l'energie fr
Comment gerer-l'energie fr
 
Raspberry
RaspberryRaspberry
Raspberry
 
Présentation intelligent home
Présentation intelligent home Présentation intelligent home
Présentation intelligent home
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Rapportpfanidbelkacem 140305043828-phpapp01
Rapportpfanidbelkacem 140305043828-phpapp01Rapportpfanidbelkacem 140305043828-phpapp01
Rapportpfanidbelkacem 140305043828-phpapp01
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 
raspberry pi
 raspberry pi raspberry pi
raspberry pi
 
Projet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleProjet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitale
 
Correction Examen 2014-2015 RDM
Correction Examen 2014-2015 RDMCorrection Examen 2014-2015 RDM
Correction Examen 2014-2015 RDM
 
Hardware Hacking for JavaScript Engineers
Hardware Hacking for JavaScript EngineersHardware Hacking for JavaScript Engineers
Hardware Hacking for JavaScript Engineers
 
Cours CyberSécurité - Concepts Clés
Cours CyberSécurité - Concepts ClésCours CyberSécurité - Concepts Clés
Cours CyberSécurité - Concepts Clés
 
Présentation robotique
Présentation robotiquePrésentation robotique
Présentation robotique
 
Correction examen Robotique
Correction examen Robotique Correction examen Robotique
Correction examen Robotique
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apports
 
Conception robot mobile
Conception robot mobile Conception robot mobile
Conception robot mobile
 

Similar a Hacking your Home @bdx.io

BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro frameworkVincent Hubert
 
Kit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYKit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYlaurenthuet
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotiqueMicrosoft
 
Colloque cyber 2010 les botnets
Colloque cyber 2010   les botnetsColloque cyber 2010   les botnets
Colloque cyber 2010 les botnetsmichelcusin
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)Pôle Systematic Paris-Region
 
Développement avec Java Micro Edition
Développement avec Java Micro EditionDéveloppement avec Java Micro Edition
Développement avec Java Micro EditionSylvain Wallez
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++cppfrug
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdfProgrammez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdflaminemhamed
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11Amine Haddanou
 
Introduction à la plateforme arduino (nano, uno, ... )
Introduction à la plateforme arduino (nano, uno, ... )Introduction à la plateforme arduino (nano, uno, ... )
Introduction à la plateforme arduino (nano, uno, ... )Thierry Gayet
 
Projet IPv6 Matrix / Version française intégrale
Projet IPv6 Matrix / Version française intégraleProjet IPv6 Matrix / Version française intégrale
Projet IPv6 Matrix / Version française intégraleOlivier MJ Crépin-Leblond
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur site
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur siteCWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur site
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur siteCapgemini
 

Similar a Hacking your Home @bdx.io (20)

Raspberry Pi: Les utilisations
Raspberry Pi: Les utilisationsRaspberry Pi: Les utilisations
Raspberry Pi: Les utilisations
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
 
Kit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYKit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIY
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Colloque cyber 2010 les botnets
Colloque cyber 2010   les botnetsColloque cyber 2010   les botnets
Colloque cyber 2010 les botnets
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
 
Développement avec Java Micro Edition
Développement avec Java Micro EditionDéveloppement avec Java Micro Edition
Développement avec Java Micro Edition
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdfProgrammez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11
 
Introduction à la plateforme arduino (nano, uno, ... )
Introduction à la plateforme arduino (nano, uno, ... )Introduction à la plateforme arduino (nano, uno, ... )
Introduction à la plateforme arduino (nano, uno, ... )
 
Projet IPv6 Matrix / Version française intégrale
Projet IPv6 Matrix / Version française intégraleProjet IPv6 Matrix / Version française intégrale
Projet IPv6 Matrix / Version française intégrale
 
Qt5 embedded
Qt5 embeddedQt5 embedded
Qt5 embedded
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur site
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur siteCWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur site
CWIN17 Paris/ Field Worker, solution PAN LAN d’aide aux intervenants sur site
 

Hacking your Home @bdx.io

  • 1. Hacking your Home @lhuet35 SOFTEAM Cadextan
  • 2. Qu'allez-vous voir ? • Du « Hacking » • Du Hard • Du Soft • … et quelques idées bonus
  • 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. Please DO NOT TRY this at home
  • 5. PLEASE TRY THIS AT HOME
  • 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. 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. Hacking - Wikipedia “ Les motivations principales du hacker sont « la passion, le jeu, le plaisir, l’échange et le partage » ”
  • 11. « Hacking » station météo Liaison radio (433 / 868 MHz)
  • 12. « Hacking » station météo Liaison radio (433 / 868 MHz)
  • 13. Passer du hard au soft HopeRF RFM12b Bus SPI
  • 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
  • 16. Démo
  • 17. Hard
  • 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. 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. Arduino « pinout » GPIO UART Entrée Analogiques I2C « Power »
  • 21. Multiples « devices » Pression atmosphérique Température Humidité Affichage Texte Affichage graphique & « Touch Screen » Caméra
  • 22. Pilotage « courant fort » Appareils 220 V (Max 10A) 3,3V GPIO GND 5V
  • 23. Soft
  • 24. Arduino IDE Compilation Upload IDE écrit en Java Port série
  • 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. 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. 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. 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. 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(' ') ; } });
  • 31. « Hacking » compteur EDF UART Rien n'est illégal dans ce montage (hacking != illégal) Liaison Téléinfo (Bornier client) Adaptateur « custom »
  • 33. Cablage sur le compteur
  • 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. 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. 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. Application • MongoDB – SAAS – Aggregation framework • Node.js – Express + Liaison Téléinfo • AngularJS https://github.com/lhuet/teleinfo-app
  • 39. Démo
  • 40. Réseau IoT « Low Cost »
  • 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. Cablage Paire Torsadée Résistance Terminale MAX485 « Device »
  • 43. Prototypage Bus RS485 d'environ 15 cm MAX485
  • 44. … avec un fil de 100m
  • 45. Kit IoT Arduino ~ 2 €
  • 47. Chauffage & ECS • Ballon tri-énergie – Chauffage bois – Panneaux solaires – Résistance électrique • A venir – Monitoring des températures & circulateurs – Pilotage résistance
  • 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 "
  • 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/