Changes

Jump to: navigation, search
no edit summary
{{InfoBoxTop}}
{{AppliesToSBCLynx}}
{{AppliesTo AXEL ULite AN}}
{{AppliesTo SBC Lynx AN}}
{{AppliesToIoT}}
{{AppliesTo IoT AN}}
{{InfoBoxBottom}}
{{WarningMessage|text=This application note was validated against specific versions of the kit only. It may not work with other versions. Supported versions are listed in the ''History'' section.}}
== History ==
{| class="wikitable" border="1"
|-
|0.5.0
|April May 2017
|First draft
|-
|0.6.0
|May 2017
|Added section "Configuring SBC Lynx as an MQTT broker"
|-
|}
==Introduction==
[[:Category:SBC_Lynx|SBC Lynx ]] is extremely flexible in terms of [[Connectors,_buttons_and_switches_(SBC_Lynx)|communication interfaces]] and [[Additional_industrial_I/Os_(XUAL)|I/O ports]]. When used in combination with a Linux distribution such as [[XUELK-AN-002:_Running_Debian_distribution|Debian]], it is an ideal solution to implement compact highly-integrated cost-effective gateways/supervisors for [http://internetofthingsagenda.techtarget.com/definition/Industrial-Internet-of-Things-IIoT Industrial Internet of Things applications (IIoT)].
IIoT is a vast field that includes several disciplines. At field level, the typical IIoT system requires
[1] See for example [[#TBDList of IoT cloud platforms (not exhaustive)|this section]].
===Ubidots===
[https://ubidots.com 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 Tha last one 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 [[XUELK-AN-002:_Running_Debian_distribution|this application note]].
[[File:XUELK-AN-IIoT-1.png|thumb|center|600px|caption]]
[[File:XUELK-AN-IIoT-2.png|thumb|center|600px|caption]]
Click the ''API Credentials''. The API token (<code>fwSetosAgIG3d128YdzP5fi4hADzWU</code> in this example) is a string which will be used later to initialize the API client instance.
[[File:XUELK-AN-IIoT-3.png|thumb|center|600px|caption]]
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: <code>Fall_sensor</code>, <code>Flood_sensor</code> and <code>Temp_sensor</code>. To create variables, there are three options in the upper center of the home page of the Ubidots interface, as shown below.
[[File:XUELK-AN-IIoT-4.png|thumb|center|600px|caption]]
Click the device option, then we will get the following:
[[File:XUELK-AN-IIoT-5.png|thumb|center|600px|caption]]
Click the device and add a variable:
[[File:XUELK-AN-IIoT-6.png|thumb|center|600px|caption]]
To upload a value to the Ubidots platform, we can use a code like this:
<pre class="board-terminal">
new_value = my_variable.save_value({'value': xxxxxxxxxxx<value>})
</pre>
====Visualizing data on the cloud dashboards====
To visualize the data sent to the ubodotsUbidots, we have an option called Dash board on to use the ubidots cloud side''Dashboards'' section, we have three steps to adjust the dashboard that is the place where we will select the way can configure how we want to visualize the data.
Click First, click the Dash board ''Dashboards'' link. Click the "+ “symbol " symbol on the right upper corner . Then you will get “How the "How would you like to see your data?" question and different option options below this question like it:*Chart, metric, map, indicator, controller etc* Metric*Map*Indicator*Controller*...[[File:XUELK-AN-IIoT-8.png|thumb|center|600px]]
In this example, the option ''chart'' was selected. As such, several further options are available:[[File:XUELK-AN-IIoT-89.png|thumb|center|600px|caption]]
In my caseFor all of the variables, I have selected the first option ''Line chart, in this case there are several '' option to use was chosen. The following image shows how the data visualization looks like:[[File:XUELK-AN-IIoT-10.png|thumb|center|600px]]
====Events and notifications====
Ubidots allows sending notifications—for instance in the form of text messages (SMS) or emails—to the authorized users, based on the events configured on the cloud. In the following example, a variable that was not mentioned in the previous sections is used (<code>heartbeat</code>).
To configure notification options, click enter the ''Events'' section.[[File:XUELK-AN-IIoT-911.png|thumb|center|600px|caption]]
In my case, I have selected Then sekect the first option device (Line chart<code>My_device_1</code> in the example) then confirm and I have done the same for all my three variables and the dash board after sending data looks the below one...[[File:XUELK-AN-IIoT-12.png|thumb|center|600px]]
... and click the variable you wish to configure the notification for.[[File:XUELK-AN-IIoT-1013.png|thumb|center|600px|caption]]
====Notification setting (event scheduling setting)====Sending sms or email to authorized user based on After selecting the variable, we will define the event configured on condition that triggers the cloudnotification.In this case, it is triggered when the Event section, we can set a trigger, sms or an email to get<code>heartbeat</code> variable is less than 4:[[File:XUELK-AN-IIoT-14.png|thumb|center|600px]]notification based our interest[[File:XUELK-AN-IIoT-15.png|thumb|center|600px]]
Last, we compose the message we want to be emailed every time the notification is triggered.[[File:XUELK-AN-IIoT-1116.png|thumb|center|600px|caption]]
==Device-to-device communications==
===Configuring SBC Lynx as an MQTT broker===
This example shows how to install an MQTT broker on SBC Lynx, running Debian distribution. "MQTT, a simple, lightweight, publish/subscribe messaging protocol on top of the TCP/IP protocol, is the ideal protocol for the emerging IoT world" [1] and is becoming one on the most common protocols used for machine-to-machine communications.
When we click In contrast to HTTP with its request/response paradigm, MQTT is based on a publish/subscribe model, as depicted in the following image. This makes it suitable for "Internet of Things" messaging where highly constrained devices are used (low power sensors, mobile devices, embedded computers, microcontrollers, etc.).[[File:MQTT-architecture.png|thumb|center|600px]]Publish/Subscribe is an event-driven way of communicating and it enables messages to be pushed to clients. The central communication point is the MQTT broker (server). It is in charge of routing all messages between the senders and the “Even option “rightful receivers. Each client (sensors) that publishes (transmits) a message to the broker includes a topic into the message. The topic is the routing information for the broker. Each client that wants to receive messages subscribes to a certain topic and the broker delivers all messages with the matching topic to the client. For more details, we will get please refer to the following publicly available resources such as [http://www.steves-internet-guide.com/mqtt/ this link].
[[File:XUELK-AN-IIoT-12.png|thumb|center|600px|caption]]
[1] https://www.ibm.com/developerworks/cloud/library/cl-mqtt-bluemix-iot-node-red-app/
====Installing the broker====
Eclipse Mosquitto™ broker will be installed on SBC Lynx. Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1.
Then click The procedure was tested on an [[XUELK-AN-002:_Running_Debian_distribution|SBC Lynx running Debian Jessie distribution]].First, import the device (with the name already created, in this case mine device name repository package signaling key:<pre class= my_device_1) and select the variable"board-terminal">wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add mosquito-repo.gpg.key </pre>
[[FileMake the reposioty available for the mqtt:XUELK<pre class="board-AN-IIoTterminal">cd /etc/apt/sources.lit.d/sudo wget http://repo.mosquitto.org/debian/mosquitto-13jessie.png|thumb|center|600px|caption]]list</pre>
After selecting the variable, we will put the if then statement Install Mosquitto<pre class="board-terminal">sudo apt-get updatesudo apt-get install mosquitto</pre>
[[File:XUELKInstall Mosquitto developer libraries to develop MQTT clients<pre class="board-ANterminal">sudo apt-IIoTget install libmosquitto-14.png|thumb|center|600px|caption]]dev</pre>
After putting a value to Execute the if – then statement, we will select a means following command to install Mosquitto client packages<pre class="board-terminal">sudo apt-get notificationinstall mosquitto-clients</pre>
[[File:XUELKEnsure that Mosquitto broker is running<pre class="board-AN-IIoT-15.png|thumb|center|600px|caption]]terminal">sudo service mosquitto status</pre>
ThenTo verify that the broker is running properly, we will put a statement (message) to get as a notification either for sms (cell phone number) or email for email notificationyou can perform this simple test. Here in below I put snap shot of the final step of the event setting
Open a terminal and issue this command to subscribe the topic <code>mqtt</code>
<pre class="board-terminal">
mosquitto_sub -h localhost -t "mqtt" -v
</pre>
[[File:XUELK-AN-IIoT-16.png|thumb|center|600px|caption]]
Open another terminal and issue the given below command to publish message to the topic <code>mqtt</code>
<pre class="board-terminal">
mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"
</pre>
In this way, we can connect our device (SBC Lynx) to Now the ubidots cloud with Ubidot’s python api client and send data to message <code>Hello MQTT</code> will be displayed in the cloud then visualize it on first terminal where the cloud in way we configured and also get notification by means of different waystopic <code>mqtt</code> was subscribed.
==References==
dave_user, Administrators
5,138
edits

Navigation menu