Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
abusing phones
DAHO.AM
12 June 2015
to make the internet of things
@janjongboom
abusing phones
DAHO.AM
12 June 2015
to make the internet of things
@janjongboom
@janjongboom
Telenor R&D
Mozilla things
I hate
JavaScript!
VBScript
<3 <3 <3
Before mobile revolution…
Limited input methods
Vibration sensor?
Accelerometer?
Accelerometer?
Proximity
Accelerometer
Ambient Light
Magnetometer
Gyroscope
Humidity
Ambient Temperature
Pressure
Battery
Cameras
Bend sensor
Internet of Things
Moves IHR SleepCycle
BORING!
Device Light
Real purpose: adjust brightness
Music
Theremin is instrument
Use device light as tone frequency
Wave your hands and magic!
Music
Theremin is instrument
Use device light as tone frequency
Wave your hands and magic!
1 var context = new AudioContext();
2 var oscillator = context.createOscillator();
3 oscillator.connect(context.destinatio...
Gyroscope
Real purpose: rotate screen
Gyroscope
Real purpose: rotate screen
Track real life movement
Draw 3D model of phones
Measure gyroscope data
Show real life state on screen
Track real life movement
1 var front = new THREE.MeshBasicMaterial({ map: loadTexture('front.jpg') });
2 var back = new TH...
Track real life movement
1 window.addEventListener('deviceorientation', function(e) {
2 cube.rotation.x = e.beta / 60;
3 c...
Accelerometer
Real purpose: Turn to mute
Juggling visualizer
Measure z-forces on device
Plot it in graph over time
Juggle with multiple devices
Juggling visualizer
1 window.addEventListener('devicemotion', function(e) {
2 var serie = getGraphSerieForDevice(e.data.de...
Weight scale
Computer generated
music
http://gibber.mat.ucsb.edu/
1 a = Drums('x*o*x*o-')
Gibber
1 a = Drums('x*o*x*o-')
Gibber
Gibber
1 a = Drums('x*o*x*o-')
2 a.pitch = 0.5
Gibber
1 a = Drums('x*o*x*o-')
2 a.pitch = 0.5
Gibber
1 a = Drums('x*o*x*o-')
2
3 speak = Speak({ pitch: 70, wordgap:5 })
4 .say.seq(
5 ['Mu', 'nich', 'Mu', 'Mu', 'nich'...
Gibber
1 a = Drums('x*o*x*o-')
2
3 speak = Speak({ pitch: 70, wordgap:5 })
4 .say.seq(
5 ['Mu', 'nich', 'Mu', 'Mu', 'nich'...
Gibber
1 a = Drums('x*o*x*o-')
2
3 speak = Speak({ pitch: 70, wordgap:5 })
4 .say.seq(
5 ['Mu', 'nich'],
6 [1/4, 1/4, 1/4,...
Gibber
1 a = Drums('x*o*x*o-')
2
3 speak = Speak({ pitch: 70, wordgap:5 })
4 .say.seq(
5 ['Mu', 'nich'],
6 [1/4, 1/4, 1/4,...
Gibber
1 a = Drums('x*o*x*o-')
2
3 speak = Speak({ pitch: 70, wordgap:5 })
4 .say.seq(
5 ['Mu', 'nich'],
6 [1/4, 1/4, 1/4,...
So much phones!
Gibber
Gibber
1 a = Drums('x*o*x*o-')
2 a.pitch = Phone.X
https://github.com/janjongboom/jsconf-us/blob/master/gibber/gibber-phon...
Gibber
1 a = Drums('x*o*x*o-')
2 a.pitch = Phone.X
https://github.com/janjongboom/jsconf-us/blob/master/gibber/gibber-phon...
Getting data out of the
real world
Bluetooth beacons
Broadcasting their existence
Bluetooth beacons
Long battery life
Cheap
URLs, sensor values, etc.
Coming to a web browser near you
https://bugzilla.mozilla.org/show_bug.cgi?id=1063444
Coming to a web browser near you
https://bugzilla.mozilla.org/show_bug.cgi?id=1063444
Scanning beacons
1 var adapter = navigator.mozBluetooth.defaultAdapter
2 adapter.startLeScan([]).then(handle => {
3 handle...
Scanning beacons
1 var adapter = navigator.mozBluetooth.defaultAdapter
2 adapter.startLeScan([]).then(handle => {
3 handle...
Scanning beacons
1 var adapter = navigator.mozBluetooth.defaultAdapter
2 adapter.startLeScan([]).then(handle => {
3 handle...
Scanning beacons
1 var adapter = navigator.mozBluetooth.defaultAdapter
2 adapter.startLeScan([]).then(handle => {
3 handle...
Scanning beacons
1 var adapter = navigator.mozBluetooth.defaultAdapter
2 adapter.startLeScan([]).then(handle => {
3 handle...
JavaScript baby monitor
Tag your baby with a phone
Get three beacons
Some math
JavaScript baby monitor
Tag your baby with a phone
Get three beacons
Some math
Linux
Kernel
Linux
Kernel
Gecko
Linux
Kernel
Gecko HTML5
UI
Linux
Kernel
Gecko HTML5
UI
Has all phone APIs in JS
Linux
Kernel
Gecko
Has all phone APIs in JS
First screwdriver ever!
Booting / flashing
Linux
Kernel
Gecko
Has all phone APIs in JS
Linux
Kernel
Gecko JanOS
Has all phone APIs in JS
Linux
Kernel
Gecko JanOS
Has all phone APIs in JS
JanOS
Fork of Firefox OS
For phones & Rpi
Runs without display
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
-
-
Get hacking!
Grab a phone that has latest Chrome / Firefox
Use that sensor data
Think outside the box
Or buy a ZTE Open C ...
Thank you!
http://janjongboom.com
janos.io
github.com/janjongboom/(jsconf-asia|jsconf-us)
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
DAHO.AM 2015 - Abusing phones to make the internet of things
Prochain SlideShare
Chargement dans…5
×

DAHO.AM 2015 - Abusing phones to make the internet of things

1 868 vues

Publié le

Presentation I gave June 2015 at DAHO.AM in Munich

Publié dans : Internet
  • Proof Of REAL Growth. Women Lie: Size DOES Matter, They HATE It When It's Small. Don't Disapoint Her With Your Little Guy. ★★★ https://tinyurl.com/yaygh4xh
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Is Your EX Still Secretly In Love With You? Make him beg you to take him back. click here now... ●●● http://tinyurl.com/y4b2om2w
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • How to use "The Scrambler" ot get a girl obsessed with BANGING you... ■■■ https://tinyurl.com/unlockherlegss
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

DAHO.AM 2015 - Abusing phones to make the internet of things

  1. 1. abusing phones DAHO.AM 12 June 2015 to make the internet of things @janjongboom
  2. 2. abusing phones DAHO.AM 12 June 2015 to make the internet of things @janjongboom
  3. 3. @janjongboom Telenor R&D Mozilla things
  4. 4. I hate JavaScript!
  5. 5. VBScript <3 <3 <3
  6. 6. Before mobile revolution… Limited input methods
  7. 7. Vibration sensor?
  8. 8. Accelerometer?
  9. 9. Accelerometer?
  10. 10. Proximity Accelerometer Ambient Light Magnetometer Gyroscope Humidity Ambient Temperature Pressure Battery Cameras
  11. 11. Bend sensor
  12. 12. Internet of Things
  13. 13. Moves IHR SleepCycle
  14. 14. BORING!
  15. 15. Device Light Real purpose: adjust brightness
  16. 16. Music Theremin is instrument Use device light as tone frequency Wave your hands and magic!
  17. 17. Music Theremin is instrument Use device light as tone frequency Wave your hands and magic!
  18. 18. 1 var context = new AudioContext(); 2 var oscillator = context.createOscillator(); 3 oscillator.connect(context.destination); 4 oscillator.start(0); 5 6 window.addEventListener('devicelight', function(e) { 7 oscillator.frequency.value = e.value * 10; 8 }); Music
  19. 19. Gyroscope Real purpose: rotate screen
  20. 20. Gyroscope Real purpose: rotate screen
  21. 21. Track real life movement Draw 3D model of phones Measure gyroscope data Show real life state on screen
  22. 22. Track real life movement 1 var front = new THREE.MeshBasicMaterial({ map: loadTexture('front.jpg') }); 2 var back = new THREE.MeshBasicMaterial({ map: loadTexture('back.jpg') }); 3 var border = new THREE.MeshBasicMaterial({ color: 0xffe04526 }); 4 5 var materials = [ border, border, border, 6 border, front, back ]; 7 8 var geometry = new THREE.BoxGeometry(2, 4, 0.3); 9 var cube = new THREE.Mesh(geometry, 10 new THREE.MeshFaceMaterial(materials)); 11 scene.add(cube);
  23. 23. Track real life movement 1 window.addEventListener('deviceorientation', function(e) { 2 cube.rotation.x = e.beta / 60; 3 cube.rotation.y = e.gamma / 60; 4 cube.rotation.z = e.alpha / 60; 5 });
  24. 24. Accelerometer Real purpose: Turn to mute
  25. 25. Juggling visualizer Measure z-forces on device Plot it in graph over time Juggle with multiple devices
  26. 26. Juggling visualizer 1 window.addEventListener('devicemotion', function(e) { 2 var serie = getGraphSerieForDevice(e.data.deviceId); 3 serie.addPoint([ e.data.timestamp, Math.abs(e.data.z) ]); 4 });
  27. 27. Weight scale
  28. 28. Computer generated music
  29. 29. http://gibber.mat.ucsb.edu/
  30. 30. 1 a = Drums('x*o*x*o-') Gibber
  31. 31. 1 a = Drums('x*o*x*o-') Gibber
  32. 32. Gibber 1 a = Drums('x*o*x*o-') 2 a.pitch = 0.5
  33. 33. Gibber 1 a = Drums('x*o*x*o-') 2 a.pitch = 0.5
  34. 34. Gibber 1 a = Drums('x*o*x*o-') 2 3 speak = Speak({ pitch: 70, wordgap:5 }) 4 .say.seq( 5 ['Mu', 'nich', 'Mu', 'Mu', 'nich'], 6 [1/2, 1/2, 1/4, 1/4, 1/2] 7 ) 8 9 speak.pitch.seq( [1,.8,1.2].rnd() ) 10 Clock.bpm = 120;
  35. 35. Gibber 1 a = Drums('x*o*x*o-') 2 3 speak = Speak({ pitch: 70, wordgap:5 }) 4 .say.seq( 5 ['Mu', 'nich', 'Mu', 'Mu', 'nich'], 6 [1/2, 1/2, 1/4, 1/4, 1/2] 7 ) 8 9 speak.pitch.seq( [1,.8,1.2].rnd() ) 10 Clock.bpm = 120;
  36. 36. Gibber 1 a = Drums('x*o*x*o-') 2 3 speak = Speak({ pitch: 70, wordgap:5 }) 4 .say.seq( 5 ['Mu', 'nich'], 6 [1/4, 1/4, 1/4, 1/2].rnd() 7 ) 8 9 speak.pitch.seq( [1,.8,1.2].rnd() ) 10 Clock.bpm = 120;
  37. 37. Gibber 1 a = Drums('x*o*x*o-') 2 3 speak = Speak({ pitch: 70, wordgap:5 }) 4 .say.seq( 5 ['Mu', 'nich'], 6 [1/4, 1/4, 1/4, 1/2].rnd() 7 ) 8 9 speak.pitch.seq( [1,.8,1.2].rnd() ) 10 Clock.bpm = 120;
  38. 38. Gibber 1 a = Drums('x*o*x*o-') 2 3 speak = Speak({ pitch: 70, wordgap:5 }) 4 .say.seq( 5 ['Mu', 'nich'], 6 [1/4, 1/4, 1/4, 1/2].rnd() 7 ) 8 9 speak.pitch.seq( [1,.8,1.2].rnd() ) 10 Clock.bpm = 120;
  39. 39. So much phones!
  40. 40. Gibber
  41. 41. Gibber 1 a = Drums('x*o*x*o-') 2 a.pitch = Phone.X https://github.com/janjongboom/jsconf-us/blob/master/gibber/gibber-phone.js
  42. 42. Gibber 1 a = Drums('x*o*x*o-') 2 a.pitch = Phone.X https://github.com/janjongboom/jsconf-us/blob/master/gibber/gibber-phone.js
  43. 43. Getting data out of the real world
  44. 44. Bluetooth beacons Broadcasting their existence
  45. 45. Bluetooth beacons Long battery life Cheap URLs, sensor values, etc.
  46. 46. Coming to a web browser near you https://bugzilla.mozilla.org/show_bug.cgi?id=1063444
  47. 47. Coming to a web browser near you https://bugzilla.mozilla.org/show_bug.cgi?id=1063444
  48. 48. Scanning beacons 1 var adapter = navigator.mozBluetooth.defaultAdapter 2 adapter.startLeScan([]).then(handle => { 3 handle.ondevicefound = e => { 4 // handle e.scanRecord 5 } 6 7 setTimeout(() => { 8 adapter.stopLeScan(handle) 9 }, 5000) 10 }, err => console.error(err))
  49. 49. Scanning beacons 1 var adapter = navigator.mozBluetooth.defaultAdapter 2 adapter.startLeScan([]).then(handle => { 3 handle.ondevicefound = e => { 4 // handle e.scanRecord 5 } 6 7 setTimeout(() => { 8 adapter.stopLeScan(handle) 9 }, 5000) 10 }, err => console.error(err))
  50. 50. Scanning beacons 1 var adapter = navigator.mozBluetooth.defaultAdapter 2 adapter.startLeScan([]).then(handle => { 3 handle.ondevicefound = e => { 4 // handle e.scanRecord 5 } 6 7 setTimeout(() => { 8 adapter.stopLeScan(handle) 9 }, 5000) 10 }, err => console.error(err))
  51. 51. Scanning beacons 1 var adapter = navigator.mozBluetooth.defaultAdapter 2 adapter.startLeScan([]).then(handle => { 3 handle.ondevicefound = e => { 4 // handle e.scanRecord 5 } 6 7 setTimeout(() => { 8 adapter.stopLeScan(handle) 9 }, 5000) 10 }, err => console.error(err))
  52. 52. Scanning beacons 1 var adapter = navigator.mozBluetooth.defaultAdapter 2 adapter.startLeScan([]).then(handle => { 3 handle.ondevicefound = e => { 4 // handle e.scanRecord 5 } 6 7 setTimeout(() => { 8 adapter.stopLeScan(handle) 9 }, 5000) 10 }, err => console.error(err))
  53. 53. JavaScript baby monitor Tag your baby with a phone Get three beacons Some math
  54. 54. JavaScript baby monitor Tag your baby with a phone Get three beacons Some math
  55. 55. Linux Kernel
  56. 56. Linux Kernel Gecko
  57. 57. Linux Kernel Gecko HTML5 UI
  58. 58. Linux Kernel Gecko HTML5 UI Has all phone APIs in JS
  59. 59. Linux Kernel Gecko Has all phone APIs in JS
  60. 60. First screwdriver ever!
  61. 61. Booting / flashing
  62. 62. Linux Kernel Gecko Has all phone APIs in JS
  63. 63. Linux Kernel Gecko JanOS Has all phone APIs in JS
  64. 64. Linux Kernel Gecko JanOS Has all phone APIs in JS
  65. 65. JanOS Fork of Firefox OS For phones & Rpi Runs without display
  66. 66. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  67. 67. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  68. 68. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  69. 69. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  70. 70. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  71. 71. -
  72. 72. -
  73. 73. Get hacking! Grab a phone that has latest Chrome / Firefox Use that sensor data Think outside the box Or buy a ZTE Open C for 60 euro's and break it!
  74. 74. Thank you! http://janjongboom.com janos.io github.com/janjongboom/(jsconf-asia|jsconf-us)

×