All,

Let me jump in here.

I’m Clarke Stevens, the chair of the OCF tools group. We are at the MVP stage 
of some very exciting developer tools.

Using these tools, I can build a certifiable device in 15 minutes (actually, 
it’s more like 3 minutes after you build the IoTivity libraries). This is what 
we will use in our hackathon in Chicago in a couple weeks. Also, I have a 
presentation on it that will be available in the online version of the IoT Slam 
conference on June 21-22.

Here is what we have (currently running on the Raspberry Pi).
A git repo with the complete installation scripts.
Scripts that install IoTivity, DeviceBuilder (development scripts), and MRAA 
libraries.
Scripts that run the development tool chain
gen.sh - Reads the device description file that describes the resources in 
whatever you want to build. From that, it reads the needed resource definitions 
in oneIoTa and builds the following
Certifiable IoTivity code for the server.
An introspection file
PICS files for testing
An onboarding file for secure access
build.sh - Runs scons to compile and link everything and copy it to the right 
directories.
edit_code.sh - Loads the server.cpp source file into the nano editor so you can 
add your custom code.
run.sh - Runs the server executable.
reset.sh - Resets the onboarding state to RFOTM (ready for onboarding transfer 
method - so, unowned).
Onboarding Tool and Generic Client (OTGC) - This is and Android app (current 
MVP, will be available in iOS, Ubuntu and Windows in the fall). It supports a 
nice interface to onboard a device. Once the device is onboarded, It reads the 
introspection file and automatically generates a GUI with the widgets to 
support the identified resources. This client is open source. So you can build 
your own certifiable custom client starting from a working interface.
DeviceSpy - This has the same functionality as OTGC, but has a developer’s 
interface with the actual editable payloads for messages.
Compliance Test Tool (CTT) - An automated test tool that uses the generated 
PICs file to run all the tests to verify your product is OCF compliant.

As I said, I can run the entire tool chain in 15 minutes on a Raspberry Pi 3 in 
about 15 minutes. I will be doing this on stage at the hackathon in Chicago.

Here are some other key points.

