SlideShare a Scribd company logo
1 of 20
Download to read offline
Samsung Open Source Group 1 https://social.samsunginter.net/@rzr #LavalVirtual2019
WoTxR:
From Web of Things to XR
using Free Libre Open Source Software
Philippe Coval
Samsung Open Source Group / SRUK
mailto:p.coval@samsung.com
The 21st international Exhibition and Conference
https://is.gd/webxr #LavalVirtual2019, Laval, France <2019-03-20>
Samsung Open Source Group 2 https://social.samsunginter.net/@rzr #LavalVirtual2019
$ who is Philippe Coval
●
Software engineer for Samsung OSG
– Belongs to SRUK team, based in Rennes, France
– Interest: Web of Things with “Privacy by Design”
●
Not an XR expert but past 3D experiences*:
– Studied 3D at University (Toulouse, 2000), more VR/AR at INRIA, Orange
– Diet3D, OpenGL, VRML/EAI, ARToolkitPlus…
●
In 2019 at FOSDEM, met famous XR expert Fabien Benetou:
– And we hacked WoTxR PoC: bridge between WoT+XR (check @MozHacks)
●
Ping me online: https://social.samsunginter.net/@rzr
Samsung Open Source Group 3 https://social.samsunginter.net/@rzr #LavalVirtual2019
WoTxR: Realtime webthings + XR twins
https://youtu.be/s3r8pQtzhAU#wotxr-20190320rzr
Samsung Open Source Group 4 https://social.samsunginter.net/@rzr #LavalVirtual2019
Javascript the language of Web (of Things)
●
IoT.js an alternative runtime inspired by Node.js:
– Powered by JerryScript engine designed for micro-controllers
– Base features: IO (I2C, GPIO...), Network (HTTP/S, MQTT, WS) …
●
Modules: mastodon-lite, generic-sensors-lite
– Supporting: RT, GNU/Linux ...
●
WebThings can be build using webthing-iotjs module:
– Standalone HTTP servers exposing Mozilla Things API:
●
RESTful architecture: read, update operations
– Can be connected to MozIoT “PrivacyByDesign” gateway
– Or queried from the browser in SVG, HTML or 3D !
Samsung Open Source Group 5 https://social.samsunginter.net/@rzr #LavalVirtual2019
Run a “color sensor WebThing” with IoT.js
●
Install IoT.js for WebThing-IotJs (GNU/Linux, TizenRT, WLS...)
– https://github.com/rzr/webthing-iotjs/wiki/IotJs
●
git clone https://github.com/samsunginternet/color-sensor-js
– cd color-sensor-js
– iotjs lib/tcs34725.js # => log: value=[7779,36778,11173,42766]
– make -C example/color-sensor-webthing start
– curl http://localhost:8888/properties/ # => {"color": "#af0695"}
●
Or run webthing in the cloud:
– https://color-sensor-webthing.glitch.me
Samsung Open Source Group 6 https://social.samsunginter.net/@rzr #LavalVirtual2019
●
function ColorProperty(thing) {
webthing.Property.call(this, thing, 'color',
new webthing.Value(‘#000000’),
{ '@type': 'colorProperty', type: 'string',
readOnly: true });
}
//…
●
var thing = new webthing.Thing
(‘ColorSensor’[‘ColorControl’]);
●
thing.addProperty(new ColorProperty(thing));
//…
●
server.start();
Implementing WebThings
$ curl http://localhost:8888
{ ...
"properties":{"color": ...
"links":[
{"rel":"property",
"href":"/properties/color"
…
Samsung Open Source Group 7 https://social.samsunginter.net/@rzr #LavalVirtual2019
Sensor updating webthing
var ColorSensor = require("color-sensor-js/example");
function ColorProperty(thing) {
var that = this;
Webthing.Property.call(..., "color", new webthing.Value...
this.sensor = new ColorSensor();
this.sensor.onreading = function() {
that.value.notifyOfExternalUpdate(self.sensor.color);
};
this.sensor.start();
}
$ curl http://localhost:8888/properties # => {"color": "#af0695"}
Samsung Open Source Group 8 https://social.samsunginter.net/@rzr #LavalVirtual2019
Immersive Web
●
Not new idea:
– VRML97 plugins controlled by Java applets (EAI, RMI...)
●
But a successful evolution:
– HTML5, WebGL, Three.js, WebVR, OpenVR, WebXR, OpenXR...
●
A-Frame: Free and Libre opensource framework
– Originally from Mozilla, HTML for VR, Uses Web components
– Support: VR headsets, GearVR, GearVR2017 (with controller)
●
Using most workbrowsers: SamungInternet (svrbrowser), Firefox or chromium based...
●
Exokit: Native VR/AR/XR engine for JavaScript (WebGL)
Samsung Open Source Group 9 https://social.samsunginter.net/@rzr #LavalVirtual2019
A-Frame’s scene in DOM
●
<script src="https://aframe.io/releases/0.9.0/aframe.min.js">
</script>
●
<a-scene>
●
<a-sphere id="color" color="#FF0000" position="0 0 -5">
</a-sphere>
●
<a-cylinder id="base" color="#777"
radius=".6" position="0 -1 -5">
</a-cylinder>
●
</a-scene>
Samsung Open Source Group 10 https://social.samsunginter.net/@rzr #LavalVirtual2019
DOM manipulation from Javascript
<script>
setTimeout(function(){
var el = document.getElementById("color");
el.setAttribute("color", "#00FF00");
}, 1000);
</script>
●
<script src="https://aframe.io/releases/0.9.0/aframe.min.js">
</script>
●
<a-scene>
●
<a-sphere id="color" color="#FF0000" position="0 0 -5">
</a-sphere>
●
<a-cylinder ...
●
</a-scene>
Samsung Open Source Group 11 https://social.samsunginter.net/@rzr #LavalVirtual2019
●
// TODO: Update with your webthing IP in LAN : eg: http://localhost:8888
●
const url = "https://samsunginternet-color-sensor-js.glitch.me";
const name = "color";
●
const el = document.getElementById(name); // The light bulb’s sphere
fetch(url)
.then(function(response) { return response.json(); })
.then(function(json) { el.setAttribute(name, json[name]); });
●
// Challenge: use PUT to update properties of actuators’
Updating device property to his 3D twin
Samsung Open Source Group 12 https://social.samsunginter.net/@rzr #LavalVirtual2019
Let’s boot digital worlds on the web of thing
●
Build more webthings using your favorite language
●
Install Mozilla gateway in your home network
●
Connect your webthings to gateway
– Control them using the progressive web app
●
Try the alternate Progressive Web App to browse them in XR:
– http://github.com/samsunginternet/webthings-webapp
●
More to come:
– https://github.com/rzr/webthing-iotjs/wiki/XR
Samsung Open Source Group 13 https://social.samsunginter.net/@rzr #LavalVirtual2019
References
●
https://github.com/rzr/webthing-iotjs/wiki/
– https://github.com/rzr/webthing-iotjs/wiki/Sensor
●
https://github.com/SamsungInternet/color-sensor-js
●
https://github.com/rzr/webthing-iotjs/wiki/XR
– https://github.com/tizenteam/aframe-ui-widgets/pull/17#
●
https://hacks.mozilla.org/2019/03/connecting-real-things-to-virtual-worlds-using-web/
●
https://hub.samsunginter.net/
– https://github.com/immersive-web/webvr-polyfill
●
https://aframe.io/
●
https://iot.mozilla.org/
●
https://monado.dev/
●
https://www.khronos.org/openxr
●
https://github.com/webmixedreality/exokit
●
https://www.laval-virtual.com/schedule-2019/
14 https://social.samsunginter.net/@rzrSamsung Open Source Group 2019
Q&A ?
(or Extras?)
Ask now or online:
https://social.samsunginter.net/@rzr
Samsung Open Source Group 15 https://social.samsunginter.net/@rzr #LavalVirtual2019
Controlling real data & consuming OpenData
https://youtu.be/OT0Ahuy3Cv4#webthing-iotjs-opendata-20190202rzr
16 https://social.samsunginter.net/@rzrSamsung Open Source Group 2019
Demo: IoT gateway, ESP MCU, WebApp
https://youtu.be/vzoUJ-v5h38#webthing-esp8266-webapp-20180602rzr
●
●
https://vimeo.com/273037442
●
webthing-esp8266-webapp-20180602rzr
●
https://youtu.be/vzoUJ-v5h38
●
https://vimeo.com/user12599872/
●
webthing-esp8266-webapp-20180602rzr
Samsung Open Source Group 17 https://social.samsunginter.net/@rzr #LavalVirtual2019
WebThings-WebApp: Tizen or PWA (sbrowser)
https://youtu.be/S_mHYu5-iYM#webthing-webapp-pwa-20180629rzr
https://youtu.be/S
_mHYu5-iYM#we
bthing-webapp-p
wa-20180629rzr
Samsung Open Source Group 18 https://social.samsunginter.net/@rzr #LavalVirtual2019
*3D for the Web: Lessons from the past
●
Several attempts before WebGL (2011)
●
Y2K: Java applets ?
– Software rendering
●
No OpenGL
●
Just Triangles, Lines or pixels: performance impact
– Portable?
●
Applet plugins weren’t opensource first
– Until, gcj, OpenJDK
●
All failed in integration into browsers
– Bad performance
– Security policies ?
●
Same “death” as shockwave/adobe flash
●
In 2019 we can assume that JS won
Samsung Open Source Group 19 https://social.samsunginter.net/@rzr #LavalVirtual2019
Dynamic 3D scenes
●
VRML97 and VRML2
– Various VRML plugins
– Scene graph
– Descriptive script (like PoV-ray)
– OpenGL support
●
HW acceleration
– Most were closed sources
●
Except openvrml
– Superseded by Web3D (XML)
●
Still Java applets for
– Manipulating scene graph
– Javascript eventually
Samsung Open Source Group 20 https://social.samsunginter.net/@rzr #LavalVirtual2019
Real time connectivity
●
Before REST (2000)
– and WebSockets (2011)
●
Java RMI vs AJAX
– Security policies
– Custom ports
– Proxy blockers?
●
Sensors (before W3C G-sensors)
– Costly
– Closed source
●
Drivers
●
Middlewares
●
Second life was native

More Related Content

Similar to wotxr-20190320rzr

webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrPhil www.rzr.online.fr
 
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)Pronounced S-pro-ut-Co-re (Introduction to SproutCore)
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)Julio Javier Cicchelli
 
Use open source software to develop ideas at work
Use open source software to develop ideas at workUse open source software to develop ideas at work
Use open source software to develop ideas at workSammy Fung
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentJustin James
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfFarHanWasif1
 
Engineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) DevelopmentEngineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) DevelopmentLiving Online
 
For a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalFor a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalAdyax
 
Automated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceAutomated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceDani Llewellyn
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilitySamsung Open Source Group
 
Siruna session at Drupalcon Paris 2009
Siruna session at Drupalcon Paris 2009Siruna session at Drupalcon Paris 2009
Siruna session at Drupalcon Paris 2009Tom Deryckere
 
Drupalcamp New York 2009
Drupalcamp New York 2009Drupalcamp New York 2009
Drupalcamp New York 2009Tom Deryckere
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019PhuocNT (Fresher.VN)
 
Mobile & android apps presentation
Mobile & android apps  presentationMobile & android apps  presentation
Mobile & android apps presentationAya Taleb
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do ThatNathan Smith
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGuillaume Laforge
 

Similar to wotxr-20190320rzr (20)

webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
 
webthing-iotjs-20181027rzr
webthing-iotjs-20181027rzrwebthing-iotjs-20181027rzr
webthing-iotjs-20181027rzr
 
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)Pronounced S-pro-ut-Co-re (Introduction to SproutCore)
Pronounced S-pro-ut-Co-re (Introduction to SproutCore)
 
Use open source software to develop ideas at work
Use open source software to develop ideas at workUse open source software to develop ideas at work
Use open source software to develop ideas at work
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application Development
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
IoT-javascript-2019-fosdem
IoT-javascript-2019-fosdemIoT-javascript-2019-fosdem
IoT-javascript-2019-fosdem
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
Engineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) DevelopmentEngineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) Development
 
