Conectar Esp2866 (NodeMSU) con AWS-IOT

Es este breve post se detalla el paso a paso de como establecer una conexión http con el servidor de Aws-IoT de amazon con un micro controlador Esp2866(NodeMsu). Esta conexión sera del modo Thing Shadow. Se explicara todo lo necesario como permisos, creacion de un Thing y como utilizar la consola para visaulizar los paquetes enviados a nuestro broker de Aws-Iot.

Dejo links con informacion adicional

https://docs.aws.amazon.com/es_es/iot/latest/developerguide/iot-thing-shadows.html

https://docs.aws.amazon.com/iot/latest/developerguide/thing-types.html

Crear dispositivo en Aws – IoT

>> Manage >> Create
>> Create a Single Thing

>> Add your device

>> Select  «Creating thing without certificate»

Crea usuario para el acceso a Aws IoT con su respectivo grupo y politica de acceso

Ir a la sección «IAM Resources» y el menu «Users » seleccionar  «Add user»

>> Tipear el nombre que quieren para el dispositivo y seleccionar la opción «Programmatic Access»

>> Creamos un grupo para el usuario que estamos generando.

 

>>Dentro del cuadro donde estamos generando el grupo vamos a crear una Policy

>> Esta policy  nos permitirá conectarnos con AWS-IoT Shadow
  • Service: IoT
  • Actions: UpdateThingShadow
  • Resources: All resources
>> Una vez de vuelta en el menú de y atachamos la policy a nuestro grupo
>> Una vez finalizada la creación del usuario no hacemos del keyID and  Secret ID, estos son necesarios para hacer la conexión con AWS-IoT

Cargamos el siguiente código para Esp2866 para hacer la prueba d conexión. Todo lo que esta en negrita en lo que tienen que modificar.

#include <ESP8266WiFi.h>
#include <AmazonIOTClient.h>
#include «ESP8266AWSImplementations.h»

Esp8266HttpClient httpClient;
Esp8266DateTimeProvider dateTimeProvider;

AmazonIOTClient iotClient;
ActionError actionError;

char *ssid=»Tu SSID«;
char *password=»Tu clave WIFI«;

void setup() {
  Serial.begin(115200);
  delay(10);

  // Connect to WAP
  Serial.print(«Connecting to «);
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(«.»);
  }
  Serial.println(«»);
  Serial.println(«WiFi connected»);
  Serial.println(«IP address: «);
  Serial.println(WiFi.localIP());

  iotClient.setAWSRegion(«us-east-2«);
  iotClient.setAWSEndpoint(«amazonaws.com»);
  iotClient.setAWSDomain(«endpoint.us-east-2.amazonaws.com«);
  iotClient.setAWSPath(«/things/INombreGeneradoAnteriorment/shadow»);
  iotClient.setAWSKeyID(«Tu Ked ID«);
  iotClient.setAWSSecretKey(«Tu Secret ID«);
  iotClient.setHttpClient(&httpClient);
  iotClient.setDateTimeProvider(&dateTimeProvider);
}

void loop(){
  char* shadow = «{«state»:{«reported»: {«foobar»: «barbar»}}}»;

  char* result = iotClient.update_shadow(shadow, actionError);
  Serial.print(result);

  delay(600);
}

Para corroborar que todo esta funcionando vamos a ver la actividad de nuestro dispositivo en AWS-IoT

No dirigimos a Aws-Iot >> Manage >> Things >> ElNombreDeNuestroDispositivo >> Menu Shadow.

Aquí veremos lo que enviamos con nuestro microcontrolador Esp2866

Otro modo de ver la actividad en dirigirse a «Activity» y veremos en tiempo real los reportes de actividad

 

Deja una respuesta