云社区 博客 博客详情
云社区 博客 博客详情

【IoT最佳实践】设备获取实时天气信息(API已下架)

我是卤蛋 发表于 2019-12-13 10:06:18 12-13 10:06
我是卤蛋 发表于 2019-12-13 10:06:18 2019/12/13
1
1

【摘要】 物联网智能设备可以通过物联网平台统一获取实时天气信息,本文提供一个实现该功能的DEMO和其使用方法。

本文中调用的天气预报API商品已下架,请自行选择其他天气预报并修改DEMO代码。

---------------------场景说明---------------------

随着技术的发展,物联网设备也越来越智能化,例如可以显示当地的实时天气。

在物联网解决方案中,若由每个设备自己去查询本地实时天气,会有设备端业务逻辑复杂化,查询天气接口调用过于频繁等问题;但若由物联网应用统一调用接口去查询天气再通过物联网平台下发给各个设备,这些问题都能迎刃而解。

在本示例中,我们模拟一个设备上报地区码,物联网平台再上报给应用服务器,应用服务器根据地区码信息查询当地天气信息后再通过物联网平台下发给设备,实现设备获取实时天气信息的功能。

注:本示例运行DEMO的机器需要作为服务器接收物联网平台的推送消息,必须绑定一个外网IP。

---------------------配置设备管理服务---------------------

在设备管理服务中创建产品模型并注册设备。

  1. 登录华为云官方网站,访问设备管理服务

  2. 单击“立即使用”进入设备管理控制台。

  3. 单击页面右上角的“进入设备管理服务”进入控制台。

  4. 在“应用列表”页面中点击应用图标查看应用详情。

    1576200434881410.png

  5. 重置密钥,并妥善保存重置后的应用ID和密钥。

    1576200477998127.png

  6. 单击页面左下角的1576200526741470.png切换左侧菜单,打开“产品模型”页面,单击页面右上角的“新增产品模型 > 本地导入”。

    注:本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。

  7. 导入样例模型文件,“产品名称”自定义,如“MQTT_Device”。点此获取样例模型文件

  8. 进入“设备 > 设备注册”页面,单击“创建”,填写设备注册参数。

    1576201300135714.png

    选择产品:选择您导入的产品模型,如“MQTT_Device”。

      设备识别码:设备唯一物理标识,如IMEI、MAC地址等,用于设备在接入物联网平台时携带该标识信息完成接入鉴权。无真实设备时可随意填写英文字母和数字的组合字符串。

       预置秘钥/确认秘钥:原生MQTT设备接入时,暂无作用,可不填写或随意填写。

填写完成后单击“确定”,请注意保存注册成功返回的“设备ID”和“密钥”。

---------------------购买天气预报API---------------------

本文以华为云应用市场提供的天气预报API为例,您也可以使用其他的天气预告API作为数据源。

  1. 访问华为云应用市场,购买天气预报API。

  2. 购买完成后,从购买页面右上角进入买家中心。

    1576201377741138.png

  3. 单击天气预报所在行右侧的“管理”。

    1576201431142352.png

  4. 点击应用信息右边的眼睛图标,查看并记录AppKey和AppSecret。

    1576201471288105.png

---------------------开发物联网应用---------------------

开发物联网应用,实现设备上报地区码后应用自动查询当地天气并下发给设备。

本文中使用DEMO进行演示,您可以参考DEMO开发自己的物联网应用进行使用。

  1. 点击下载天气应用DEMO。

  2. 准备JAVA开发环境并导入DEMO工程,操作方法可参考开发指南

  3. 打开“main.resources > application.properties”,修改配置。

    1576201521749755.png

    server.port为本DEMO的监听端口,若8099端口已被占用可修改为其他端口。

    platformIpplatformPort修改为物联网平台的应用接入地址,可在设备接入服务的管理控制台查看。

    appIdsecret修改为配置设备管理服务时获取的应用ID和密钥。

    subscription_CallbackUrl中的IP部分修改为本机的外网IP,端口部分与server.port保持一致。

    deviceId修改为配置设备管理服务时获取的设备ID。

    serviceIdmethod对应产品模型中的下发命令服务和命令,使用本文提供的样例模型时无需修改。

    apiKeyapiSecret替换为购买天气预报API时获取的AppKey和AppSecret。

---------------------验证操作---------------------

  1. 右键单击“com.huawei.iotplatform.Main > Main.java”,选择“Run As > Java Application”,若控制台显示订阅返回“消息接收服务器搭建完成完成”,表示DEMO运行成功。

    1576201691936262.png

  2. 使用设备上报数据。

    您可以使用配置设备管理服务时注册的真实设备接入平台,上报“areaCode”等于0755的数据。

    您也可以使用模拟器模拟设备订阅Topic: /huawei/v1/devices/{deviceId}/command/json(其中{deviceId}需要替换成实际设备ID)后,上报“areaCode”等于0755的数据,操作方法请参考MQTT.fx模拟设备接入

期望结果:

    若您使用真实设备上报数据,设备会收到一条“SET_WEATHER”命令。

    若您使用模拟器上报数据,可在“Subscribe”页签查看到平台下发的“SET_WEATHER”命令。

    1576201813206075.png


登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 1
点赞
分享文章到微博
分享文章到朋友圈

评论 (1)


'{}alert1

1楼2019-12-23 20:40:34
0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消