For a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalFor a Social Local and Mobile Drupal
For a Social Local and Mobile Drupal
 
Automated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceAutomated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build Service
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
Siruna session at Drupalcon Paris 2009
Siruna session at Drupalcon Paris 2009Siruna session at Drupalcon Paris 2009
Siruna session at Drupalcon Paris 2009
 
Drupalcamp New York 2009
Drupalcamp New York 2009Drupalcamp New York 2009
Drupalcamp New York 2009
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
 
Mobile & android apps presentation
Mobile & android apps  presentationMobile & android apps  presentation
Mobile & android apps presentation
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 

More from Phil www.rzr.online.fr

FOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devicesFOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devicesPhil www.rzr.online.fr
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Phil www.rzr.online.fr
 

More from Phil www.rzr.online.fr (18)

Iot privacy-soscon-2019
Iot privacy-soscon-2019Iot privacy-soscon-2019
Iot privacy-soscon-2019
 
up-down-stream-flows-20190411rzr
up-down-stream-flows-20190411rzrup-down-stream-flows-20190411rzr
up-down-stream-flows-20190411rzr
 
mozilla-things-fosdem-2019
mozilla-things-fosdem-2019mozilla-things-fosdem-2019
mozilla-things-fosdem-2019
 
tizen-rt-javascript-20181011
tizen-rt-javascript-20181011tizen-rt-javascript-20181011
tizen-rt-javascript-20181011
 
