亚马逊 AWS IoT物联网解决方案

AWS IoT 提供将您的物联网设备连接到其他设备和 AWS 云服务的云服务。 AWS IoT 提供设备软件,可帮助您将物联网设备集成到 AWS IoT基于解决方案的解决方案中。如果您的设备可以连接 AWS IoT,则 AWS IoT 可以将它们连接到 AWS 提供的云服务。

在这里插入图片描述


aws-iot-device-sdk-embedded-C 软件架构

在这里插入图片描述

证书设置

#define  AWS_IOT_ENDPOINT "azur1d6tviuuy.ats.iot.cn-north-1.amazonaws.com.cn"
//    #error "Please define AWS IoT MQTT broker endpoint(AWS_IOT_ENDPOINT) in demo_config.h."
//#endif
//#ifndef ROOT_CA_CERT_PATH
#define  ROOT_CA_CERT_PATH "/dev/shm/embedApplication/aws_iot_sdk_embeded/root-CA.crt"

//    #error "Please define path to Root CA certificate of the MQTT broker(ROOT_CA_CERT_PATH) in demo_config.h."
//#endif
#ifndef CLIENT_IDENTIFIER
  #error "Please define a unique client identifier, CLIENT_IDENTIFIER, in demo_config.h."
#endif

/* The AWS IoT message broker requires either a set of client certificate/private key
* or username/password to authenticate the client. */

#define  CLIENT_CERT_PATH "/dev/shm/embedApplication/aws_iot_sdk_embeded/yiwukong.cert.pem"
#define  CLIENT_PRIVATE_KEY_PATH "/dev/shm/embedApplication/aws_iot_sdk_embeded/yiwukong.private.key"

运行异常报错:

[INFO] [SHADOW_DEMO] [shadow_demo_helpers.c:392] Establishing a TLS session to my-endpoint.iot.us-east-1.amazonaws.com:8883.
[INFO] [MQTT] [core_mqtt.c:885] Packet received. ReceivedBytes=2.
[INFO] [MQTT] [core_mqtt_serializer.c:970] CONNACK session present bit not set.
[INFO] [MQTT] [core_mqtt_serializer.c:912] Connection accepted.
[INFO] [MQTT] [core_mqtt.c:1565] Received MQTT CONNACK successfully from broker.
[INFO] [MQTT] [core_mqtt.c:1831] MQTT connection established with the broker.
[INFO] [SHADOW_DEMO] [shadow_demo_helpers.c:683] MQTT connection successfully established with broker.
[INFO] [SHADOW_DEMO] [shadow_demo_helpers.c:710] A clean MQTT connection is established. Cleaning up all the stored outgoing publishes.
[INFO] [SHADOW_DEMO] [shadow_demo_helpers.c:793] SUBSCRIBE topic $aws/things/Device-Name/shadow/delete/accepted to broker.
[ERROR] [Transport_OpenSSL_Sockets] [openssl_posix.c:843] Failed to receive data over network: SSL_read failed: ErrorStatus=EVP lib.
[ERROR] [MQTT] [core_mqtt_serializer.c:2400] A single byte was not read from the transport: transportStatus=-1.
[ERROR] [MQTT] [core_mqtt.c:1321] Receiving incoming packet length failed. Status=MQTTRecvFailed
[ERROR] [MQTT] [core_mqtt.c:2193] Exiting process loop due to failure: ErrorStatus=MQTTRecvFailed
[ERROR] [SHADOW_DEMO] [shadow_demo_helpers.c:809] MQTT_ProcessLoop returned with status = 4.
[INFO] [MQTT] [core_mqtt.c:2151] Disconnected from the broker.
[INFO] [SHADOW] [shadow_demo_main.c:906] Demo iteration 1 is successful.
[INFO] [SHADOW] [shadow_demo_main.c:925] Demo completed successfully.

解决方法

{
"Version": "2012-10-17",
"Statement": [
  {
    "Effect": "Allow",
    "Action": "*",
    "Resource": "arn:aws:iot:us-east-1:my-accountId:client/${iot:Connection.Thing.ThingName}"
  },
  {
    "Effect": "Allow",
    "Action": "*",
    "Resource": "arn:aws:iot:us-east-1:my-accountId:client/${iot:Connection.Thing.ThingName}/*"
  }
]
}

aws iot 设置

在这里插入图片描述

服务器段测试运行结果

在这里插入图片描述

  • 设备端运行 log:

/dev/shm/embedApplication/aws_iot_sdk_embeded/cmake-build-debug-develop_amd_linux_docker_enviroment/bin/mqtt_demo_mutual_auth
[INFO] [DEMO] [mqtt_demo_mutual_auth.c:705] Establishing a TLS session to azur1d6tviuuy.ats.iot.cn-north-1.amazonaws.com.cn:8883.
[INFO] [MQTT] [core_mqtt.c:2740] MQTT connection established with the broker.
[INFO] [DEMO] [mqtt_demo_mutual_auth.c:1216] MQTT connection successfully established with broker.


[INFO] [DEMO] [mqtt_demo_mutual_auth.c:1725] A clean MQTT connection is established. Cleaning up all the stored outgoing publishes.


[INFO] [DEMO] [mqtt_demo_mutual_auth.c:1459] Subscribing to the MQTT topic testclient/example/topic.
[INFO] [DEMO] [mqtt_demo_mutual_auth.c:1278] SUBSCRIBE sent for topic testclient/example/topic to broker.


[INFO] [DEMO] [mqtt_demo_mutual_auth.c:1076] Subscribed to the topic testclient/example/topic. with maximum QoS 1.

在这里插入图片描述

更多推荐