Challenge

Challenge

With this step by step challenge you will have a parallel learning experience of Internet of Things and continue with the implementation of functionality on top of the project you have built during the workshop.

  1. Data Reporting, System Data, Device ID

  2. Data Reporting, System Communications Protocols, Device ID

  3. Data Reporting, System Communications Protocols, RESTFul API

  4. Data Reporting, Cloud Computing Services, freeboard.io & dweet.io

  5. Data Reporting, Cloud Computing Services, adafruit.io

  6. Data Reporting, Cloud Computing Platforms, IBM Watson IoT Platform

  7. Physical Sensors (Seeed Studio Grove Kit)

  8. Software Version Control System Pushing Code

01 Data Reporting, System Data, Device ID

Section System Data

Instruction

Define a global variable "DeviceID" to serve as a Unique Device Identification to your Internet of Things Device

02 Data Reporting, System Communications Protocols, Device ID

Section System Communications Protocols

Instruction

Include your "DeviceID" global variable under your MQTT Publish and Subscribe Topics IoT101/DeviceID/#

Code in 2 functions needs to change:

  • functionDataSensorMqttPublish

  • functionDataActuatorMqttSubscribe

Here it is how new code might look like:

#!/usr/bin/python

import paho.mqtt.client as paho
...
def functionDataActuatorMqttSubscribe():
...
    mqttclient.subscribe("IoT101/DeviceID/DataActuator", 0)
...
def functionDataSensorMqttPublish():
...
        topic = "IoT101/DeviceID/DataSensor"
...

03 Data Reporting, System Communications Protocols, RESTFul API

Section System Communications Protocols Flask-RESTful Lab

Instruction

Incorporate a RESTFul API named "sensor" using Flask-RestFul to send data taken from the Simulated Sensor under functionDataSensor Python function.

Once implemented, run your main.py program and access the network resource using a web browser, you should get the data taken from the the Simulated Sensor:

    root@edison:~/TheIoTLearningInitiative/InternetOfThings101# python main.py
     ...
     ...
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
     * Restarting with stat
     * Debugger is active!
     * Debugger pin code: 331-202-890
     ...
     ...

Connect to your boardipaddress:5000/sensor in a web browser, data shall be displayed

    127.0.0.1 - - [28/Dec/2015 15:07:38] "GET /sensor HTTP/1.1" 200 -
    127.0.0.1 - - [28/Dec/2015 15:07:40] "GET /sensor HTTP/1.1" 200 -

04 Data Reporting, Cloud Computing Services, freeboard.io & dweet.io

Section Cloud Computing Services

Instruction

Create a freeboard.io dashboard and send the data taken from the Simulated Sensor using dweet.io Python library

Do not hesitate to google and see this link BoardEdison en Freeboard con dweet

05 Data Reporting, Cloud Computing Services, adafruit.io

Section Cloud Computing Services

Instruction

Create an adafruit.Io dashboard and send the data taken from the Simulated Sensor using Adafruit MQTT Python Library

Do not hesitate to google and see this link Learn Adafruit IO

06 Data Reporting, Cloud Computing Platforms, IBM Watson IoT Platform

Section Cloud Computing Platforms

Instruction

Implement code to publish the data taken from the Simulated Sensor to the IBM Watson IoT Platform

Remember to reuse the code seen under "System Cloud Platforms IBM Watson IoT Platform Quickstart Physical Device", file IBM IoT Quickstart

07 Physical Sensors Seeed Studio Grove Kit

Instruction

Implement code to replace existing functionality/logic under functionDataActuator and functionDataSensor by using a physical actuator and sensor from the Seeed Studio Grove Kit

Code in 2 functions needs to change:

  • functionDataActuator

  • functionDataSensor

Remember UPM library give you Python bindings to easy use of your Grove Sensors

Here it is how new code might look like:

#!/usr/bin/python

import paho.mqtt.client as paho
...
def functionDataActuator(status):
    # Implement logic to drive Actuator / Grove Relay
...
def functionDataSensor():
    # Use Sensor / Grove Light to replace psutil.net_io_counters()
    ...
    return data
...

08 Software Version Control System Pushing Code

Section Software Version Control System

Instruction

Confirm every code under your local "TheIoTLearningInitiative" git repository, "InternetOfThings101" directory is uploaded to your remote "TheIoTLearningInitiative" github repository

ToDo Diretory Structure

Last updated