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
>> 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
- Service: IoT
- Actions: UpdateThingShadow
- Resources: All resources
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