XUELK-AN-005: Implementing an Industrial IoT gateway/supervisor

From DAVE Developer's Wiki
Revision as of 15:10, 15 May 2017 by U0001 (talk | contribs) (History)

Jump to: navigation, search
Info Box
SBC Lynx-top.png Applies to SBC Lynx

History[edit | edit source]

Version Date Notes
0.5.0 May 2017 First draft

Introduction[edit | edit source]

SBC Lynx is extremely flexible in terms of communication interfaces and I/O ports. When used in combination with a Linux distribution such as Debian, it is an ideal solution to implement compact highly-integrated cost-effective gateways/supervisors for Industrial Internet of Things applications (IIoT).

IIoT is a vast field that includes several disciplines. At field level, the typical IIoT system requires

  • collecting data from different in nature networks and fieldbuses (an RS485 bus, an Ethernet LAN, an IO-Link port, etc.)
  • uploading the data to the cloud over an Internet connection.

This application note provides some examples of hardware and software configurations that can be used for these purposes. Also, it shows how to harness the versatility of SBC Lynx to integrate on the same platform even processing and controlling functionalities. [1]

The examples were tested on an SBC Lynx board equipped with optional wireless module and that runs Debian distribution, as described here.


[1] It is worth remembering that SBC Lynx supports IEC 61131-3 compliant soft-PLC engines as well, such as Axel LogicLab.

Cloud interfacing[edit | edit source]

At the time of this writing, tens of cloud platforms are available on the market addressing IoT and IIoT applications. [1] Some of them provide free accounts for small projects or evaluation purposes.

The following sections describe how to interface an SBC Lynx-based gateway to some of such platforms.


[1] See for example this section.

Ubidots[edit | edit source]

Ubidots is a codeless IoT Platform designed to help you prototype and scale your IoT projects to production.

This example consists of three steps. The first shows

  • How to connect the SBC Lynx to Ubidots
  • How to upload data to the cloud.

The second part describes how to visualize on the dashboard of Ubidots. That last shows how to set up events so as to get a notification.

The procedure here described was tested on a SBC Lynx running Debian distribution. For more details, please refer to this application note.

Connecting and uploading data to Ubidots[edit | edit source]

As stated before, it is assumed that the board runs a Debian distribution:

root@arm:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.7 (jessie)
Release: 8.7
Codename: Jessie

To connect to the Ubidots platform, a client written in Python will be used. The client will make use of the Ubidots' client library (https://pypi.python.org/pypi/ubidots/). To install it, please issue the following commands as root user:

apt-get update
apt-get upgrade
apt-get install python-setuptools
easy_install pip
pip install ubidots

On the cloud side, we need to have a user account on the ubidots.com platform and get the API (a unique key for each account ) and token from the website, very simple.


Go to the website of the Ubidots cloud and click the sign up option on the right upper corner of the website to create the account.


XUELK-AN-IIoT-1.png


To get the API token for the just created account, go to the right upper corner of the home page and click on the username. Then you will see four options which are My Profile, API Credentials, Docs and Log Out.


XUELK-AN-IIoT-2.png


Click the API Credentials. The API token (fwSetosAgIG3d128YdzP5fi4hADzWU in this example) is a string which will be used later to initialize the API client instance.

XUELK-AN-IIoT-3.png


To create and initialize an API Client instance, use the following code:

from ubidots import ApiClient
api = ApiClient(token='fwSetosAgIG3d128YdzP5fi4hADzWU')


On the cloud side, it is necessary to create the variables that will store the values uploaded by the SBC Lynx. In the example, three variables are created: Fall_sensor, Flood_sensor and Temp_sensor. To create variables, there are three options in the upper center of the home page of the Ubidots interface, as shown below.

XUELK-AN-IIoT-4.png


Click the device option, then we will get the following:

XUELK-AN-IIoT-5.png


Click the device and add a variable:

XUELK-AN-IIoT-6.png


After adding the variables, we need their IDs. To get them, put the cursor on bottom side of each variable box. Then, you will see "I" option. Click it to get the ID.

To create an instance of the variable on the SBC Lynx side, use the following format code:

my_variable = api.get_variable('<variable ID>')

