1.3.4 天气控制加湿

优质
小牛编辑
128浏览
2023-12-01

更新时间:2019-05-25 19:32:44

目标

当前模板可以让您学习如何根据阿里云的API返回结果控制设备。可以用于天气,图像识别,机器学习等场景。

说明

有一个空气加湿器,根据天气预报的湿度结果决定开启与否。如果湿度<30则开启,否则不开启。

创建产品

本次需要创建一个产品——一个空气加湿器(开关状态一个布尔型属性)

  1. 创建一个空气加湿器产品。

    |640x

  2. 添加一个开关功能。

    |640x

  3. 创建一个设备。

    |640x

创建服务

  1. 创建一个服务。

    |640x

  2. 选择一个HTTP请求(原API输入)节点。在右侧栏修改其Action参数为weather(旧版需要"/"前缀,新版不需要了)。

    |640x

3.添加一个API输入参数。由于后面查询天气的时候需要用到所在城市,因此API参数设定为字符“cityId”,如图。

|640x

|640x

  1. 添加一个云市场API节点,改名为墨迹天气。配置项先留空。

    |640x

  2. 打开新页面前往阿里云市场选择API。这里由于是调试我们选择免费版的墨迹天气,点击购买按页面提示完成购买即可。

    |640x

  3. 进入控制台则可以看到自己购买的API,APPCODE等信息。这里不要关闭页面,后面还会用到。

    |640x

  4. 此时返回服务开发,点击云市场API节点进入右侧的配置栏。可以先填入请求方式(这里为POST),调用地址等。

    |640x

    |640x

  5. APPCODE则打开第6步中的页面。复制到配置项内。注意,阿里云文档要求调用格式为"APPCODE"+[半格空格]+[APPCODE],我们这里只需要直接输入真正的APPCODE即可。正常情况下编码方式不需要变化。

    |640x

  6. 根据API官方提供的调用参数说明(见下图),我们需要两个入参——一个cityId一个token。填写方法如图:

    |640x

    |640x

cityId的对应数值可以查看如下列表。

|640x

token需要前往API网关进行查看(需要选择区域——华北2)。也可以查看墨迹天气提供的文档

|640x

|640x

|640x

动态入参
我们这里采用了动态参数的方法承接API的入参“cityId”,方法为使用“”代替静态值(如“20”)。

|640x

query对象即API入参的对象。我们可以在日志内看到它的结构是直接把API的入参作为子对象。因此只需要使用query.cityId调用即可。

|640x

  1. 由于我们不知道墨迹天气的返回数据结构,因此我们可以先在末尾添加一个HTTP返回节点(原API输出),让整个服务完成最小闭环,然后进行部署调试获取返回结果。HTTP返回节点不需要任何配置。

    |640x

  2. 点击部署。部署完成后点击调试。输入一个cityid作为调试入参(20为北京)。

    |640x

    |640x

  3. 可以查看返回信息结构。看到我们的湿度是放在data下的condition下的humidity里的。我们后面需要使用payload.data.condition.humidity调用对应的api返回结果。

    |640x

  4. 添加一个路径选择节点(原条件节点),然后连线墨迹天气节点。输入配置,第一个框选择“墨迹天气”,第二个框输入data.condition.humidity。下面路径添加条件判断>静态值30,<=静态值30两个条件。删除默认的第三条路径。

    |640x

  5. 选择节点列表右上方的“设备”tab,找到“智能加湿器”节点。右侧配置项如第二张图所示。这个是用于打开加湿器的,因此属性“开关”选择“true”。

    |640x

    undefined

  6. 同理配置另一个关闭加湿器的设备节点。

    |640x

  7. 由于这个服务由HTTP请求触发,因此在每个路径的最后都要添加一个HTTP返回。HTTP返回使用默认配置即可。

    |640x

  8. 进行部署调试。

    |640x

    |640x

  9. 查看调用结果,可以在日志看到当前湿度为40,服务执行了路径2。自此天气控制加湿完成。

    |640x

  10. 本次开发的服务作为一个API,可以被web可视化开发进行调用或直接右键点击“查看API详情”获取外部调用帮助。

    |640x

    |640x