2822| 0
|
[讨论交流] IoT套件测评——物联网初上手+示例代码bug汇报 |
IoT套件测评——物联网初上手+示例代码bug汇报 一、准备工作: 1. 访问阿里云套件地址:https://www.dfrobot.com.cn/goods-1896.html 拉到最下面 2. 下载 阿里云IOT入门套件库文件及样例代码: https://www.dfrobot.com.cn/images/upload/File/20190327164350d56gcn.rar(因为本文会报告一个bug,所以这个地址很可能会被修改,所以正确的下载地址以:https://www.dfrobot.com.cn/goods-1896.html,为准。) 3. 解压,并将其放在Arduino安装目录的libraries文件夹, 4. 下载套件地址下面的:Starter Kit for Aliyun IoT (教程) https://www.dfrobot.com.cn/images/upload/File/20190313103347ey6ngg.pdf 然后按照教程先创建一个产品。 因此以上内容不再赘述,本文从创建产品的一个设备开始说起: 二、阿里云平台设置: 找到管理控制台——》产品与服务——》物联网平台 点击添加设备,会弹出一下窗口,产品就选择你已经创建的产品,注意以下的DeviceName,在Arduino代码编辑里有用。 点击确认后, 这里可以一键复制,因为这里的三个内容,都有用到。 三、Arduino设置: 现在我们打开Arduino,选择套件里提供的示例程序(注意:请完成准备工作里库文件的复制) 并选择开发板: 然后填写相应的内容: 其中的ProductKey、DeviceName、DeviceSecret就是刚才一键复制的内容,ClientId可以任意字符,下面的 subTopic和pubTopic在点击设备列表的查看: 可以看到,请注意示例代码里的subTopic填写的是第二行有”set”的全部内容,pubTopic是第一行有post的全部内容(到时我会建议示例里进行修改,有可能这步不用操作了)。 都填写好后,就可以直接编译上传到板子上了,然后将LED灯连接到插有FireBeetle扩展板的ESP32的D2口。 由此准备工作即完成,接下来就是如何用搭建好的平台来实现物理设备同阿里云IOT平台上的通信。 四、物联互通配置: 如图所示,选择开发服务下的 IoT Studio(这里阿里云做了调整,和DF提供的官方教程说明不一样),因为官方教程用的是创建移动可视化开发,我这里选用Web可视化开发, 点击选择模板,按照提示新建应用。并如下图提示,拖入指示灯和开关。 选中开关,点击右边属性内容的配置数据 选择相应的产品和设备即可,这里的设备属性(灯工作状态)是从哪里来的呢? 要重新来到产品,点击查看,选择功能定义——》添加功能 功能名称任意,标识符很重要!!!数据类型因为灯只有两个状态,所以就用bool型。 添加完成后,重新回到 IoT Studio 当我们点确定的时候,会弹出一个错误提示,我们按照说明点击在线模拟。 将我们设置的那个标识符,填到Arduino示例代码的Identifier处,重新编译上传 当我们点击发送指令的时候,可以看到灯已经亮了。 继续选择,我们刚才拖入的指示灯组件,按照按钮进行同样设置。完成后点击发布。 这个链接就是web控制界面了,这时候点击相应按钮,就可以控制灯亮和灯灭了。 五、额外说明: 那么说好的Bug在哪里呢? 如果你们按照我的提示来进行操作的话,最后一步点击按钮开关的时候,指示灯是不会随着按钮开关开启和关闭的。 原因是在Arduino的示例代码有问题,第75行源代码为: [mw_shl_code=c,true] String tempMseg = "{\"id\":"+ClientId+",\"params\":{\""+Identifier+"\":"+(String)LightStatus+"},\"method\":\"thing.event.property.post\"}";[/mw_shl_code] 应改为: [mw_shl_code=c,true] String tempMseg = "{\"id\":\""+ ClientId +"\",\"params\":{\""+Identifier+"\":"+(String)LightStatus+"},\"method\":\"thing.event.property.post\"}";[/mw_shl_code] 这样上行的时候,就不会json格式错误。 另外,有个代码修改建议:示例代码的第26,27行设置subTopic和pubTopic的时候 [mw_shl_code=c,true]/*需要上报和订阅的两个TOPIC*/ const char * subTopic = "/sys/a1GSvSic1wv/df_ali2/thing/service/property/set";//****set const char * pubTopic = "/sys/a1GSvSic1wv/df_ali2/thing/event/property/post";//******post[/mw_shl_code] 按照阿里云的格式,其实可以用变量进行替换,而不用硬编码。 如: [mw_shl_code=c,true]const char * subTopic = "/sys/" + ProductKey + "/" + DeviceName + "/thing/service/property/set";//****set const char * pubTopic = "/sys/" + ProductKey + "/" + DeviceName + "/thing/service/property/post";//******post[/mw_shl_code] 这样在配置的时候,就不用再修改这里的内容了。 套件来源:DFRobot创客商城 产品链接:https://www.dfrobot.com.cn/goods-1896.html |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed