[原创] 【NXP IoT Module评测】点个云灯

ljj3166   2018-7-7 16:19 楼主
对不起各位看客,还是在点个灯 在AWS的云平台服务中 终端设备,比如这次的NXP IoT Module是以shadow的形式存在 个人理解,无论是单板还是终端应用,只要证书和密匙正确 都能够连接上这个shadow,完成信息的交互 因为AWS仅提供了IoT Core的服务 并未提供用户仪表之类的界面 所以要控制终端设备,还需要自己编写应用程序 鉴于NXP和AWS的物联网解决方案的核心是MQTT 加上AWS云页面访问的蜗牛速度 MQTT具体怎么实现,这里就懒得去深究了 这货的主要动作,就是订阅(Subscribe)和发布(Publish) 所以这里使用一个MQTT调试神器----------MQTT.FX 以下操作需要的参数和文件可以去这个帖子看看:【NXP IoT Module评测】IoT开发环境搭建 1.png 点击那个小齿轮,进入连接配置界面 2.png 点击左下角“+”号,新增一个连接配置 Broker Address中填入事物影子的URL Broker Port在代码目录lpc54018iotmodule_aws_shadow_wifi_qspi_xip\amazon-freertos\include\aws_clientcredential.h中有确定
  1. /*
  2. * Port number the MQTT broker is using.
  3. */
  4. #define clientcredentialMQTT_BROKER_PORT 8883
嗯,填上8883即可 Client ID可填可不填,如果要填的话,最好填上影子事物的名称 楼主的是NXPIoTBoard 接下来进入SSL/TLS页面 3.png 使能SSL/TTL,并选择Self signed certificates 其中CA File是安全连接AWS所需要的根证书文件,这里直接附上:
VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem (1.72 KB)
(下载次数: 0, 2018-7-7 15:22 上传)
Client Certificate File是连接证书 Client Key File就是私有密匙了 分别加载上 最后勾选上PEM Formatted 连接配置就设置妥了 回到主页面,点击Connect,可以发现能够正常连接上你的shadow Thing了 4.png 注意要点击左下角的scan 推送的Topics都在这里被扫描到 连接上单板,就会发现,订阅和推送都开始工作 5.png 左下角显示出订阅和推送的Topic,右下角则是具体的payload 专门上AWS看了一下Topic 6.png AWS IoT Core预留的格式和软件扫描到的Topic基本一致 工程代码的aws_shadow.c文件中,其实已经定义了类似的字符串 7.png 这里楼主自己定义了一个LED的topic #define shadowTOPIC_OPERATION_LED "led" #define shadowTOPIC_UPDATE_LED shadowTOPIC_PREFIX shadowTOPIC_OPERATION_LED 依葫芦画瓢撸了几行
  1. #define shadowLED_JSON \
  2. "{" \
  3. ""state":{" \
  4. ""desired":{" \
  5. ""LEDstate":"%s"" \
  6. "}" \
  7. "}," \
  8. ""clientToken": "token-%d"" \
  9. "}"
  10. static uint32_t prvGenerateLEDJSON( ShadowQueueData_t * const pxShadowQueueData,
  11. uint8_t ucBulbState )
  12. {
  13. /* Map cBulbState to strings. */
  14. static const char * const pLED[ 2 ] = { "0", "1" };
  15. /* Generate JSON. */
  16. return ( uint32_t ) snprintf( ( char * ) pxShadowQueueData->pcUpdateBuffer, shadowDemoBUFFER_LENGTH,
  17. shadowLED_JSON,
  18. pLED[ ucBulbState ],
  19. ( int ) xTaskGetTickCount() );
  20. }
  21. ShadowReturnCode_t SHADOW_Led( ShadowClientHandle_t xShadowClientHandle,
  22. ShadowOperationParams_t * const pxUpdateParams,
  23. TickType_t xTimeoutTicks )
  24. {
  25. ShadowOperationCallParams_t xUpdateCallParams;
  26. configASSERT( ( ( BaseType_t ) xShadowClientHandle >= 0 &&
  27. ( BaseType_t ) xShadowClientHandle < shadowMAX_CLIENTS ) ); /*lint !e923 Safe cast from pointer handle. */
  28. configASSERT( ( pxUpdateParams != NULL ) );
  29. configASSERT( ( pxUpdateParams->pcThingName != NULL ) );
  30. configASSERT( ( pxUpdateParams->pcData != NULL ) );
  31. configASSERT( ( pxUpdateParams->xQoS == eMQTTQoS0 ||
  32. pxUpdateParams->xQoS == eMQTTQoS1 ) );
  33. xUpdateCallParams.xShadowClientID = ( BaseType_t ) xShadowClientHandle; /*lint !e923 Safe cast from pointer handle. */
  34. xUpdateCallParams.xOperationName = eShadowOperationUpdate;
  35. xUpdateCallParams.pcOperationName = shadowTOPIC_OPERATION_UPDATE;
  36. xUpdateCallParams.pcOperationTopic = shadowTOPIC_UPDATE_LED;
  37. xUpdateCallParams.pcPublishMessage = pxUpdateParams->pcData;
  38. xUpdateCallParams.ulPublishMessageLength = pxUpdateParams->ulDataLength;
  39. xUpdateCallParams.pxOperationParams = ( ShadowOperationParams_t * ) pxUpdateParams;
  40. xUpdateCallParams.xTimeoutTicks = xTimeoutTicks;
  41. return prvShadowOperation( &xUpdateCallParams );
  42. }
再爬虫一下 8.png 可以发现,软件已经能抓取到新定义的LED这个Topic了 json的内容也都能正常识别 接下来点灯的工作就是配置配置外设 操作操作字符串 然后拉高拉低IO口了 这里就不啰嗦了 处理好单板的代码 接下来需要在AWS云上配置出站入站的Policy 需要新建一个Policy,并与证书进行绑定 新建的策略---NXPLedPolicy: 10.png 标红的地方需要填上策略ARN标识 也就是下图标红的地方 11.png 注意,上面的策略可能有点和单板的topic对不上标,正确的被楼主一不小心删掉了 不过过程和需要填写的东西大同小异 这里懒得再去折腾了 然后在安全--证书--附加策略中把NXPLedPolicy这个策略绑定就ok了 12.png | | 13.png 折腾完上面的操作,大汗淋漓...... 在软件的Pulish页面上操作操作 9.png 直接上个动图 ezgif-4-f4a35e6a34.gif 好了,灯点起来了...... 还有个底板的外设没造 没劲去折腾了.... 谁收? 此内容由EEWORLD论坛网友ljj3166原创,如需转载或用于商业用途需征得作者同意并注明出处 本帖最后由 ljj3166 于 2018-7-7 16:22 编辑
So TM what......?

回复评论 (3)

灭〇回复,人人有责
So TM what......?
点赞  2018-7-7 16:40
不错
点赞  2018-7-9 01:53
顶一个!!
点赞  2018-8-15 11:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复