osvehicle-connected-20160429
osvehicle-connected-20160429osvehicle-connected-20160429
osvehicle-connected-20160429
 
tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916
 
tizen-maintain-20150413rzr
tizen-maintain-20150413rzrtizen-maintain-20150413rzr
tizen-maintain-20150413rzr
 
Iotivity atmel-20150328rzr
Iotivity atmel-20150328rzrIotivity atmel-20150328rzr
Iotivity atmel-20150328rzr
 
Tizen store-z1-20150228rzr
Tizen store-z1-20150228rzrTizen store-z1-20150228rzr
Tizen store-z1-20150228rzr
 
Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015
 
FOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devicesFOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devices
 
tizen-oshw-tds14sh
tizen-oshw-tds14shtizen-oshw-tds14sh
tizen-oshw-tds14sh
 
Tizen platform-dev-tds14sh
Tizen platform-dev-tds14shTizen platform-dev-tds14sh
Tizen platform-dev-tds14sh
 
Tdc2014 tizen common_20140603
Tdc2014 tizen common_20140603Tdc2014 tizen common_20140603
Tdc2014 tizen common_20140603
 
tizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcovaltizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcoval
 
Tizen contrib-fosdem-20140201
Tizen contrib-fosdem-20140201Tizen contrib-fosdem-20140201
Tizen contrib-fosdem-20140201
 
Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529
 

