函数计算CFC

    使用定时触发器根据天气信息控制远程设备

    概述

    CFC函数计算定时读取物联网智能家电设备上报到IoT平台的最新数据,调用天气API获取指定位置的天气信息、空气质量、紫外线等指数,智能控制远程设备,如根据温度指数,自动开启空调;根据PM2.5指数,自动开启、调节空气净化器。IoT平台结合函数计算,能快速有效地控制远程物联网设备,大大降低开发成本。

    适用场景

    • 智能家居、定时获取天气/环境信息
    • 天气、环境污染预警
    • 自动化生产、农业灌溉等

    方案架构

    2.png

    1、智能家电设备通过控制台或API接口接入IoT物接入平台
    2、函数计算定时从IoT平台上读取远程设备上报的数据,提取出城市和经纬度信息
    3、函数计算根据城市和经纬度信息调用云市场的天气API(或其它业务API)
    4、函数计算将处理后的数据推送给远程设备,实现定时控制远程设备

    方案优势

    • IoT物接入平台快速实现端云一体,支持一站式设备管理服务
    • IoT物接入支持原生MQTT协议,开放高效,支持设备安全认证,提供权限管理能力以保障设备安全
    • 接入函数计算,实现定时根据设备信息智能化控制远程设备

    环境准备

    • 配置MQTT的应用客户端,可以快速验证是否可以实现与物接入服务交流发送或者接收消息。登录MQTT.fx官网,找到合适的版本下载并安装MQTT.fx客户端。
    • 安装Python3及以上运行环境

    方案流程

    创建CFC函数

    开通CFC服务

    如果您还没有开通CFC函数,请参考函数计算概述进行开通。
    如果您已经开通CFC服务,可以跳过此步骤。

    创建模版函数

    1、登录百度智能云平台官网
    2、登录成功后,选择"产品服务">"函数计算 CFC",进入"函数列表"页面,点击从模版创建函数,选择IoT-crontab-cfc模版,进入创建函数界面

    function2.png

    3、在弹框中输入函数名称、环境变量(环境变量包括appcode、broker、port、username、password、topic等信息),点击确定
    function3.png

    4、点击确定后,则成功创建一个CFC函数,可以在函数详情页选择函数代码即可查看新建函数代码

    function5.png

    创建IoT物接入项目

    开通物接入IoT Hub服务

    如果您还没有开通IoT物接入服务,请参考IoT Hub开通服务。 如果您已经开通IoT Hub服务,请跳过此步骤。

    创建项目

    1、IoT Hub服务开通后,选择区域进入项目列表,然后点击创建项目

    iot1.png

    2、设置项目名称,选择项目类型(示例中选择设备型),点击提交

    iot2.png

    3、创建成功后,在项目列表中可以看到物接入默认提供的三类地址,选择不同的地址,意味着您可以通过不同的方式连接到百度智能云物接入,具体请参考物接入创建项目

    iot3.png

    获取连接信息

    成功创建物接入项目后,点击项目名称,进入配置物接入设备型项目页面,创建物影子并获取连接信息,具体操作步骤如下:

    1、创建物模型:点击项目名称进入后,选择"物模型",进入物模型列表页面,点击"新建物模型"。填写名称、属性等信息后,点击创建即可。

    iot7.png

    2、创建物影子:左侧选择"物影子",进入物影子列表页面,点击"新建物影子"。输入名称,并选择需要的物模型(这里我们选择了刚才创建的iot_weather),点击创建即可完成,此时会弹出连接信息。

    iot9.png

    3、获取连接信息:物影子创建完成时,会弹出连接信息,建议下载保存备用。

    iot10.png

    4、查看(Topic)列表:MQTT 消息的收发是基于主题的。设备型项目的主题是由系统定义的,可点击相应影子的卡片,通过以下页面查看,可根据实际需求选择主题。每个消息均需为 json 格式。

    iot11.png

    修改CFC函数的环境变量

    购买天气API

    1、访问百度云云市场(https://cloud.baidu.com/market/),搜索"天气"

    weather1.png

    2、本示例中使用"全国天气预报",找到该记录,点击进入

    weather2.png

    3、点击购买

    weather3.png

    4、完成开通后,返回云市场,点击管理控制台,在已开通的服务中找到"云市场",点击进入

    weather4.png

    5、在"云市场">"已购买的服务列表"中可以看到全国天气预报服务,点击管理查看服务详情

    weather5.png

    6、在"全国天气预报"服务详情中,点击交付信息右侧的"显示密钥"查看AppCode

    weather6.png

    7、进入函数详情页,点击环境变量右侧的"编辑",更新环境变量(环境变量也可以在创建函数时一并添加),添加内容如下:

    env1.png

    测试函数

    1、为了验证CFC函数是否可以实现与物接入服务交流发送或者接收消息,您需要登录MQTT.fx官网,找到合适的版本下载并安装MQTT.fx客户端。

    2、打开并配置MQTT客户端,具体请参考测试MQTT客户端连接

    mqtt1.png

    3、点击Connect创建连接,在IoT平台物影子交互页面复制$baidu/iot/shadow/test_weather/update/accepted、$baidu/iot/shadow/test_weather/delta、$baidu/iot/shadow/test_weather/get/accepted并添加订阅

    mqtt2.png

    4、进入CFC函数详情页,点击测试执行,可以查看函数运行成功

    function6.png

    5、查看MQTT客户端,可以看到订阅Topic上已经收到消息

    mqtt3.png

    5、同时进入IoT物接入平台,查看项目物影子详情,可以看到模型数据已经被更新

    iot12.png

    至此CFC函数能够从IoT平台上读取设备信息,调用天气API,根据天气信息处理数据,最后将数据上报给IoT设备

    6、最后需要为CFC函数配置定时触发器触发器,本示例设置每天上午10点触发函数执行,CFC定时触发器的配置请参考CFC定时触发器

    crontab1.png

    7、点击创建后,可以在函数详情触发器列表中可以看到新创建的定时触发器

    contrab2.png

    更多参考

    百度函数计算CFC开发文档:https://cloud.baidu.com/doc/CFC/index.html
    百度物联网IoT Hub开发文档:https://cloud.baidu.com/doc/IOT/index.html

    上一篇
    百度智能小程序使用云开发构建CFC云函数
    下一篇
    使用 Terraform 快速搭建图像处理应用