物联网全栈教程-从云端到设备(十一)
一
千千万万的物联网设备通过ALink协议接入到了云端,它们不断地按照ALink协议的规范向云端汇报数据,同时也一直在等待服务器下发一些数据并处理这些数据。关于物联网设备端如何搞定这些数据,零妖老哥会在下一篇文章中以一个型号叫做STM32F103的单片机为例子进行硬件电路和程序代码的详细讲解,不要说你没有基础什么都不懂,你要是没有打开电脑上网的基础的话就关闭这篇文章吧(⊙o⊙ )。
今天这篇文章零妖将告诉你云端怎么调用设备的数据。调用设备数据,给设备下发数据,获取设备当前是否在线等等,都是通过调用阿里云提供的API(相当于一个子函数,运行一下出一个结果那种)来实现的。我们就以一个API的使用方法为例子进行示范,起一个抛砖引玉的作用。
二
零妖在上一章介绍了一种方法,在网页上显示了一个仪表盘,今天就来尝试一下将设备上报的温度数据显示到仪表盘上。
在LinkDevelop平台中定义好一个产品后,你会得到一个产品的IoT-TSL(物的描述语言)。在云端看来,设备无非就是一串串符合ALink协议规范的JSON字符串。零妖老哥当初定义物联网弹幕器这个设备有两个属性,一个是温度,一个是弹幕。
好了,我们的目标很明确了,我们要通过调用API的方式获取设备的一个属性,即获取温度这个属性。请你打开这个网址,找到 物的管理服务 里面的 获取物的指定属性快照数据 这个API的官方帮助文档。
https://linkdevelop.aliyun.com/docCenter#/api/4
然后就你就可以看到关于这个API的使用方法示例了,其实很简单,只需要修改一下他们例程里面的参数,然后通过例程上给的方法调用一下,就可以得到一个返回值,这个返回值里面会有一个参数就是我们想得到的温度属性的数值。
三
撸起袖子开始抄!复制,粘贴!注意一下哈,这里面也import了一个东西,其实是导入了另外一个新的组件,名字叫做 @bone/linkdevelop-sdk ,你要自己安装一下。方法在零妖的上一篇文章中已经介绍了,不再说了啊。然后我们要修改里面的内容。你需要进入你的 测试设备 这个页面,读取两个参数如下图。这里得到的参数是 ProductKey 和 ProductSecret 。
然后去 功能定义 里看一下温度属性的标识符:
最后把上述得到的三个参数复制到代码里,替换原来的数值。
四
上述代码中有一个地方是零妖自己琢磨了一会后发现的,就是修改仪表盘显示数值的那个变量。有个小技巧,先猜测某个变量最有可能是对应仪表盘显示的,然后修改这个变量,观察结果。(高级的我真的不懂了,谁让我是半路出家的竟会些歪门邪道。)
告诉你一个很神奇的代码,能够提高调试代码的效率: console.log(this.Temperature); ,作用是在控制台输出this.Temperature这个变量的内容,你可以修改为任何你想查看的变量。
零妖并不是特别擅长写“云上”这些代码,我只是告诉你一种方法来调用物的属性。其实如果你是专业的云端工程师,到这里就够了,你可以去开发你的代码了,不管你是基于哪个框架的哪种编程语言的,只要会调用API不就行了吗?
五
最后,打开我们的MQTT客户端,模拟设备端发送一个数据过来。仪表盘同步变化了!
阶段小结:如果你看到这里,其实就可以完成云端工程师的工作了。完全可以用MQTT客户端来模拟设备发送数据和接收数据,你就能调试云端和应用端的代码了。关于设备端的研发套路,零妖从下一篇文章开始介绍,主角是STM32F103C8T6这颗单片机!
我已经把前11章的内容制作成为一个总的PDF文件了,非常适合做云端产品的朋友阅读,完全不用硬件就可以调试产品的应用程序,非常方便。需要的朋友加零妖QQ号聊聊吧,记得说你是在技新网看到的信息昂。QQ:1827702167 暗号: 上云