Recently uploaded

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesSanjay Willie
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Fact vs. Fiction: Autodetecting Hallucinations in LLMs
Fact vs. Fiction: Autodetecting Hallucinations in LLMsFact vs. Fiction: Autodetecting Hallucinations in LLMs
Fact vs. Fiction: Autodetecting Hallucinations in LLMsZilliz
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Fact vs. Fiction: Autodetecting Hallucinations in LLMs
Fact vs. Fiction: Autodetecting Hallucinations in LLMsFact vs. Fiction: Autodetecting Hallucinations in LLMs
Fact vs. Fiction: Autodetecting Hallucinations in LLMs
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

wotxr-20190320rzr

  • 1. Samsung Open Source Group 1 https://social.samsunginter.net/@rzr #LavalVirtual2019 WoTxR: From Web of Things to XR using Free Libre Open Source Software Philippe Coval Samsung Open Source Group / SRUK mailto:p.coval@samsung.com The 21st international Exhibition and Conference https://is.gd/webxr #LavalVirtual2019, Laval, France <2019-03-20>
  • 2. Samsung Open Source Group 2 https://social.samsunginter.net/@rzr #LavalVirtual2019 $ who is Philippe Coval ● Software engineer for Samsung OSG – Belongs to SRUK team, based in Rennes, France – Interest: Web of Things with “Privacy by Design” ● Not an XR expert but past 3D experiences*: – Studied 3D at University (Toulouse, 2000), more VR/AR at INRIA, Orange – Diet3D, OpenGL, VRML/EAI, ARToolkitPlus… ● In 2019 at FOSDEM, met famous XR expert Fabien Benetou: – And we hacked WoTxR PoC: bridge between WoT+XR (check @MozHacks) ● Ping me online: https://social.samsunginter.net/@rzr
  • 3. Samsung Open Source Group 3 https://social.samsunginter.net/@rzr #LavalVirtual2019 WoTxR: Realtime webthings + XR twins https://youtu.be/s3r8pQtzhAU#wotxr-20190320rzr
  • 4. Samsung Open Source Group 4 https://social.samsunginter.net/@rzr #LavalVirtual2019 Javascript the language of Web (of Things) ● IoT.js an alternative runtime inspired by Node.js: – Powered by JerryScript engine designed for micro-controllers – Base features: IO (I2C, GPIO...), Network (HTTP/S, MQTT, WS) … ● Modules: mastodon-lite, generic-sensors-lite – Supporting: RT, GNU/Linux ... ● WebThings can be build using webthing-iotjs module: – Standalone HTTP servers exposing Mozilla Things API: ● RESTful architecture: read, update operations – Can be connected to MozIoT “PrivacyByDesign” gateway – Or queried from the browser in SVG, HTML or 3D !
  • 5. Samsung Open Source Group 5 https://social.samsunginter.net/@rzr #LavalVirtual2019 Run a “color sensor WebThing” with IoT.js ● Install IoT.js for WebThing-IotJs (GNU/Linux, TizenRT, WLS...) – https://github.com/rzr/webthing-iotjs/wiki/IotJs ● git clone https://github.com/samsunginternet/color-sensor-js – cd color-sensor-js – iotjs lib/tcs34725.js # => log: value=[7779,36778,11173,42766] – make -C example/color-sensor-webthing start – curl http://localhost:8888/properties/ # => {"color": "#af0695"} ● Or run webthing in the cloud: – https://color-sensor-webthing.glitch.me
  • 6. Samsung Open Source Group 6 https://social.samsunginter.net/@rzr #LavalVirtual2019 ● function ColorProperty(thing) { webthing.Property.call(this, thing, 'color', new webthing.Value(‘#000000’), { '@type': 'colorProperty', type: 'string', readOnly: true }); } //… ● var thing = new webthing.Thing (‘ColorSensor’[‘ColorControl’]); ● thing.addProperty(new ColorProperty(thing)); //… ● server.start(); Implementing WebThings $ curl http://localhost:8888 { ... "properties":{"color": ... "links":[ {"rel":"property", "href":"/properties/color" …
  • 7. Samsung Open Source Group 7 https://social.samsunginter.net/@rzr #LavalVirtual2019 Sensor updating webthing var ColorSensor = require("color-sensor-js/example"); function ColorProperty(thing) { var that = this; Webthing.Property.call(..., "color", new webthing.Value... this.sensor = new ColorSensor(); this.sensor.onreading = function() { that.value.notifyOfExternalUpdate(self.sensor.color); }; this.sensor.start(); } $ curl http://localhost:8888/properties # => {"color": "#af0695"}
  • 8. Samsung Open Source Group 8 https://social.samsunginter.net/@rzr #LavalVirtual2019 Immersive Web ● Not new idea: – VRML97 plugins controlled by Java applets (EAI, RMI...) ● But a successful evolution: – HTML5, WebGL, Three.js, WebVR, OpenVR, WebXR, OpenXR... ● A-Frame: Free and Libre opensource framework – Originally from Mozilla, HTML for VR, Uses Web components – Support: VR headsets, GearVR, GearVR2017 (with controller) ● Using most workbrowsers: SamungInternet (svrbrowser), Firefox or chromium based... ● Exokit: Native VR/AR/XR engine for JavaScript (WebGL)
  • 9. Samsung Open Source Group 9 https://social.samsunginter.net/@rzr #LavalVirtual2019 A-Frame’s scene in DOM ● <script src="https://aframe.io/releases/0.9.0/aframe.min.js"> </script> ● <a-scene> ● <a-sphere id="color" color="#FF0000" position="0 0 -5"> </a-sphere> ● <a-cylinder id="base" color="#777" radius=".6" position="0 -1 -5"> </a-cylinder> ● </a-scene>
  • 10. Samsung Open Source Group 10 https://social.samsunginter.net/@rzr #LavalVirtual2019 DOM manipulation from Javascript <script> setTimeout(function(){ var el = document.getElementById("color"); el.setAttribute("color", "#00FF00"); }, 1000); </script> ● <script src="https://aframe.io/releases/0.9.0/aframe.min.js"> </script> ● <a-scene> ● <a-sphere id="color" color="#FF0000" position="0 0 -5"> </a-sphere> ● <a-cylinder ... ● </a-scene>
  • 11. Samsung Open Source Group 11 https://social.samsunginter.net/@rzr #LavalVirtual2019 ● // TODO: Update with your webthing IP in LAN : eg: http://localhost:8888 ● const url = "https://samsunginternet-color-sensor-js.glitch.me"; const name = "color"; ● const el = document.getElementById(name); // The light bulb’s sphere fetch(url) .then(function(response) { return response.json(); }) .then(function(json) { el.setAttribute(name, json[name]); }); ● // Challenge: use PUT to update properties of actuators’ Updating device property to his 3D twin
  • 12. Samsung Open Source Group 12 https://social.samsunginter.net/@rzr #LavalVirtual2019 Let’s boot digital worlds on the web of thing ● Build more webthings using your favorite language ● Install Mozilla gateway in your home network ● Connect your webthings to gateway – Control them using the progressive web app ● Try the alternate Progressive Web App to browse them in XR: – http://github.com/samsunginternet/webthings-webapp ● More to come: – https://github.com/rzr/webthing-iotjs/wiki/XR
  • 13. Samsung Open Source Group 13 https://social.samsunginter.net/@rzr #LavalVirtual2019 References ● https://github.com/rzr/webthing-iotjs/wiki/ – https://github.com/rzr/webthing-iotjs/wiki/Sensor ● https://github.com/SamsungInternet/color-sensor-js ● https://github.com/rzr/webthing-iotjs/wiki/XR – https://github.com/tizenteam/aframe-ui-widgets/pull/17# ● https://hacks.mozilla.org/2019/03/connecting-real-things-to-virtual-worlds-using-web/ ● https://hub.samsunginter.net/ – https://github.com/immersive-web/webvr-polyfill ● https://aframe.io/ ● https://iot.mozilla.org/ ● https://monado.dev/ ● https://www.khronos.org/openxr ● https://github.com/webmixedreality/exokit ● https://www.laval-virtual.com/schedule-2019/
  • 14. 14 https://social.samsunginter.net/@rzrSamsung Open Source Group 2019 Q&A ? (or Extras?) Ask now or online: https://social.samsunginter.net/@rzr
  • 15. Samsung Open Source Group 15 https://social.samsunginter.net/@rzr #LavalVirtual2019 Controlling real data & consuming OpenData https://youtu.be/OT0Ahuy3Cv4#webthing-iotjs-opendata-20190202rzr
  • 16. 16 https://social.samsunginter.net/@rzrSamsung Open Source Group 2019 Demo: IoT gateway, ESP MCU, WebApp https://youtu.be/vzoUJ-v5h38#webthing-esp8266-webapp-20180602rzr ● ● https://vimeo.com/273037442 ● webthing-esp8266-webapp-20180602rzr ● https://youtu.be/vzoUJ-v5h38 ● https://vimeo.com/user12599872/ ● webthing-esp8266-webapp-20180602rzr
  • 17. Samsung Open Source Group 17 https://social.samsunginter.net/@rzr #LavalVirtual2019 WebThings-WebApp: Tizen or PWA (sbrowser) https://youtu.be/S_mHYu5-iYM#webthing-webapp-pwa-20180629rzr https://youtu.be/S _mHYu5-iYM#we bthing-webapp-p wa-20180629rzr
  • 18. Samsung Open Source Group 18 https://social.samsunginter.net/@rzr #LavalVirtual2019 *3D for the Web: Lessons from the past ● Several attempts before WebGL (2011) ● Y2K: Java applets ? – Software rendering ● No OpenGL ● Just Triangles, Lines or pixels: performance impact – Portable? ● Applet plugins weren’t opensource first – Until, gcj, OpenJDK ● All failed in integration into browsers – Bad performance – Security policies ? ● Same “death” as shockwave/adobe flash ● In 2019 we can assume that JS won
  • 19. Samsung Open Source Group 19 https://social.samsunginter.net/@rzr #LavalVirtual2019 Dynamic 3D scenes ● VRML97 and VRML2 – Various VRML plugins – Scene graph – Descriptive script (like PoV-ray) – OpenGL support ● HW acceleration – Most were closed sources ● Except openvrml – Superseded by Web3D (XML) ● Still Java applets for – Manipulating scene graph – Javascript eventually
  • 20. Samsung Open Source Group 20 https://social.samsunginter.net/@rzr #LavalVirtual2019 Real time connectivity ● Before REST (2000) – and WebSockets (2011) ● Java RMI vs AJAX – Security policies – Custom ports – Proxy blockers? ● Sensors (before W3C G-sensors) – Costly – Closed source ● Drivers ● Middlewares ● Second life was native