RIOT Vs Iotivity, AllJoyn, Thread

Dear RIOTers , I’m a MSc student and I’m working on RIOT for my thesis. I ask you what is the future of RIOT in term of high level protocol like IoTivity, AllJoyn and Thread. Is anyone writing a porting of these protocols or is anything planned? or, which is the most suitable high level protocol for RIOT? I found a thread in this mailing list about this topic, but it is quite old and I think something is changed. I hope I explained myself well. Regards, Mattia Antonini

What I can answer from my point of view:

  • Iotivity would be great in RIOT, Soletta project [1] imported it for RIOT, I haven’t tried it but it seems to work. I think Riot should have an implementation of Iotivity directly in its repo (package) so it will be better maintain.
  • AllJoyn, I haven’t heard about a port to RIOT but is big and I would better in Iotivity
  • Thread is not high level, it is a network stack based on 6Lowpan and CoAP. You could add Iotivity in top of Thread for instance. Nevertheless, it would be great to use Thread on RIOT! By the way, Nest has just released open source version of Thread weeks ago called openthread [2]. You could try to add it to RIOT?

[1]https://github.com/solettaproject/soletta

Hi,

Hi!

- Iotivity would be great in RIOT, Soletta project [1] imported it for RIOT, I haven't tried it but it seems to work. I think Riot should have an implementation of Iotivity directly in its repo (package) so it will be better maintain.

