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

场景说明

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

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

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

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

配置设备管理服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

购买天气预报API

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

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

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

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

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

开发物联网应用

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

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

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

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

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

  1. 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运行成功。

  2. 使用设备上报数据。

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

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

  3. 期望结果:

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

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

【IoT最佳实践】设备获取实时天气信息相关推荐

  1. 【IoT最佳实践】设备获取实时天气DEMO代码解读

    [摘要] 之前,我们曾为您介绍如何实现设备实时获取天气信息,本文将为您从代码逻辑层面解读该实时天气应用的DEMO. 本文承接[IoT最佳实践]设备获取实时天气信息,为您解读实时天气DEMO的代码逻辑, ...

  2. Ventuz 获取实时天气信息

    本教程教你在Script中如何获取天气信息 1:新建一个Script Node 双击进入脚本编辑器 a.添加Inputs变量 b.添加Outputs变量 c.代码覆盖 using System; us ...

  3. 通过Temboo实现从Arduino获取雅虎天气信息

    如果问我未来的科技行业发展有哪些亮点的话,我必须说物联网一定是其中之一.物联网技术发展迅速,现在我们已经看到非常多的设备通过互联网互相通信了.物联网技术的发展背后的推动因素之一是Arduino和Ras ...

  4. ddms java 截图_从Android设备获取实时截屏

    从Android设备获取实时截屏(adb) 前两篇文章已经把如何控制android设备的输入讲了,这一篇就是如何获取输出,通过adb的方式 原理 framebuffer获取流程 AdbClient和A ...

  5. 微信小程序获取实时天气

    一.实验目标 1.掌握服务器域名配置和临时服务器部署:2.掌握 wx.request 接口的用法. 二.实验步骤 1.使用和风天气申请key 2.导航栏设计 3.页面设计 4.逻辑实现 更新地区信息 ...

  6. 腾讯云API与国家气象局API获取实时天气

    腾讯云API获取天气(收费) package com.vxdata.cases.common.utils;import com.alibaba.fastjson.JSONObject; import ...

  7. Android 获取实时天气数据

    先上效果图: 深圳实时天气数据 关于获取实时天气数据有很多种方法,像聚合数据.和风天气等平台都可以提供数据来源,本文主要使用和风天气SDK获取实时天气数据.以下是使用和风天气SDK来获取地方实时天气数 ...

  8. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  9. 通过百度地图获取当地天气信息

    首先,通过之前用过的百度地图,实现定位功能:首先去百度开放云申请密钥,这里就不说明申请过程了,不懂得可以百度一下. 申请完密钥后,需要去声明Activity的地方添加上下面的语句: [html] vi ...

最新文章

  1. Failure Groups in ASM
  2. vim中搭建与sourceinsight类似功能
  3. Matlab C++混合编程 在VisualStudio下的编程 使用了Opencv库
  4. android log显示
  5. 使用php创建一个注册表单,如何实现一个简单的注册表单
  6. 首页静态生成 错误:客户端发现响应内容类型为“text/html”,但应该是“text/xml”...
  7. 【UIKit】UITableView.06
  8. UI干货素材|app切换开关模块
  9. win7注册表无法修改计算机名称,Win7旗舰版
  10. 1394接口_电视机的音频输出接口
  11. development period
  12. 西门子1200跟V90伺服总线通讯①_设置V90
  13. SSH 只能用于远程 Linux 主机?那说明你见识太小了!
  14. 如何将Excel表格进行美化?学会这几招你的表格将不会那么难看
  15. 微信小程序scroll-view中的坑(因为动态设置高度导致无法下拉)
  16. 恢复服务器误删文件,云服务器误删文件恢复
  17. Android Studio 必备技巧:TODO 用法及自定义 TODO
  18. 学习计算机编程的基础
  19. 中国海洋大学各个校区都有什么专业
  20. 【数学建模】11 数学建模常用算法和计算机辅助软件

热门文章

  1. 一.论文编写之工具记录
  2. Git笔记(34) 调试
  3. 迷你世界电锯机器人_迷你世界:石像机器人升级版,制作如此简单!
  4. [dfs] 洛谷 P1822 魔法指纹
  5. C#实现的UDP收发请求工具类实例
  6. 虚拟机安装windows服务出现无法打开内核设备“\\.Global\vmx86”
  7. Python 调试:pdb
  8. 一个REST风格的URI设计方案[Blog Web Services]
  9. Dual-arm cooperation and implementing for robotic harvesting tomato using binocular vision(摘西红柿机器人)
  10. 动态规划——环形子数组的最大和(Leetcode 918)