查看: 314|回复: 0

[讨论交流] IoT套件测评——物联网初上手+示例代码bug汇报

[复制链接]

IoT套件测评——物联网初上手+示例代码bug汇报


一、准备工作:
1. 访问阿里云套件地址:http://www.dfrobot.com.cn/goods-1896.html 拉到最下面
2. 下载 阿里云IOT入门套件库文件及样例代码:
http://www.dfrobot.com.cn/images/upload/File/20190327164350d56gcn.rar因为本文会报告一个bug,所以这个地址很可能会被修改,所以正确的下载地址:http://www.dfrobot.com.cn/goods-1896.html,为准。)
3. 解压,并将其放在Arduino安装目录的libraries文件夹,
4. 下载套件地址下面的:Starter Kit for Aliyun IoT (教程)
http://www.dfrobot.com.cn/images/upload/File/20190313103347ey6ngg.pdf
然后按照教程先创建一个产品。
因此以上内容不再赘述,本文从创建产品的一个设备开始说起:

二、阿里云平台设置:
找到管理控制台——》产品与服务——》物联网平台
1.png
2.png
点击添加设备,会弹出一下窗口,产品就选择你已经创建的产品,注意以下的DeviceName,在Arduino代码编辑里有用
3.png
点击确认后,
4.png
这里可以一键复制,因为这里的三个内容,都有用到。
三、Arduino设置:
现在我们打开Arduino,选择套件里提供的示例程序(注意:请完成准备工作里库文件的复制)
5.png
并选择开发板:
6.png
然后填写相应的内容:
7.png
其中的ProductKey、DeviceName、DeviceSecret就是刚才一键复制的内容,ClientId可以任意字符,下面的 subTopic和pubTopic在点击设备列表的查看:
8.png
9.png
可以看到,请注意示例代码里的subTopic填写的是第二行有set的全部内容,pubTopic是第一行有post的全部内容(到时我会建议示例里进行修改,有可能这步不用操作了)。
都填写好后,就可以直接编译上传到板子上了,然后将LED灯连接到插有FireBeetle扩展板的ESP32的D2口
由此准备工作即完成,接下来就是如何用搭建好的平台来实现物理设备同阿里云IOT平台上的通信。
四、物联互通配置:
10.png
如图所示,选择开发服务下的 IoT Studio(这里阿里云做了调整,和DF提供的官方教程说明不一样),因为官方教程用的是创建移动可视化开发,我这里选用Web可视化开发,
11.png
点击选择模板,按照提示新建应用。并如下图提示,拖入指示灯和开关。
12.png
选中开关,点击右边属性内容的配置数据
13.png
14.png
选择相应的产品和设备即可,这里的设备属性(灯工作状态)是从哪里来的呢?
15.png
要重新来到产品,点击查看,选择功能定义——》添加功能
16.png
17.png
功能名称任意,标识符很重要!!!数据类型因为灯只有两个状态,所以就用bool型。
添加完成后,重新回到 IoT Studio
18.png

当我们点确定的时候,会弹出一个错误提示,我们按照说明点击在线模拟。
将我们设置的那个标识符,填到Arduino示例代码的Identifier处,重新编译上传
19.png
20.png
当我们点击发送指令的时候,可以看到灯已经亮了。
继续选择,我们刚才拖入的指示灯组件,按照按钮进行同样设置。完成后点击发布。
21.png
22.png
这个链接就是web控制界面了,这时候点击相应按钮,就可以控制灯亮和灯灭了。
1.gif
五、额外说明:
那么说好的Bug在哪里呢?
如果你们按照我的提示来进行操作的话,最后一步点击按钮开关的时候,指示灯是不会随着按钮开关开启和关闭的。
原因是在Arduino的示例代码有问题,第75行源代码为:
[C] 纯文本查看 复制代码
  String tempMseg = "{\"id\":"+ClientId+",\"params\":{\""+Identifier+"\":"+(String)LightStatus+"},\"method\":\"thing.event.property.post\"}";

应改为:
[C] 纯文本查看 复制代码
  String tempMseg = "{\"id\":\""+ ClientId +"\",\"params\":{\""+Identifier+"\":"+(String)LightStatus+"},\"method\":\"thing.event.property.post\"}";

这样上行的时候,就不会json格式错误。
另外,有个代码修改建议:示例代码的第26,27行设置subTopic和pubTopic的时候
[C] 纯文本查看 复制代码
/*需要上报和订阅的两个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

按照阿里云的格式,其实可以用变量进行替换,而不用硬编码。
如:
[C] 纯文本查看 复制代码
const char * subTopic = "/sys/" + ProductKey + "/" + DeviceName + "/thing/service/property/set";//****set
const char * pubTopic = "/sys/" + ProductKey + "/" + DeviceName + "/thing/service/property/post";//******post

这样在配置的时候,就不用再修改这里的内容了。


套件来源:DFRobot创客商城
产品链接:http://www.dfrobot.com.cn/goods-1896.html

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail