javascript for ocf applications · javascript on zephyr develop with javascript • scale js...

17
JavaScript for OCF Applications Sakari Poussa, Intel @spoussa 1

Upload: others

Post on 24-May-2020

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

JavaScript for OCF ApplicationsSakari Poussa, Intel

@spoussa

1

Page 2: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Agenda

2

Page 3: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Vision

3

GW

Smart Devices

REST

REST

CoAP, MQTT, 6LowPAN, BLE

JavaScriptEngine(s)

Web Server API Server

Resource Networking

Storage

Cloud

JavaScript for Everything

Application developer can use only web technologies to create end-to-end solutions.

Not the only option but focus of this talk.

Web App

Page 4: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

JavaScript…

4

Page 5: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

The APISame OCF JavaScript API for everything

• Great API makes a difference• Iterative design process• Real usage• Web IDL specifications• Examples• The same OCF JS API

• Node.JS• Cordova and Crosswalk• Tizen• Soletta

5

Page 6: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

OCF JS APIHighlights

6

Promise findResources();Promise retrieve(id);Promise update(resource);Promise observe(id);

Events:resourcefound

Promise<resource> register(data);

Events:retrieverequestupdaterequestobserverequest

Client Server

Events:updatedelete

Resource

Page 7: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

OCF and IoTivity

• Specifications• Data models• Certification• Marketing• uPnP

• Open Source implementation• Apache 2.0• QA• API bindings

7

No JavaScript

Page 8: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Iotivity-node• IoTivity CSDK features except security• Native NPM module• Works with Node.JS 0.10, 0.12, 4.x, 5.x• Linux, Ostro, OS X support• npm install iotivity-node

• Moving repository to iotivity.org !• Apache 2.0

8

Node.JS

iotivity-node

IoTivity

OS + Middleware + libs

Web App

OCF JS API

C API

API

JS

C/C++

Page 9: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

JavaScript on OstroDevelop with JavaScript

• Node.JS 4.2 and NPM• IoTivity• iotivity-node• OCF API• Express, mraa, MQTT and CoAP modules• Rest API Server

• with systemd socket activation and firewall rules• Soletta JS bindings

9

Page 10: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

JavaScript on ZephyrDevelop with JavaScript

• Scale JS development down to MCU• Micro JavaScript runtime • JerryScript, Duktape, libtuv, IoT.JS and friends• JavaScript APIs

• Node.js subset• OCF JS API• BLE, NFC, GPIO, I2C, UART, PWM

10

Page 11: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Cordova OCF Plugin

11

Cordova

OCF Plugin

IoTivity

Android

Web App

JS API

Java API

API

JS

C/C++

• HTML, CSS and JS Apps on Android• Crosswalk or WebView• OCF JS API• Open Source *• Available in Cordova registry *• npm i cordova-android-crosswalk

• npm i cordova-ocf-plugin

Java

* Available soon

Page 12: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Smart Home Demo• Iotivity-node, REST APIs• Cloud Integration• All Application code in

JavaScript• End-to-End OCF• Visit Intel Booth to see

12

Page 13: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Demo Time• Discover, retrieve and update a resource with JavaScript

13

Promise findResources();Promise retrieve(id);Promise update(resource);Promise observe(id);

Events:resourcefound

Promise<resource> register(data);

Events:retrieverequestupdaterequestobserverequest

Client Server

Page 14: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

SummaryJavaScript for Everything

1414

OCF JS API

Page 15: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

Questions?

15

Page 16: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

16

Page 17: JavaScript for OCF Applications · JavaScript on Zephyr Develop with JavaScript • Scale JS development down to MCU • Micro JavaScript runtime • JerryScript, Duktape, libtuv,

References• https://gerrit.iotivity.org/gerrit/p/iotivity-node.git• https://github.com/solettaproject/soletta/blob/master/doc/js-spec/oic.md• https://github.com/01org/iot-rest-api-server• https://ostroproject.org/• https://www.zephyrproject.org/• https://github.com/01org/cordova-plugin-ocf• https://github.com/01org/SmartHome-Demo/dollhouse• https://github.com/poussa/js-iot

17