【IoT最佳实践】设备获取实时天气信息(API已下架)
本文中调用的天气预报API商品已下架,请自行选择其他天气预报并修改DEMO代码。
---------------------场景说明---------------------
随着技术的发展,物联网设备也越来越智能化,例如可以显示当地的实时天气。
在物联网解决方案中,若由每个设备自己去查询本地实时天气,会有设备端业务逻辑复杂化,查询天气接口调用过于频繁等问题;但若由物联网应用统一调用接口去查询天气再通过物联网平台下发给各个设备,这些问题都能迎刃而解。
在本示例中,我们模拟一个设备上报地区码,物联网平台再上报给应用服务器,应用服务器根据地区码信息查询当地天气信息后再通过物联网平台下发给设备,实现设备获取实时天气信息的功能。
注:本示例运行DEMO的机器需要作为服务器接收物联网平台的推送消息,必须绑定一个外网IP。
---------------------配置设备管理服务---------------------
在设备管理服务中创建产品模型并注册设备。
登录华为云官方网站,访问设备管理服务。
单击“立即使用”进入设备管理控制台。
单击页面右上角的“进入设备管理服务”进入控制台。
在“应用列表”页面中点击应用图标查看应用详情。
重置密钥,并妥善保存重置后的应用ID和密钥。
单击页面左下角的切换左侧菜单,打开“产品模型”页面,单击页面右上角的“新增产品模型 > 本地导入”。
注:本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。
导入样例模型文件,“产品名称”自定义,如“MQTT_Device”。点此获取样例模型文件
进入“设备 > 设备注册”页面,单击“创建”,填写设备注册参数。
选择产品:选择您导入的产品模型,如“MQTT_Device”。
设备识别码:设备唯一物理标识,如IMEI、MAC地址等,用于设备在接入物联网平台时携带该标识信息完成接入鉴权。无真实设备时可随意填写英文字母和数字的组合字符串。
预置秘钥/确认秘钥:原生MQTT设备接入时,暂无作用,可不填写或随意填写。
填写完成后单击“确定”,请注意保存注册成功返回的“设备ID”和“密钥”。
---------------------购买天气预报API---------------------
本文以华为云应用市场提供的天气预报API为例,您也可以使用其他的天气预告API作为数据源。
访问华为云应用市场,购买天气预报API。
购买完成后,从购买页面右上角进入买家中心。
单击天气预报所在行右侧的“管理”。
点击应用信息右边的眼睛图标,查看并记录AppKey和AppSecret。
---------------------开发物联网应用---------------------
开发物联网应用,实现设备上报地区码后应用自动查询当地天气并下发给设备。
本文中使用DEMO进行演示,您可以参考DEMO开发自己的物联网应用进行使用。
点击下载天气应用DEMO。
准备JAVA开发环境并导入DEMO工程,操作方法可参考开发指南。
打开“main.resources > application.properties”,修改配置。
server.port为本DEMO的监听端口,若8099端口已被占用可修改为其他端口。
platformIp和platformPort修改为物联网平台的应用接入地址,可在设备接入服务的管理控制台查看。
appId和secret修改为配置设备管理服务时获取的应用ID和密钥。
subscription_CallbackUrl中的IP部分修改为本机的外网IP,端口部分与server.port保持一致。
deviceId修改为配置设备管理服务时获取的设备ID。
serviceId和method对应产品模型中的下发命令服务和命令,使用本文提供的样例模型时无需修改。
apiKey和apiSecret替换为购买天气预报API时获取的AppKey和AppSecret。
---------------------验证操作---------------------
右键单击“com.huawei.iotplatform.Main > Main.java”,选择“Run As > Java Application”,若控制台显示订阅返回“消息接收服务器搭建完成完成”,表示DEMO运行成功。
使用设备上报数据。
您可以使用配置设备管理服务时注册的真实设备接入平台,上报“areaCode”等于0755的数据。
您也可以使用模拟器模拟设备订阅Topic: /huawei/v1/devices/{deviceId}/command/json(其中{deviceId}需要替换成实际设备ID)后,上报“areaCode”等于0755的数据,操作方法请参考MQTT.fx模拟设备接入。
期望结果:
若您使用真实设备上报数据,设备会收到一条“SET_WEATHER”命令。
若您使用模拟器上报数据,可在“Subscribe”页签查看到平台下发的“SET_WEATHER”命令。
- 点赞
- 收藏
- 关注作者
评论(0)