To upload a value to the Ubidots platform, we can use a code like this:

new_value = my_variable.save_value({'value': xxxxxxxxxxx})

Following is a code snippet that uploads random data to the platform:

from ubidots import ApiClient
import random
api = ApiClient(token='fwSetosAgIG3d128YdzP5fi4hADzWU')
my_variable_1 = api.get_variable('58cfe99b7625427aeab8a5e8')
test_value_1 = random.uniform(0,1)
test_value_1 = my_variable_1.save_value({'value':test_value_1})
my_variable_2 = api.get_variable('58d0df2f7625427ae8065765')
test_value_2 = random.randint(1,10)
test_value_2 = my_variable_2.save_value({'value':test_value_2})
my_variable_3 = api.get_variable('58d0f2d77625427ae6d4847f')
test_value_3 = random.randint(1,10)
test_value_3 = my_variable_3.save_value({'value':test_value_3})

Visualizing data on the cloud dashboards[edit | edit source]

To visualize the data sent to the ubodots, we have an option called Dash board on the ubidots cloud side, we have three steps to adjust the dashboard that is the place where we will select the way we want to visualize the data.

Click the Dash board Click the “+ “symbol on the right upper corner Then you will get “How would you like to see your data?” and different option below this question like Chart, metric, map, indicator, controller etc


XUELK-AN-IIoT-8.png


In my case, I have selected the first option chart, in this case there are several option to use


XUELK-AN-IIoT-9.png


In my case, I have selected the first option (Line chart) then confirm and I have done the same for all my three variables and the dash board after sending data looks the below one


XUELK-AN-IIoT-10.png


Notification setting (event scheduling setting)[edit | edit source]

Sending sms or email to authorized user based on the event configured on the cloud. In the Event section, we can set a trigger, sms or an email to get notification based our interest.


XUELK-AN-IIoT-11.png


When we click the “Even option “, we will get the following


XUELK-AN-IIoT-12.png


Then click the device (with the name already created, in this case mine device name = my_device_1) and select the variable.


XUELK-AN-IIoT-13.png


After selecting the variable, we will put the if then statement


XUELK-AN-IIoT-14.png


After putting a value to the if – then statement, we will select a means to get notification


XUELK-AN-IIoT-15.png


Then, we will put a statement (message) to get as a notification either for sms (cell phone number) or email for email notification. Here in below I put snap shot of the final step of the event setting


XUELK-AN-IIoT-16.png


In this way, we can connect our device (SBC Lynx) to the ubidots cloud with Ubidot’s python api client and send data to the cloud then visualize it on the cloud in way we configured and also get notification by means of different ways.

References[edit | edit source]

List of IoT cloud platforms (not exhaustive)[edit | edit source]

  • mnubo
  • Oracle
  • Swarm
  • Axeda
  • OpenRemote
  • Etherios
  • ioBridge
  • SAP Internet of Things Solutions
  • Zatar
  • ThingWorx
  • Arrayent
  • Sine-Wave Technologies
  • Ayla Networks
  • Echelon
  • EVRYTHNG
  • Exosite
  • Xively
  • Marvell
  • Carriots
  • Arkessa
  • GroveStreams
  • CeNSE by HP
  • ARM
  • Nimbits
  • Open Sen.se
  • Paraimpu 15
  • Sociot.al
  • NewAer
  • SensorCloud
  • ThingSpeak
  • Yaler
  • Jasper
  • XobXob
  • Linkafy
  • Revolv
  • Wind River
  • Wovyn
  • InfoBright
  • Contiki
  • 2lemetry
  • AllJoyn
  • InterDigital
  • Superflux Internet of Things Academy (IoTA)
  • HarvestGeek
  • MediaTek Labs
  • Streamlite LTE
  • Bosch Software Innovations Suite
  • Geras
  • Ubidots
  • Opensensors.IO
  • Tinamous
  • Temboo
  • Eyehub
  • Nearbus
  • Exosite
  • Emoncms
  • Gemalto
  • IBM Watson
  • Microsoft Azure
  • Amazon AWS
  • Senseiot
  • Parse
  • SICS
  • Element blue
  • Sparkfun
  • Kaa
  • Salesforce
  • PRDIX