鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
在前面的内容中,已经实现了云捐助物联网IoT的产品及设备设置,并且使用华为云Iot设备的在线调试工具进行命令下发的调试,这里也可以通过华为Iot物联网提供的MQTT模拟器进行连接。
一、华为Iot物联网中的MQTT模拟器连接
华为IoT物联网的直实设备可以使用MQTT模拟器,下载地址可以通过点击华为Iot产品实例页面左侧的“产品文档”实现查找,如下图所示。
点击“产品文档”后,在左侧的搜过框中输入“MQTT”,然后进行搜索。如下图所示。
这里的MQTT就是使用物联网进行连接实体的协议。这里搜索出来的结果如下图所示。
这里点击搜索到的第一个链接“设备接入IoTDA”,在左侧“设备侧开发”条目下的“使用MQTT Demo接入”中有“使用MQTT.fx检测”,这里的模拟器名称就是MQTT.fx,如下图所示。
这里在左侧导航条中可以看到“使用MQTT.fx检测”,点击这个条目项,右侧帮助文档在“连接鉴权”中可以看到“下载”的链接。如下图所示。
点击“下载”可以完成MQTT.fx的下载,这就是MQTT的模拟器,下载后的文件如下图所示。
下载后的文件通过双击,在每个界面中点击“下一步”即可完成安装,安装后在windows系统打开“开始”图标,可以搜索到“MQTT.fx”的应用图标,如下图所示。
这里双击搜索到的程序“MQTT.fx”的应用图标,出现的界面如下图所示。
在这个界面中可以完成华为云IoT设备的连接,不过这里需要先完成设置,再进行连接。在界面中点击“齿轮”图标进行设置,如下图所示。
这里需要设置的参数需要在华为IoT的云平台中进行查询。首先进入到华为IoT产品实例的“所有设备”界面,如下图所示。
在设备界面中,找到云捐助的设备“云捐助电子证件”,在当前设备后面有对应的“详情”按钮,如下图所示。
这里点击“详情”进入到“云捐助电子证件”的详情页面,可以看到页面中有“MQTT的连接参数”项,如下图所示。
这里点击“MQTT的连接参数”后面的“查看”按钮,就可以看到MQTT的连接参数。现在需要把连接参数填入到MQTT.fx模拟器设置中,当点击MQTT.fx启动界面的“齿轮”图标时,弹出的界面中左侧最底端有一个“+”(加号)按钮,如下图所示。
这里点击“+”(加号)按钮,右侧出现MQTT.fx连接参数的实例设置内容,把华为IoT产品实例设备详情页面中MQTT连接参数中的client_id复制到MQTT.fx连接参数设置内容的ClientID输入中,如下图所示。
这里MQTT连接参数中的port端口号保持不变,仍然使用1883,然后需要把华为IoT产品实例设备详情页面中MQTT连接参数中的hostname复制到MQTT.fx连接参数设置内容的“Broker Address”按输入中,如下图所示。
下面需要设置MQTT.fx模拟器连接的用户名和密码,把华为IoT产品实例设备详情页面中MQTT连接参数中的username和password复制到MQTT.fx连接参数设置内容的“username”和“password”的输入框中,设置MQTT.fx的username和password需要点击界面中部导航的“User Credentials”。如下图所示。
这些参数配置后,就完成了模拟器MQTT.fx的设置,点击“Apply”和“确定”就完成了MQTT.fx模拟器的配置。配置成功后,可以点击“齿轮”图标后面的connect连接按钮,如下图所示。
点击“连接”后当前的“Connect”按钮状态虚化,后面的“DisConnect”关闭按钮文字变得很明显,意思可以点击“DisConnect”关闭连接,此时连接已正常,从导航中的Log日志中可以看到连接的客户端id。如下图所示。
同时因为有了真实设备的存在,“云捐助电子证件”在华为IoT产品实例所有设备列表也由“离线状态”变成“在线状态”,如下图所示。
这里在华为IoT产品实例所有设备列表中的“云捐助电子证件”设备后面点击“调试”,如下图所示。
点击“调试”后再次进入到在线设备调试的页面,继续在产品的命令中输入属性的值,点击“发送”按钮,如下图所示。
点击“发送”按钮之后,在MQTT.fx模拟器的Log日志中可以看到“messageArrived”信息到达的字样,但是没有显示出数据,如下图所示。
在日志中的“messageArrived”信息到达的后面有一个“topic”字样,“topic”后面显示了一个地址,如下图所示。
对于客户端来说,如果需要显示返回的数据结果,需要开启订阅的功能,这个地址就是MQTT订阅服务器属性数据的地址,这里我们点击MQTT.fx模拟器界面的“Subscribe”选项卡,进入到MQTT.fx模拟器的订阅界面。
然后把日志中的topic主题后面的地址复制到“Subscribe”选项卡界面的输入框中,注意这个地址后面是request请求id是随机产生的,这里不能获取到,因此topic地址到command就停止了,后面使用#号结束。如下图所示。
把Log日志中的地址经过截取填入“Subscribe”的订阅界面后,可以点击输入地址后面的“Subscribe”的订阅按钮。如下图所示。
点击“Subscribe”的订阅按钮后,按钮变虚,然后回到网页中的华为IoT产品实例设备的调试页面,继续点击“发送”指令。如下图所示。
发送后,在IoT平台中可以看到发送的结果。如下图所示。
下面切换到MQTT.fx模拟器的“Subscribe”的订阅界面,就可以看到IoT平台发送指令携带的信息,如下图所示。
在实际设备中,mystar的属性变量可能就对应C语言操作硬件的变量,通过这个变量控制实际卡片中的功能,比如这里可以过mystar值决定云捐助爱心卡中亮几个灯。
MQTT.fx也可以把属性的改变上报到IoT平台,这里需要点击MQTT.fx模拟器的“Publish”选项卡,如下图所示。
当“云捐助电子证件”的mystar变量值发生变化时就需要上报给IoT平台,这里可以通过MQTT的产品文档查询属性上报的接口。如下图所示。
在MQTT的设计指南中,有API参数,在这里有使用MQTT的设备上报的相关示例,如下图所示。
图中的topic就是设备属性上报的地址,数据格式中需要指明产品服务的id,产品修改的属性,还有event_time的上报属性时间戳。这里把文档中的topic地址复制到MQTT.fx模拟器的Publish选项卡的输入框中,如下图所示。
复制接口后,这时有一个device_id需要把MQTT.fx模拟器Log日志中的device_id复制过去,如下图所示。
MQTT.fx模拟器中上报的地址填写好后,再进行上报参数的填写,其数据从MQTT文档中复制过来,然后只保留其中一条数据即可。如下图所示。
复制在services中保留一条数据,并改变service_id,这个service_id就是华为IoT平台产品实例中产品详情中创建过的服务列表,如下图所示。
这里服务列表中的名称就是service_id,把这个service_id复制到MQTT.fx模拟器的“Publish”选项卡中的参数设置内容中,并设置调用的properties属性名称,这里是mystar的捐赠星级,最后定义时间戳,如下图所示。
### 在MQTT.fx中设置结束上报属性后,就可以点击“Publish”按钮进行上报,如下图所示。