oneIoTa is used as the definitive source for all resource models. Any resources 
in oneIoTa can be used. If you need something that isn’t available. You can 
submit new resources to oneIoTa (oneiota.org <http://oneiota.org/>).
All you need to do to define a complete device is write the device description 
file (JSON). All the necessary resources will be automatically pulled in and 
all the necessary files automatically generated and put in the correct 
directories.
Currently, we are using IoTivity in C/C++, but all of the scripts are 
templated, so it’s easy to convert to any language on any platform. We have 
currently tested the entire tool chain on Windows, MacOS, Ubuntu and Raspian. 
We are looking at a node.js as a possible next language. A couple of BIG 
companies are planning to support their own boards that are more likely to be 
used in real products.
The OTGC is currently in MVP stage on Android. It will support iOS, Linux and 
Windows by this fall.
DeviceSpy is a very powerful developer tool that lets you have perfect control 
over the payloads.
CTT lets you run all the tests for certification on your own before you submit 
your product to an Authorized Test Lab.
The tools generate logs so you can debug any problems.

This is an exciting and complete (OK, a debugger isn’t really integrated yet, 
but feel free to help set this up). I encourage everyone to try this. The 
current example code supports the demo hardware (Pi and EnviroPhat daughter 
board) we used for our demo kits at CES. You can see that here: 
https://openconnectivity.org/wp-content/uploads/2017/12/OCF-IoTivity-RPi3-GSG.pdf
 
<https://openconnectivity.org/wp-content/uploads/2017/12/OCF-IoTivity-RPi3-GSG.pdf>

Look at the hardware, but don’t use these instructions (they are the old ones). 
Instead, install a headless version of Raspian stretch 
(https://www.raspberrypi.org/downloads/raspbian/ 
<https://www.raspberrypi.org/downloads/raspbian/>), then use the DeviceBuilder 
process described here: https://github.com/openconnectivity/IOTivity-setup 
<https://github.com/openconnectivity/IOTivity-setup> Some of this may only be 
available to OCF members, so if you aren’t already signed up, you should do it. 
There are free levels for individuals and non-profits.

Unfortunately, the instructions for getting OTGC, DeviceSpy and CTT aren’t yet 
clearly written. The will be within the next week or so.

Also, if you can be in Chicago June 21 and 22. Sign up for the hackathon (see 
the OCF site: openconnectivity.org). It’s free with free food, cool goodies and 
bragging rights for having participating in the first OCF hackathon.

OK. That’s all I’ve got.

Thanks
-Clarke

> On Jun 5, 2018, at 2:26 PM, Gregg Reynolds <d...@mobileink.com> wrote:
> 
> 
> 
> On Tue, Jun 5, 2018, 3:10 PM Morten Nielsen <m...@iter.dk 
> <mailto:m...@iter.dk>> wrote:
> Short answers to this:
> Raspberri isn't a consumer device. I need a lamp, or something else that's a 
> real-world consumer product.
> Let us have cheap real things to play with not dev toys.
> 
> Consumers do not write code. Devs love rpi. If you want devs, make rpi easy.
> 
> That said, how do you want to pick the consumer device? You pick it, I'll 
> make it trivially easy to use it with Iotivity.
> 
> Second you obviously have a very non-windows approach to things.
> 
> Bazel has excellent windows support.
> 
> Be careful with that attitude. There's a large dev community who likes to 
> open solutions and hit "run" to compile and build. Don't underestimate the 
> Visual Studio community. It's huge. Make it easy for them on Windows.
> Also many platforms doesn't build the components - they just reference them. 
> Asking people to build those components first is ridiculous 
> 
> There's a misunderstanding here. With Bazel I do not "build iotivity first".  
> Bazel does that for me - *if* necessary. I just build my app. The first time, 
> all the deps get built too. Thereafter, only what has changed. 
> 
> and yet another step where you lose people. Remember that these people spend 
> their spare time and want successes quickly or you lose them.
> 
> Bazel overall is the fastest build system I've ever used, and I've used most 
> of them.
> 
> Sure it's all easy for you, but you live and breathe this every day.
> 
> What's easier than "bazel build myapp"?
> 
> /Morten
> From: Gregg Reynolds <d...@mobileink.com <mailto:d...@mobileink.com>>
> Sent: Tuesday, June 5, 2018 3:33:51 PM
> To: Morten Nielsen
> Cc: iotivity-dev
> Subject: Re: [dev] Where are the devs?
>
> 
> 
> On Fri, Jun 1, 2018, 4:18 PM Morten Nielsen <m...@iter.dk 
> <mailto:m...@iter.dk>> wrote:
> AllJoyn seemed to do a little better in this regard. A few things I saw they 
> did that I feel OCF is lacking:
> 
>
> 
> A broadly available product like LIFX for developers to play with.
> The obvious choice is Raspberry Pi. The problem is tooling. You can find 
> tutorials on the web but they all involve building Iotivity *on* the pi - a 
> major pain, IMHO, and almost certain to frighten away many devs.
> 
> This is where Bazel solves a problem. Here's how I build an OpenOCF app for 
> rpi:
> 
> ./bin/rpi_config.sh arm8
> 
> (unfortunately source config is not - yet - integrated in the build logic)
> 
> bazel build myapp --config=rpi-arm8.
> 
> Of course you have to have a cross-compile toolchain (I use crosstool-NG), 
> but you only have to do that once, and it's not very hard.
> 
> Then a simple scp command installs the app on the rpi and off you go.
> 
> (BTW I've got everything in resources/ building and running under Bazel, 
> including tests and examples. Haven't yet added the cross-build stuff. 
> Working on a draft submission, maybe next weekend.)
> 
> Very easy developer tooling to build devices and clients.
> Two things: tools for building and tools for exploring/learning/debugging.
> 
> As for the latter: working on it. A dev-centric app that makes it easy for a 
> dev to examine an OCF network. Exposes all the gory details of messages, 
> payloads, etc. so you don't have to rummage around in debug logs. Some of the 
> example apps do something like this, but as they are undocumented and opaque 
> I don't find them very helpful.
> 
> Two apps, actually, one with an ncurses interface, one a flutter app (Android 
> only atm, maybe someday iOS).
> 
> 
> Pre-compiled bits. Don’t make me compile everything.
> I think this is over-rated. It all depends on the tooling. With Scons, yes, a 
> pain. With Bazel, compiling everything is probably easier and faster (and 
> definitely more reliable) than downloading and configuring precompiled 
> binaries. Anyway, with Iotivity's many build options I think precompiled 
> binaries is not such a good idea. Maybe a security risk too.
> 
> Blog posts. 
> That'll happen when devs take an interest.
> 
> G
> 

Reply via email to