Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

webthing-iotjs-tizenrt-cdl2018-20181117rzr

3,626 views

Published on

https://social.samsunginter.net/web/statuses/101091908485239453# #Cdl2018 : #WebThing using #WebThingIotJs on #TizenRT on #ARTIK05x connected to @MozillaIot featuring @The_Jst #JerryScript + #IotJs , video to be published by @CapitoleDuLibre

webthing-iotjs-tizenrt-cdl2018-20181117rzr

Published in: Technology
  • Be the first to comment

  • Be the first to like this

webthing-iotjs-tizenrt-cdl2018-20181117rzr

  1. 1. 1 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Webthings Using IoT.js for RT on boards #CDL2018, Capitole du libre ENSEEIHT, Toulouse, France <2018-11-18> Philippe Coval <p.coval@samsung.com> Samsung Open Source Group / SRUK
  2. 2. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 2 Hello world, $who am I ? ● Philippe Coval – Belongs to Samsung Research UK ● in OpenSource group – French ● from Toulouse then Rennes ● Interests: – Libre Soft/Hard/ware communities – Embedded, IoT, Web, DIY… Need help? Ping me online: http://social.samsunginter.net/@rzr
  3. 3. 3 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Agenda ● Context: – IoT status, Privacy matters ! – Motivations for Web of Thing ● Mozilla Webthings framework ● Connecting constrained IoT devices – Easily with JavaScript!
  4. 4. 4 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 IoT status ● The Internet of Things is a system of physical objects – that can be discovered, monitored, controlled, – or interacted with by electronic devices – that communicate over various networking interfaces ● and eventually can be connected to the wider Internet. ● Addresses many domains: – Health, Agriculture, Transport, Cities, Industry ● Critical in many cases: Need to Secure & Privacy Proof
  5. 5. 5 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Privacy is about Trust and Control ● Ownership of personal data – Shared, Transferred, Revoked, Logged, Retrieved and DELETED ● depend on time and context ● Services operators should comply regulations: – EU: General Data Protection Regulation (GDPR 2018) ● Threat to privacy in the IoT is HIGH!!! ● “Privacy by design” opportunities – Prevent data collection in first place→Keep data local if possible ● Limit usage of cloud, apps or “captive models” – New security challenges (Decentralize, reduce surface of attacks)
  6. 6. 6 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Motivations for Open Web Of Things ● Open web platform promises: – Security (isolation in browser) – Enhanced privacy (DNT) ● Security is not same as Privacy ! ● Think decentralized ! – may be harder to secure ● but more resilient – Edge: Computation on nodes ● Web of Things (WoT) – An application layer for IoT – with interoperability – Specification work by – And FLOSS implementations ● Thing ● Node-Wot ● ...
  7. 7. 7 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Project Things by
  8. 8. 8 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Mozilla’s IoT Project Things Overview ● Framework of software/services – for connecting "things" to the web ● Things Model: Semantic to describe things’ properties ● WebThings: provide Http(s) REST API ● Gateway to connect WebThings – Rule engine and nice Web UI (PWA) ● Cloud: Remote access facilities (opt.)
  9. 9. 9 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 W3C WebThing model & Thing Description ● Models complies to W3C schemas served on HTTP – using Javascript, C/C++, Rust, Python, uPython etc… ● Actuator example: RGB Lamp (webthing-ardiuno/example) curl http://esp8266.local [{"name":"Dimmable Color Light", "type":"dimmableColorLight", "href":"/things/dimmable-color-light", "properties":{"on":{"type":"boolean", "href": "/things/dimmable-color-light/properties/on"}, "level":{"type":"number", "href": "/things/dimmable-color-light/properties/level"}, "color":{"type":"string", "href": "/things/dimmable-color-light/properties/color"}} }] Names = endpoints
  10. 10. 10 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Mozilla IoT gateway ● Connects all webthings locally: – IP (WiFi, Eth), BT, Zigbee, Z-Wave... ● Provides progressive web app: – To monitor and control things ● Users management: – Access control using JsonWebToken ● Optional remote control using proxy: – LetsEncrypt certs + PageKite tunnel ● Extensible using add-ons – Adapters for other protocols/ecosystems
  11. 11. 11 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Setup Mozilla IoT gateway ● Reference image for RPi – Dump Raspbian image to SD ● Or rebuild on any GNU/Linux – 0.6.x version uses Node-8 (LTS 2017) – container (node/debian) ● ARTIK710 dev board: – WiFi, Eth, BT, Zigbee, Thread – GPIO, ADC, UART, PWM... – User Buttons and LED ● 710 (+530) can be also supported – With Node-10 (LTS 2018) – Using nvm or https://github.com/rzr/webthing-iotjs/wiki/Gateway
  12. 12. 12 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Sharing flow between owner and user ● Owner setup gateway (connect lamp): – create and allow user(s) to control thing ● User login to GW using OAuth (JWT issued) gateway="https://sosg.mozilla-iot.org" or "gateway.local" thing="things/http---esp8266.local-things-dimmable-color-lamp" property="properties/color" curl "$gateway/$thing/$property" -H "$auth" -H 'Accept: application/json' {"color":"#ffff6f"} ← Or use alternative app: webthings-webapp: Tizen or Android/SamsungInternet (PWA)
  13. 13. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 13 “Simplicity is prerequisite for reliability.” ~Edsger W. Dijkstra
  14. 14. 14 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 IoT Problems and Solutions ● Constrained IoT devices: – Cloud connected ● Privacy issues – Easy to prototype: (Arduino...) – Harder to deploy at scale ● Limited on resources ● Native development – on many RTOS ● Few experts developers ● Technical strategies: – Edge computing ● Data stay on nodes or in LAN – Abstraction with high level API ● Port runtimes not apps code – Portability and standards ● Script languages for MCU – JavaScript, Python, LUA… ● Target existing developers base
  15. 15. 15 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 JavaScript: Language of the Web for IoT ? ● JavaScript is everywhere! ● Many web developers: – So many application developers ● Few embedded developers – To focus more on runtime or app engines: ● For high end & low end (MCU) ● Standardized (ECMA) ● Established communities: – "Any application that can be written in JavaScript, will eventually be written in JavaScript" ~Jeff Atwood Over 837K Modules! (2019-11-15) … But relative quality !
  16. 16. 16 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 IoT.js runtime use JerryScript engine ● Lightweight JavaScript engine – Supports constrained devices ● <64 KB RAM & <200 KB ROM – On-device compilation, exec ● Complies ECMAScript 5.1 std ● FLOSS: Apache-2.0, (C) JSF ● https://JerryScript.net ● IoT.js is JavaScript framework – for Internet of Things ● Features: GPIO, I2C, app protocols... – built on 'JerryScript' – event driven using libtuv ● non-blocking I/O model ● Inspired by Node.js’s runtime – Node is built on V8 interpreter – IoT.js is smaller and faster for MCUs Supporting: GNU/Linux, Tizen, TizenRT, NuttX and more… (Prototype on desktop, deploy to contrained devices)
  17. 17. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 17 A modular architecture for JS IoT apps Hardware
  18. 18. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 18 “The secret of getting ahead is getting started.” ~ Mark Twain
  19. 19. 19 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Installing IoT.js runtime for webthings ● Install from or GNU/Linux – Rebuild from sources ● https://github.com/Samsung/iotjs – Or download snapshot .deb: ● For for (RPi 0+) or ● Write hello world & evaluate it: Hello IoT.js { "env": { //... "IOTJS_ENV": "", "IOTJS_EXTRA_MODULE_PATH":"" }, "builtin_modules": { //... "platform": "linux", (...) } "iotjs": { "board": "" }, "argv": [ "iotjs", "demo.js" ], // (...) } ● cat demo.js console.log(“Hello IoT.js”) console.log(process) ● iotjs demo.js https://github.com/rzr/webthing-iotjs/wiki/IotJs
  20. 20. 20 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 WebThing-IoT.js to power WebThings on IoT.js ● Fork of webthing-node – for IoT.js runtime (On JerryScript) – Transpilation from modern JS ● to ES5.1 (using Babel.js) – Some parts removed: ● mDNS, Websockets ● actions, events… – Continuously rebasing – Supports: ● GNU/Linux, Tizen, TizenRT ● Aligning IoT.js to : – For API, IO drivers, NPM modules: ● GPIO, ADC – Compatible examples: ● SingleBoard Computers’s IO (PHats) ● Sensors (I2C) & Actuators
  21. 21. 21 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Try Webthing-iotjs’s simplest sensor: ● var thing = new Thing('SensorExample', ['MultiLevelSensor']); ● this.level = new Value(0); ● thing.addProperty( new Property(thing, 'level', this.level, {label:'Level', type:'number'} ); ● var server = new WebThingServer (new SingleThing(thing)); ● server.start(); ● (...) ● this.level.notifyOfExternalUpdate(42); ● Show thing’s description: – properties listed as JSON (REST): curl -H 'Content-Type: application/json' http://localhost:8888 {"name":"SensorExample",... "properties":{"level":{"type":"number", ... } ● Get Property on property’s endpoint: curl -H 'Content-Type: application/json' http://localhost:8888/properties/level {"level":42} Name (= endpoint)
  22. 22. 22 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Try Webthing-iotjs’s simplest actuator: ● var thing = new Thing ('ActuatorExample',['OnOffSwitch']; ● thing.addProperty( new Property(thing, 'on', new Value(true, function(data){ console.log(Boolean(data)); }), {label:'On/Off', type:'boolean'} ); ● var server = new WebThingServer (new SingleThing(thing)); ● server.start(); ● Run application from sources: iotjs example/simplest-thing.js [port] ● Set Property value (using HTTP): curl -X PUT -H 'Content-Type: application/json' --data '{"on":false}' http://localhost:8888/properties/on {"on":false}Callback Capabilties
  23. 23. 23 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Real world use cases and more... ● GenericSensorsLite module to build webthings – Based on specification (for browsers) – Abstract I2C Drivers ● using NPM community modules – Cross engine compatible: IoT.js, Node.js (NPM) – High level concepts: AmbientLight, Temperature… – Also supported on gateway as addon adaper – More: https://github.com/rzr/webthing-iotjs/wiki/Sensor ● Link any physical or logical component: – Actuator to be triggered on sensor data using mozilla rule engine – Social Web Example: MastodonActuator https://github.com/rzr/webthing-iotjs/wiki/Social
  24. 24. 24 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 IoT.js modules ● A repository for IoT.js packages (JS): – git clone --recursive https://github.com/samsung/iotjs-modules iotjs_modules – Or clone them individually using git submodules or scripts (GNUmake) ● Add IoT.js support to existing Node.js packages – Transpile to ES5.1 if using modern JS standards (use BabelJs.io) – https://www.npmjs.com/search?q=keywords:iotjs-supported ● Try to align IoT.js ↔Node.js APIs to ensure compatibility: – Prototype on GNU/Linux and then deploy to MCU supporting IoT.js
  25. 25. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 25 “I'm not crazy. My reality is just different from yours.” ~ Lewis Carroll
  26. 26. 26 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 TizenRT extends Tizen ecosystem ● Tizen – Is based on Linux Kernel – Shipped into ● High end consumer electronics – Mobile, TV, Wearables etc – Open to developers ● Native, C/C++ (EFL) ● HTML5 ● DotNet ● TizenRT – Is based on NuttX Kernel ● for constrained devices: – Ie: Cortex M3 (RAM=30KB Flash=512KB) – For low end IoT devices: ● Open APIs (C, JavaScript) ● Connectivity ● Reliability ● Security – Support: ● Qemu, ARTIK05x...
  27. 27. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 27 TizenRT supports 05X ● System on module : 053, 053S (5V DC) or 055S (3.3V DC) ● Dev kits: ARTIK 055S SoM on interposer board: – 32-bit ARM® Cortex® R4 @ 320MHz – R for Real Time and safety critical – S for Secure: SE+TEE, Secure Sub System ● Crypto (Certs, Key, ECDSA, RNG, PUF), Signed boot loader – 1280KB RAM, 8MB Flash, WiFi – IO: GPIO*29, ADC*4, PWM*5, UART*4 (2-pin), SPI*2, I2C*2, I2S – RTC, JTAG (lock), Arduino header, Extra sensor boards
  28. 28. 28 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Integrate WebThing-iotjs app to TizenRT ● Use my helper scripts (GNU/Linux) – make demo: build, deploy, monitor ● Or manually: – Setup TizenRT’s environment – Upgrade IoT.js-2018 in TizenRT-2+ – Enable IoT.js launcher task ● Using menuconfig (Kconfig) ● Setup main script, PATH, ● WiFi credentials – Populate ROM fs with ● Scripts, iotjs_modules – Build and deploy static image ● Connect board from gateway webapp: https://github.com/rzr/webthing-iotjs/wiki/TizenRT
  29. 29. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 29 “Any sufficiently advanced technology is indistinguishable from magic.” ~ Arthur C. Clarke
  30. 30. 30 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Social Web of Things demo (#MozFest) https://youtu.be/ZT1T-B6I3IM#webthing-iotjs-20181027rzr
  31. 31. 31 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Summary: Open Web matters for IoT ! ● Open Web of Things: to link WWW to physical world ● Mozilla Things framework to connect devices in LAN ● Privacy Is about user's data control of flows ● Javascript aims to reduce integration complexity ● Try webthing-iotjs on GNU/Linux or TizenRT ! ● Support & comply to W3C standards, contribute to FLOSS
  32. 32. 32 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Resources ● Entry point: – https://github.com/rzr/webthing-iotjs/wiki ● More: – https://www.w3.org/WoT/ – https://iot.mozilla.org/ – https://2018.capitoledulibre.org/ ● Keep in touch online: – https://social.samsunginter.net/@rzr – https://wiki.tizen.org/User:Pcoval Resources: flaticons CC
  33. 33. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 33 Questions or Extras ? https://Social.SamsungInter.net/@rzr ^ (Ask now or later online)
  34. 34. https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 34 Generic Sensors addon adapter (I2C) https://youtu.be/4haKrPetGmg#mozilla-iot-gateway-sensors-20180406rzr ● mozilla-iot-gateway-sensors-20180406rzr ● https://youtu.be/4haKrPetGmg
  35. 35. 35 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 WebThings Web App (Tizen & PWA) https://youtu.be/vzoUJ-v5h38#webthing-esp8266-webapp-20180602rzr https://youtu.be/vzoUJ-v5h38#webthing-esp8266-webapp-20180602rzr
  36. 36. 36 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Web of Things Smart Agriculture Demo https://youtu.be/qrFTn0eA8iQ
  37. 37. 37 https://social.samsunginter.net/@rzrSamsung Open Source Group 2018 Thanks ! Resources: Flaticons CC, PixBay.com

×