Very interesting and good to know. I was not aware of this project (and I think most of the RIOT maintainers weren't either). And yes, for maintainability a package in RIOT might make sense. We just need a maintainer willing to do so. :wink:

Baptiste, do you know the people behind Soletta?

Cheers, Oleg

Hi, I correct what I said, Soletta Project is not an implementation of Iotivity but an implementation of OIC specification (Iotivity too) so Iotivity and Soletta project can communicate together since they use same specification.

Intel Open Source is in charge of this project and you can ask thiago.macieira@intel.com for more information.

Cheers,

Hi Baptiste,

Thanks for the clarification.

Have you already been in contact personally with Thiago?

It may be interesting if they attend and/or present something on this topic at the upcoming RIOT Summit [1].

Cheers,

Emmanuel

[1] summit.riot-os.org

Not really but I saw him answering some post on Iotivity and Soletta project for people asking to port Iotivity to constraint object.

Thiago, could you explain Soletta Project and the relation with OIC and RIOT please?

Hi Thiago, basically, we are interested in learning more about it. And in particular, we were wondering whether it could be a good idea to present this at the RIOT Summit [1]. What do you think about this idea? Best, Emmanuel

[1] summit.riot-os.org

Hello Baptiste, Emmanuel

I'll let the people more familiar (in cc) with it reply.

Could some of you answer please? Thanks

Baptiste

Sorry, I was under the assumption that this had been settled in private conversations already, but now I see that's not the case (and the person involved is not even copied).

Soletta has an implementation of OIC, the protocol that IoTivity implements, but there's nothing about AllJoyn or Thread.

I'm in no position to talk about anything now, so I have to decline the invitation, but maybe some of the others listed that have been more involved with Soletta and OIC can respond.

Hi Gustavo, Hi Ivan, ok I see. thanks for your answers. That’s too bad. It would have been great to gather OIC/OCF people in the same room with W3C, IETF and OpenThread people (who are attending the RIOT Summit) to discuss various IoT network stack approaches, and various IoT open source software approaches. Pitching Intel’s approach to IoT in this context would also have been a good occasion, in the opinion of many among us. If there’s anything we can do to help you or someone else from your community attend/present, let us know. Else, maybe next time. Cheers, Emmanuel

Thanks for your answers. Could we integrate Soletta OIC implementation part as a pkg in RIOT?

Thanks for your answers. Could we integrate Soletta OIC implementation part as a pkg in RIOT?

The OIC implementation is tightly integrated to the core of Soletta, so you need the whole thing in. I'll look into making sure the pkg and build are in good condition and send it as a pull request.

Hi Ivan, it would be great to have it as a pkg indeed! That’s the standard way third-party stacks are integrated in RIOT. Looking forward to that, Emmanuel

Hi Ivan, it would be great to have it as a pkg indeed! That's the standard way third-party stacks are integrated in RIOT. Looking forward to that, Emmanuel

> Thanks for your answers. > Could we integrate Soletta OIC implementation part as a pkg in RIOT? >

The OIC implementation is tightly integrated to the core of Soletta, so you need the whole thing in.

Yes but could we find a way to separate it a bit so we can run a OIC

server using GNRC quickly?

I'll look into making sure the pkg and

That's not straight forward. The OIC implementation uses the CoAP one in Soletta, which uses the socket abstractions as well. GNRC is all the way under that. Using Soletta means that you'll need one thread to run the main loop, from where all events will be dispatched.

Hi,

Hi,

> 2016-06-08 17:14 GMT+02:00 Emmanuel Baccelli < Emmanuel.Baccelli@inria.fr>: > > > Hi Ivan, > > it would be great to have it as a pkg indeed! > > That's the standard way third-party stacks are integrated in RIOT. > > Looking forward to that, > > Emmanuel > > > > > >> > Thanks for your answers. > >> > Could we integrate Soletta OIC implementation part as a pkg in RIOT? > >> > > >> > >> The OIC implementation is tightly integrated to the core of Soletta, so > >> you need the whole thing in. > > > > Yes but could we find a way to separate it a bit so we can run a OIC > server using GNRC quickly?

That's not straight forward. The OIC implementation uses the CoAP one in Soletta, which uses the socket abstractions as well. GNRC is all the way under that. Using Soletta means that you'll need one thread to run the main loop, from where all events will be dispatched.

Do you use your own implementation of CoAP? (or microcoap or libcoap)

Soletta definies socket over RIOT socket? Why? There is some work, we need to dig inside but I think it's a good idea to port your OIC implementation as RIOT package, so RIOT will be an OIC compliant OS and this is important to uniform exchanged data between devices. Let Martine know if you need any help about the porting, you can include me in the PR, I don't know if I'll have time to work on it, but I will follow your porting.

> Hi, > > >> > 2016-06-08 17:14 GMT+02:00 Emmanuel Baccelli < >> Emmanuel.Baccelli@inria.fr>: >> > >> > > Hi Ivan, >> > > it would be great to have it as a pkg indeed! >> > > That's the standard way third-party stacks are integrated in RIOT. >> > > Looking forward to that, >> > > Emmanuel >> > > >> > > >> > >> > Thanks for your answers. >> > >> > Could we integrate Soletta OIC implementation part as a pkg in >> RIOT? >> > >> > >> > >> >> > >> The OIC implementation is tightly integrated to the core of Soletta, >> so >> > >> you need the whole thing in. >> > > >> > > Yes but could we find a way to separate it a bit so we can run a OIC >> > server using GNRC quickly? >> >> That's not straight forward. The OIC implementation uses the CoAP one in >> Soletta, which uses the socket abstractions as well. GNRC is all the way >> under that. Using Soletta means that you'll need one thread to run the >> main loop, from where all events will be dispatched. >> > > Do you use your own implementation of CoAP? (or microcoap or libcoap) Soletta definies socket over RIOT socket? Why?

Because Soletta is a full fledged framework, intended to provide portability across platforms and OSes, so every feature it provides is tightly integrated with the way that Soletta does things, rather than being self contained packages. At the lowest levels, there are abstractions for the target OS so the main loop works consistently across them, as well as integrating IO APIs and network to said main loop.

There is some work, we need to dig inside but I think it's a good idea to port your OIC implementation as RIOT package, so RIOT will be an OIC compliant OS and this is important to uniform exchanged data between devices.

There's no porting the OIC implementation alone, it's either the whole of Soletta or doing a separate OIC implementation. You are not the first to ask for this though, but I don't have anything ready for that at the moment.

Let Martine know if you need any help about the porting, you can include me in the PR, I don't know if I'll have time to work on it, but I will follow your porting.

I'm not so actively working on Soletta anymore, nor with OIC directly, so as time permits I can continue doing the package for Soletta, but I won't be working on an OIC-only package for RIOT any time soon.

On the matter of porting, Soletta already runs on RIOT, so there's little in terms of porting that's required, but I haven't tested on a wide enough variety of boards and I ran into some issues making sure the build systems integrate smoothly, thus why it's taking so long. Also, although the idea of the framework is to abstract the underlying OS, there's technically nothing that prevents using RIOT APIs along with Soletta, it's just that hasn't been tested (or even really considered) and there is no straight forward way to have the Soletta main thread communicating with others.