Tuesday, August 15, 2017

IBM Watson IoT (2): connecting a Raspberry Pi as a Registered Device with Node-RED


- Layout for this exercise:

* To complete this exercise it is assumed the previous existence of an account on the IBM Bluemix platform

* This exercise is based in the previous exercise flow:

1 - Creating an IBM Watson IoT Platform organization

- In this exercise, and unlike the previous one with Quickstart, the Raspberry Pi connects to the IoT platform providing credentials and registration of the device.

- Creating a private organization space that requires authentication and registration for all devices and applications to use in that organization. - Each organization is defined by a 6-character ID, as we will see in short.

- The first step consists of the login process into the IBM Bluemix account. Let's notice that IBM Watson IoT is a service provided by the IBM Bluemix cloud platform:

- Going to the Internet of Things Platform:

- Creating an IBM Watson IoT  service:

- Clicking Launch:

- Entering the IBM Watson organization space:

2 - Creating a Device Type 

- Devices connected to the IBM Watson IoT Platform are associated with a Device Type, what are intended to be groups of devices sharing common characteristics. 

- Going to Devices:

- Browse and Create Type:

- Creating a "device type" (be careful not confusing with "gateway type"):

- Entering Name and Description:

- Defining the template is optional. In this case Manufacturer and Model are defined:

- Metadata is optional:

3 - Adding and registering a device to the the IBM Watson IoT Platform

- Choosing the Device Type:

- The Security step allows to enter an optional token, or otherwise it can be auto generated.  

- In this case we choose an authentication token  auto generated by the service, what will be displayed and the end of the registration process:

- Adding the device RBP_1:

- After adding the device the auto generated Device Credentials are displayed. It is important to write down all this information because in case of loss there is no possible recovery:

- Clicking the X, the Security step is ended:

4 - Generating API Keys

- Some API Keys must be generated to enable the connectivity. Going to Apps, clicking Generate API Key:

- API Keys are generated to allow the connection:

5 - Connecting the Raspberry Pi as a registered Device

- At this point a device RBP_1 has been created, added and registered to the IBM Watson IoT platform, and also some API Keys for enabling the connectivity have been generated.

- To connect the Raspberry Pi device (in this case as Registeredaccording to the previous exercise flow:

- The Watson IoT node must be edited as Registered:

- Clicking the Credentials icon:     

- Entering the credentials (Organization ID, Device Type, Device ID, Authentication Token) obtained at point 2 of this exercise:

- Deploying:

- Eventually the connection is achieved:

6 - Receiving data from the Raspberry Pi device at the Watson IoT platform

- Now the RBP_1 is connected:

- The Connection Log shows the sucssessfull connection:

- Events are generated every 5 seconds, displaying the last received CPU temperature from the RBP_1 device:

Monday, August 14, 2017

IBM Watson IoT (1): connecting a Raspberry Pi as a Device with Node-RED Quickstart


- Layout for this exercise:

1 - Introduction

The IBM Watson IoT Platform is a fully managed cloud-hosted service that makes it simple to derive value from Internet of Things (IoT) devices.

- It provides solutions for device registration, connectivity, control, rapid visualization and storage of data derived from the IoT.

- When combined with the IBM Bluemix environment and access to secure Watson APIs the platform allows to integrate and analyze predictive, cognitive, and contextual analytics for stronger decision-making.

Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.

- It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.

- The goal of this exercise is to connect a Raspberry Pi device to the IBM Watson IoT Platform using the Node-RED programming tool and the Quickstart service.

- The Raspberry Pi device will send messages about its CPU temperature every 5 seconds and the IBM Watson IoT platform receives and handles the information displaying the messages at a website.

- Quickstart is a sandbox service provided by Node-RED that runs 24/7 and it's freely accesible. However, it does not provide any security that data is coming from a trusted source, so anybody using the API can send data into the service. That is the reason because in the next exercise we will see how to use Node-RED with a Registered device.

2 - Installing Node-RED nodes at the Raspberry Pi

- Installing a pair of Node-RED nodes for connecting the Raspberry Pi as a Device (also as a Gateway) to the IBM Watson Internet of Things Platform:

- Installing a pair of Node-RED nodes for connecting to both the Quickstart and Registered flows in IBM Watson IoT Platform:

- Starting Node-RED:

- Browsing to localhost IP at port 1880 lets us access the Node-RED editor:

 - Checking that the installation of the two nodes has been successful:

3 - Creating a Node-RED flow

- This flow measures the CPU temperature from the Raspberry Pi and sends it to the IBM Watson IoT platform:

- Let's check the configuration of the nodes.

- The first node is the injection node, what injects messages every 5 seconds from the start:

- The exec node runs the function vcgencmed with the option measure_temp to measure the CPU temperature of the Raspberry Pi device:

- The function node formats the msg.payload:

- The debug node outputs the msg.payload to the Debug tab:

- Finally, the Watson IoT node allow to connect the Raspberry Pi device sending events to the IoT platform. In this case, the Quickstart mode is selected:

- Exporting the flow to the clipboard:

[{"id":"aa1ea7a8.5cac6","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"474020f5.41c758","type":"inject","z":"aa1ea7a8.5cac6","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":true,"x":216,"y":212,"wires":[["3377c7a3.ca8418"]]},{"id":"3377c7a3.ca8418","type":"exec","z":"aa1ea7a8.5cac6","command":"vcgencmd","addpay":false,"append":"measure_temp","useSpawn":"","timer":"","oldrc":false,"name":"RaspberryPi_CPU_temperature","x":410,"y":305.5,"wires":[["69a8e49e.1adb7c","21d130ef.8669c8"],[],[]]},{"id":"69a8e49e.1adb7c","type":"debug","z":"aa1ea7a8.5cac6","name":"debug","active":true,"console":"false","complete":"payload","x":845,"y":117.5,"wires":[]},{"id":"21d130ef.8669c8","type":"function","z":"aa1ea7a8.5cac6","name":"msg.payload","func":"msg.payload = {\"d\":{\"temp\":msg.payload.replace(\"temp=\",\"\").replace(\"'C\\n\",\"\")}};\nreturn msg;","outputs":1,"noerr":0,"x":675,"y":313,"wires":[["69a8e49e.1adb7c","a67a1c60.187598"]]},{"id":"a67a1c60.187598","type":"wiotp out","z":"aa1ea7a8.5cac6","authType":"d","qs":"true","qsDeviceId":"a67a1c60.187598","deviceKey":"","deviceType":"","deviceId":"","event":"event","format":"json","qos":"","name":"Watson IoT","x":895,"y":409.5,"wires":[]}]

4 - Deploying the NODE-Red flow in the Quickstart mode

- Clicking the Deploy tab:

- The Debug tab displays the CPU temperature every 5 seconds:

- Going to the Watson IoT node the Quickstart mode triggers the IBM Watson IoT Plaftorm webpage where the series of events gathered every 5 seconds is displayed: