Samsung Open Source Group 1Samsung Open Source Group
Philippe Coval
Samsung Open Source Group / SRUK
philippe.coval@osg.samsung.com
For Automotive IoT Interoperability
Conference Libre Software and Hardware / Workshops
Université de Rennes, France <2017-02-08>
Samsung Open Source Group 2Samsung Open Source Group
Bonjour tout le monde !
● Philippe Coval
– Software engineer of Samsung OSG (EU team)
– Member of IoTivity, Tizen, Yocto, Automotive (GENIVI+AGL) projects
– I am taking care about OS/hardware support, build & usages
– Ask me for help:
● https://wiki.tizen.org/wiki/User:Pcoval
Samsung Open Source Group 3Samsung Open Source Group
Agenda
● What is Open connectivity ?
● What is IoTivity ?
● What is OCF automotive?
● A Vehicle to Infrastructure IoT demonstration
● Q&A or/and extras
?
Samsung Open Source Group 4Samsung Open Source Group
“Simplicity
is the ultimate sophistication.”
~Leonardo da Vinci
Samsung Open Source Group 5Samsung Open Source Group
Open Connectivity Foundation
● “Providing the software Linking the Internet of Things”
● Creating a specification, based on open standards:
– Resource based, RESTful architecture (Stateless. client/server...)
– IETF, CoAP protocol (HTTP on UDP), CBOR (JSON in binary)...
● Sponsoring reference implementation: IoTivity
– under Apache 2.0 license
● Rules: Part of standard only if
– Specified and Implemented
Samsung Open Source Group 6Samsung Open Source Group
OCF Automotive profile's mission
● Provide OCF technology for connected cars, by proposing
– A common definition of vehicle resources
– A common way to interact with those (inside or outside vehicle)
– Based on or bridging to existing standards
● Cooperative effort with existing FLOSS Automotive projects
– Tizen, GENIVI, AGL, W3C, RVI ...
Samsung Open Source Group 7Samsung Open Source Group
IoTivity is a complete framework
● Hardware: CPU, MCU, Desktop, Mobile, SBC, Tizen devices
● OS: Many including GNU/Linux, Tizen, Yocto, Android or baremetal...
● C API: Data transmission (flash footprint ~128KiB-)
– Resource Model / Serialization (CBOR)
– Connectivity Abstraction: CoAP, Local IP Network, BT, BLE...
– Discovery (UDP, Multicast), Security (DTLS/TLS)
● C++ API: Object Oriented (C++11)
● More Bindings: JavaScript (iotivity-node)
● + High level services
– Data/Device Management, Hosting, Encapsulation, Cloud interface
Samsung Open Source Group 8Samsung Open Source Group
IoTivity is resources oriented
● Resource is identified by an URI
– Composed of properties
● Declared by a ResourceType
– Operations: CRUD+N
● Create, Read, Update, Delete+ Notify
● Use existing known resource models
– From oneIoTa.org repository
– Ie: sensors, geolocation...
● Or create new ones (new names)
– Share for interoperability
● http://www.oneiota.org/revisions/1863
● oic.r.sensor.illuminance.json
● /* … */ "definitions": {
"oic.r.sensor.illuminance": {
"properties": {
"illuminance": {
"type": "number",
"readOnly": true,
"description":
"Sensed luminous flux in lux."
} } } /* … */
Samsung Open Source Group 9Samsung Open Source Group
Flow: Create, Read, Update, Delete, Notify
IoTivity Server IoTivity Client(s)
Local IP Network
Registration of resource
Handling new requests Set/Get/ing properties values
Initialization as server Initialization as client
Handling new clients Discovery of resource
POST/PUT GET
UDP Multicast
+ CoAP
Notify updated resource Observe resource change
& Handling propertiesOBSERVE
Samsung Open Source Group 10
OCDoResource(...OC_REST_PUT …)
onPut(... OCClientResponse ...)
Example: Client updates server's resource
OCInit(..., OC_SERVER);
OCCreateResource( …, onOCEntity);
{ OCProcess(); }
onOCEntity(entityHandlerRequest) {
switch entityHandlerRequest->method
{
case 'POST: // Create value
case 'PUT' : // Update new resource
// handling the change
case 'GET' : // READ current value
...
OCDoResponse(&response);
}}
OCInit(..., OC_CLIENT);
OCDoResource(...,OC_REST_DISCOVER, ...)
onDiscover(... OCClientResponse ...)
IoTivity Server IoTivity Client(s)
IP NetworkIP Network
● Client sets resource's value
● Server is handling it
– and responding
Samsung Open Source Group 11
“Any sufficiently
advanced technology
is indistinguishable
from magic.”
~ Arthur C. Clarke
Samsung Open Source Group 12Samsung Open Source Group
How to track defectives street lights?
● 1: Measure if outside's lighting is too dark
– Using Embedded sensor in car (demo: I²C sensor)
– Turn car's front light on automatically
● 2: Get position from satellites (GPS, Galileo)
– From: car, mobile or any (demo: simulated)
● 3: Send notice to Internet (Cloud)
– Using mobile data
– 4: Forward information to city services (pull or push)
● 5: Agent is assigned
– 6: to fix defective light
● 7: he can also check “open data” base from his mobile
● ...
11
2
3
5
6
4
7
Samsung Open Source Group 13Samsung Open Source Group
From devices to cloud (AutoLinux FOSDEM)
https://vimeo.com/202478132#iotivity-artik-20170204rzr
Samsung Open Source Group 14Samsung Open Source Group
/GeoLocationResURI
{
latitude: 52.165,
longitude: -2.21,
}
A Vehicle to Infrastructure notification service
function handle(illuminance) {
if (gThreshold > illuminance) {
var data= { illuminance: illuminance,
latitude: gGeo.latitude, longitude: gGeo.longitude };
sender.send(data); // { ARTIK's client.post(url...); }
} }
client.on("resourcefound", function(resource) {
if ("/IlluminanceResURI" === resource.resourcePath) {
resource.on("update", handle);
} else if ("/GeolocationResURI" === resource.resourcePath){
resource.on("update",
function(resource) { gGeo = resource.properties; });
} };
1
2
/IlluminanceResURI
{
illuminance: 42
}
https://api.artik.cloud/
{
illuminance: 42,
latitude: 52.165,
longitude: -2.21
}
3
1
Samsung Open Source Group 15Samsung Open Source Group
Summary
● Open Connectivity establishes a specification
– for interconnecting things, products, services
– RESTful architecture based on existing standards (IETF, CoAP, Cbor)
● IoTivity implements it in C under Apache-2.0 license
– Can run on micro controllers (baremetal)
– Most Operating systems: GNU/Linux, Tizen, Yocto (GENIVI, LFAGL etc)
– Other languages C++, JS are supported
● Automotive is one of OCF domains under development
– Project is open to be extended with new technologies or services
Samsung Open Source Group 17Samsung Open Source Group
IoTivity on LF AGL + Minnow max (OSHW)
https://vimeo.com/156307187#iotivity-agl-demo-platform-20160222rzr
Samsung Open Source Group 18Samsung Open Source Group
Use GeoLocation resource in Tizen apps
https://vimeo.com/164000646#tizen-genivi-20160424rzr
Samsung Open Source Group 19Samsung Open Source Group
References
● Entry points:
– http://wiki.iotivity.org/automotive
– https://openconnectivity.org/industries/automotive
● Going further:
– https://openconnectivity.org/resources/iotivity
– https://openconnectivity.org/resources/oneiota-data-model-tool
– https://news.samsung.com/global/samsung-contributes-to-open-iot-showcase-at-ces-2017
● Keep in touch online:
– https://wiki.iotivity.org/community
– https://wiki.tizen.org/wiki/Meeting
– https://blogs.s-osg.org/author/pcoval/
Samsung Open Source Group 20Samsung Open Source Group
Merci / Trugarez
Thanks / 고맙습니다
Samsung OSG, SRUK, SEF, SSI,
Open Connectivity Foundation and members, LinuxFoundation,
FLOSS Communities: Tizen, Yocto, EFL, LF AGL, GENIVI, eLinux,
Local: LabFabFr, CampOSV, UR1 IETR Rennes, IMT Atlantique, IoTBzh.
Resources: xkcd.com, FlatIcons
(CC BY 3.0: Freepik,Scott de Jonge, Gregor Cresnar)
Tools: Libreoffice, openshot,
+ YOU !
Contact:
https://wiki.tizen.org/wiki/User:Pcoval