Dispositivo

Hacer la modificaciones en nuestro dispositivo

Los siguientes pasos se realizaran en el ambiente de Cloud9 que simulara el dispositivo que se conectará a AWS IoT Core. Estos pasos se pueden realizar en un equipo como laptop, Raspberry, etc y a continuación se deja esta liga para hacerlo de esa manera.

Lo primero que se hará es crear una nueva carpeta. En el menuú de la izquierda, dar boton derecho sobre el directorio y seleccionar New Folder y llamarlo Lab1

Seleccionamos el nombre de la carpeta y damos clic en File como se muestra la imagen para cargar los certificados descargados por AWS IoT Core:

El archivo que se va a seleccionar en su computadora se debe llamar : connect_device_package.zip, una vez cargado debe verse dentro de la carpeta.

En la parte de abajo de la pantalla se tiene Terminal, como se ve en la imagen. Ahi escribiremos los siguientes comandos.

Se requiere escribir la siguiente linea de código para instalar el SDK de IoT para Python:


sudo pip install AWSIoTPythonSDK
cd Lab1
unzip connect_device_package.zip
touch device1.py

Con el archivo device1.py creado, dar doble clic para abrirlo y copiar el siguiente código.

#!/usr/bin/python
# Lab 1 - Setting up.
# Make sure your host and region are correct.
import sys
import ssl
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import json
import time
import uuid
import random
import datetime
#Se puede cambiar el ID por el valor que se desee
ID = "1HGCP2F31BA126162"
#Setup our MQTT client and security certificates
#Make sure your certificate names match what you downloaded from AWS IoT
mqttc = AWSIoTMQTTClient(ID)
# Validar que se esta usando la region de us-east-1 para que el apuntador funcione
mqttc.configureEndpoint("COLOCAR PUNTO DE ENLACE AWS IOT AQUI",8883)
#
# IMPORTANTE 
# Cambiar los nombre de tcu.private.key y tcu.private.key  por los nombres correctos de los certificados
mqttc.configureCredentials("./root-CA.crt","./XYZ.private.key","./XYZ.cert.pem")
#Function to encode a payload into JSON
def json_encode(string):
    return json.dumps(string)
mqttc.json_encode=json_encode
#Declaring trip_id variables
trip_id = str(uuid.uuid4())
# esto envia las variables al topico de IoT
def send():
    message = {
    "name": "speed",
    "value": 87,
    "id": ID,
    "trip_id": trip_id
    }
    # se codifica el archivo JSON
    message = mqttc.json_encode(message)
    mqttc.publish("tcu/vehicle/"+ID, message, 0)
    print ("Message Published" + message)
    #Connect to the gateway
mqttc.connect()
print ("Connected")
#Loop until terminated
while True:
    send()
    time.sleep(1)
mqttc.disconnect()
#To check and see if your message was published to the message broker
#go to the MQTT Client and subscribe to the iot topic and you should see
#your JSON Payload

Salvar el archivo y realizar las siguientes modificaciones: Se requiere obtener el certificado root, para lo cual en la parte de Terminal de Cloud9 ejecutar el siguiente comando en el mismo directorio que el archivo python:

curl https://www.amazontrust.com/repository/AmazonRootCA1.pem > root-CA.crt

Obtener el endpoint de AWS para que el dispositivo se conecte, este se obtiene en la sección de Configuración (hasta abajo del menu de IoT Core) como se muestra en la imagen y copiar Punto de enlace

Copiar este dato en el siguiente renglón:

mqttc.configureEndpoint("COLOCAR PUNTO DE ENLACE AWS IOT AQUI",8883)

Y modificar los nombres de los certificados por los que se generaron al crear el dispositivo en la linea 22

mqttc.configureCredentials("./root-CA.crt","./XYZ.private.key","./XYZ.cert.pem")

Salvar el archivo y en Terminal de Cloud9 ejecutar:

python device1.py

Deben observarse los siguientes mensajes:

Connected
Message Published{"name": "speed", "value": 87, "id": "1HGCP2F31BA126162", "trip_id": "fabc3083-e34b-429f-8986-382e9754a435"}
Message Published{"name": "speed", "value": 87, "id": "1HGCP2F31BA126162", "trip_id": "fabc3083-e34b-429f-8986-382e9754a435"}
Message Published{"name": "speed", "value": 87, "id": "1HGCP2F31BA126162", "trip_id": "fabc3083-e34b-429f-8986-382e9754a435"}

Con lo que el dispositivo comenzara a enviar mensajes a AWS IoT Core, estos se pueden ver en IoT Core en la sección de Actuar y luego Pruebas Y en la sección de Suscribir ingresar el símbolo: # . La pantalla deberá quedar así:

Ya para terminar es posible ver las conexiones hechas, los protocoles y la cantidad de mensajes recibidos en la sección de Monitorización hasta arriba a la derecha en el menu.

Regresamos al IDE de Cloud9 y detenemos la ejecución con Ctrl+C