之前我们动手编程实现了温度上报到阿里云物联网平台,现在我们上报报道腾讯云,二者原理与流程大致相同,我就只简单的说一下不同点和我遇到的问题。源码:https://gitee.com/lastbreath/apue/tree/master/
1.注册登录腾讯云。
2.创建产品
认证方式 在我们测试过程中用哪个都没问题,不过我们编程用的是第二种,因为我们阿里云用的就是密钥认证。证书认证如何编程实现可自行百度。 然后就是数据类型,第二种自定义我没试过,第一种和阿里云一样是json,不过在测试中发现不必你自己生成json格式。腾讯云会自动转换,我们在接下来的测试中可以看到。
由于我们编程是使用的密钥认证,接下来测试密钥认证,所以请读者自行测试证书认证,一定要看官方文档。 确定后 点击产品。 为了省事儿选第一个自动生成。最终结果没有区别。 我没有发现这个设备密钥有什么用,所以直接管理设备。 很熟悉吧,打开MQTT.fx 填入配置文件。 其中 brokeraddress 建议自己翻官方文档。 连接成功。 腾讯云我感觉是要比阿里云简单一些的,我们就不需要配置物模型。 直接订阅或发布后进行调试。 不需要我们自己动手实现json格式。 到这里就测试完了,建议根据官方文档把不会的点弄懂。
源码已给出,下面仅仅说一下我遇到的问题。
建议在ini文件中字符串用双引号括起来,否则使用iniparser_getstring()遇到分号(;)会停止,导致用户名和密码读取不完整,原因我也不知道,可以自行尝试一下。
在主函数的这个循环里,我用不阻塞的mosquitto_loop_start代替了mosquitto_loop_forever,另外,将数据处理打包成一个函数,同时弃用connect的回调函数。 至于原因,读者可以先使用之前阿里云的模式再改用这种模式,就可以发现其中的差别,以及mosquitto_loop_forever and mosquitto_loop_start的区别。