IoT 的使用还是有一些坑。按照一些教程或文档操作,一不注意,可能就会出现无法理解,令人抓狂的错误。
今天我试用了一下 IoT,将实验过程记录了一下,希望对你帮助。
文档上讲,可以使用 MQTT 快速开始。
可以从这里( http://www.jensd.de/apps/mqttfx/1.7.1/ )下载这个软件。
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows、Mac、Linux 操作系统,可以快速验证是否可与 IoT Cloud 进行连接,并发布或订阅消息。
但是试用了一下,这个软件是方便我们 setup 起一个客户端,以连接腾讯云的 IoT 服务器,以便测试我们在腾讯云网站上创建的产品和设备是否可用。
但这个测试功能,本身腾讯云网站上就可以提供了,所以这个 MQTT,对于想编程入门的人,意义不大。
接下来,我们看如何以编程的方式入门。
首先,到这里(https://console.cloud.tencent.com/iotexplorer)新建 IoT 项目。
在新建项目页面,填写项目基本信息。例如项目名称:输入“智能灯演示”或其他名称。项目描述:按照实际需求填写项目描述。
项目创建好了,单击项目,下一步便是创建产品。在新建产品页面,填写产品基本信息。
产品名称:输入“智能灯”或其他产品名称。
产品类型:选择“智慧城市”>“公共事业”>“路灯照明”。
设备类型:选择“设备”。
认证方式:选择“密钥认证”。
通信方式:随意选择。
其他都为默认选项。
在这里地方,如果产品品类选择智能城市的路灯照灯,它将为我们自动生成该分类所需要的基本数据模板。这个数据模板,相当于我们在 Socket 通讯中定义的包数据结构。
在这个地方,LoRaWAN 是 LoRa 联盟推出的一个基于开源的 MAC 层协议的低功耗广域网(Low Power Wide Area Network, LPWAN)标准。这一技术可以为电池供电的无线设备提供局域、全国或全球的网络。LoRaWAN 瞄准的是物联网中的一些核心需求,如安全双向通讯、移动通讯和静态位置识别等服务。该技术无需本地复杂配置,就可以让智能设备间实现无缝对接互操作,给物联网领域的用户、开发者和企业自由操作权限。
在创建了产品之后,接下来单击产品,进去还需要创建设备。例如 dev001。由于之前选择了路灯照明,这里系统会我们自动生成一个功能字段,是 power_switch,代表开关。
我们还可以加上别的一些功能,例如 brightness、color、name。这三个功能,是示例中都有的字段。我们还可以添加其它名称的字段,但相应的 C 代码也要做对应的处理。
创建了设备之后,接下来需要前往这里(https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c.git)下载源码,这是 IoT 的 C SDK 源码,同时里面有 sample 示例。
这个源码下载后,编译,Mac/Linux 环境下出现 cmake: command not found 这样的错误。
在 Mac 上可以前往这里( http://www.cmake.org/ )下载安装 cmake。
但是这个网址今天很难下载,要几个小时。这与带宽无关,200Mb 宽带也是这样。在这里地方( https://www.macjb.com/mac/4670.html )有一个国内版本可以安装。
安装了以后,Mac 仍然缺少其它 Linux 类库,会有其它编译错误出现。所以这个 C SDK,如官方文档所讲,它就是需要在一台 Linux 机器上编译的。
一般我们工作不使用 Linux 系统,可以找一台 Linux 云服务器,使用 ssh 指令远程上去操作。云服务器的系统,可以选择 ubuntu。
在 Linux 系统上,也会遇到 cmake 找不到的错误。可以使用 apt 安装:
代码语言:javascript复制sudo apt install cmake
安装了 cmake 依赖之后,就可以运行./cmake_build.sh 指令进行编译了,这时候大概率就要编译成功。如果想要运行 demo,还需要修改 device_info.json 文件。这里面放置的是配置,不然每个 demo 它怎么区分连接哪个服务器呢。
这个配置文件很关键。
代码语言:javascript复制{ "auth_mode":"KEY", "productId":"K0ALCCZPL7", "productSecret":"jDBCZB8UPY9lnTnqmSmzhN8b", "deviceName":"dev001", "key_deviceinfo":{ "deviceSecret":"BqKurFuGaxASOZUIJhMpFQ==" },}
在此之前,没有人告诉你,这个地方的 deviceSecret,是设备的密钥,是以“==”结尾的。而上面的 productSecret,是产品密钥,默认它是不存在的,它需要我们单击产品属性面板中的“动态注册”开关,然后就能可以看到一个 ProductSecret 值了。
如果上面的配置文件没有配置,或者将 productSecret 与 deviceSecret 写反了位置,连接的时候,终端会一直报 ssl_conf_psk fail: 0x7100 error 这样的错误。
如果以上步骤都没有搞错,终端作为一盏假想的“灯”,现在已经可以连接上 IoT 服务器了。我们在腾讯云网站上,此时将能看到设备日志,这里面有终端里的“灯”定时 push 来的数据。
绝对不能写错配置字段,否则头发会出许多油。有问题欢迎留言。
2020年08月23日