1.3.4 天气控制加湿
更新时间:2019-05-25 19:32:44
目标
当前模板可以让您学习如何根据阿里云的API返回结果控制设备。可以用于天气,图像识别,机器学习等场景。
说明
有一个空气加湿器,根据天气预报的湿度结果决定开启与否。如果湿度<30则开启,否则不开启。
创建产品
本次需要创建一个产品——一个空气加湿器(开关状态一个布尔型属性)
创建一个空气加湿器产品。
添加一个开关功能。
创建一个设备。
创建服务
创建一个服务。
选择一个HTTP请求(原API输入)节点。在右侧栏修改其Action参数为weather(旧版需要"/"前缀,新版不需要了)。
3.添加一个API输入参数。由于后面查询天气的时候需要用到所在城市,因此API参数设定为字符“cityId”,如图。
添加一个云市场API节点,改名为墨迹天气。配置项先留空。
打开新页面前往阿里云市场选择API。这里由于是调试我们选择免费版的墨迹天气,点击购买按页面提示完成购买即可。
进入控制台则可以看到自己购买的API,APPCODE等信息。这里不要关闭页面,后面还会用到。
此时返回服务开发,点击云市场API节点进入右侧的配置栏。可以先填入请求方式(这里为POST),调用地址等。
APPCODE则打开第6步中的页面。复制到配置项内。注意,阿里云文档要求调用格式为"APPCODE"+[半格空格]+[APPCODE],我们这里只需要直接输入真正的APPCODE即可。正常情况下编码方式不需要变化。
根据API官方提供的调用参数说明(见下图),我们需要两个入参——一个cityId一个token。填写方法如图:
cityId的对应数值可以查看如下列表。
token需要前往API网关进行查看(需要选择区域——华北2)。也可以查看墨迹天气提供的文档。
动态入参
我们这里采用了动态参数的方法承接API的入参“cityId”,方法为使用“”代替静态值(如“20”)。
query对象即API入参的对象。我们可以在日志内看到它的结构是直接把API的入参作为子对象。因此只需要使用query.cityId调用即可。
由于我们不知道墨迹天气的返回数据结构,因此我们可以先在末尾添加一个HTTP返回节点(原API输出),让整个服务完成最小闭环,然后进行部署调试获取返回结果。HTTP返回节点不需要任何配置。
点击部署。部署完成后点击调试。输入一个cityid作为调试入参(20为北京)。
可以查看返回信息结构。看到我们的湿度是放在data下的condition下的humidity里的。我们后面需要使用payload.data.condition.humidity调用对应的api返回结果。
添加一个路径选择节点(原条件节点),然后连线墨迹天气节点。输入配置,第一个框选择“墨迹天气”,第二个框输入data.condition.humidity。下面路径添加条件判断>静态值30,<=静态值30两个条件。删除默认的第三条路径。
选择节点列表右上方的“设备”tab,找到“智能加湿器”节点。右侧配置项如第二张图所示。这个是用于打开加湿器的,因此属性“开关”选择“true”。
同理配置另一个关闭加湿器的设备节点。
由于这个服务由HTTP请求触发,因此在每个路径的最后都要添加一个HTTP返回。HTTP返回使用默认配置即可。
进行部署调试。
查看调用结果,可以在日志看到当前湿度为40,服务执行了路径2。自此天气控制加湿完成。
本次开发的服务作为一个API,可以被web可视化开发进行调用或直接右键点击“查看API详情”获取外部调用帮助。