Building an OpenSource IoT Platform for the Average Maker. Using Open Connectivity Foudnation's OIC Spec and example Apps

Similar projects worth following
Believe it or not. There is an IoT specification out there that's actively being worked and have a published version ready for anyone to pick up and use. I stumbled across Open Connectivity Foundation (OCF) which appear to be focused on de-fragmenting the IoT ecosystem as they have created a specification called Open-Inter-Connect or OIC (with an impressive take on security) that manufacturers may use with their up-coming products (Actually, they can quite easily update existing products too with firmware updates).

This project is aimed at creating a simple platform that allows makers, tinkerers and others to easily connect sensors and actuators in their home into IoT devices by taking advantage of OIC.
Security is a priority in this project (including User Experience). Allowing devices to be used in a secure manner and enables seamless setup by end users

Okay, so what is this project really?

This project is my attempt at reading through OpenConnectivityFoundation's OIC Specification v1.1 and implementing required features on the ESP32.

I chose the ESP32 as it's cheap, with lots of community support and supports both Bluetooth, Wifi and hardware encryption. This makes the device extremely ideal for building a platform that allows the end user to quickly provision the device in their home network using just their smartphone.

For example. when powering on the device for the first time, you may pair with the device using Bluetooth. From there an app on your smartphone will tell the device the WiFi credentials, who owns the device and passes along any security information required for accepting communications from or to adjacent devices on the network.

OIC spec is a Machine2Machine interface. requiring an app that is aware of OIC to discover the device, what resources it has and how to present the end user with pretty eye-candy controls for their device.

  • Schemas for everyone~!

    Roman V04/26/2017 at 10:28 0 comments

    The next project log is still on the way. It's delayed as I'm trying to figure out a problem with data models.

    This project is a mix of software and hardware development. The software part is rather tricky so I'm putting efforts into making the code base modular (or more accurately, making libraries).

    The biggest hurdle I'm facing right now is dealing with JSON Schema. Since each device can have multiple resources, where each resource provides data that is described with one or more JSON schemas. OIC Spec v1.1.0 contains quite an extensive list of schemas for various resources. (doors, heart rate monitors, air conditioners, etc). So I'm deciding on how to deal with them, since vendors may specify their own schemas, it's just becoming a bit of a mess.

    The plan for now will be generating code for the known schemas in OIC spec v1.1.0, whill be some work honestly. but hopefully soon i'll have a nice generic library that is not too complicated to use, which will be extended later on with dynmic things

  • Where it's at

    Roman V04/15/2017 at 23:02 0 comments

    Hello World is great and all. But this is where my project sort of kinda explodes into a huge complex mess that's yet to be organsied.

    My next project goal was to control a RGB LED from my phone or desktop.

    • Add a RGB LED resoruce with information about how to send data to it
    • Allow the App to identify the resource's schema and present a UI the easily control the resource.

    Simple enough, right?

    Read more »

  • First Steps

    Roman V04/14/2017 at 08:32 0 comments

    This project has been started already and well, haven't documented anything about it except for what's been posted here.

    My first steps involved having a look at what's already available for IoT from a low level embedded developer point of view. Since I have no commercial background in IoT and wanted to build something for my home.

    First round of researching found an already popular MQTT protocol which is primarily used over TCP. This protocol is a simple Subscribe/Publish messaging protocol with a few added features like passwords and (I think) forwarding messages onto nodes not directly accessible by the subscriber. It's clean, though, not feature rich.

    For some reason I was interested in UDP IoT protocols (possibly for ease of jumping into Low Power mode and not worrying about TCP states). I Quickly found CoAP which was designed to follow in the footsteps of HTTP; As it's designed for low resource environments, includes URI schemes: `coap://` and `coaps://` (using DTLS), oobserve (subscribe) model and a pile of other features.

    Read more »

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates