01-IOT产品设备管理目标从今天开始我们开始一个新的模块开发叫做智能监测我们可以先来看一张图我们可以通过选择的配置来配备智能硬件设备它有两类场景安全场景和健康场景安全场景防跌倒意外、防走失、睡眠中意外、区域滞留、环境安全健康场景健康监测、健康小屋通过硬件设备来监控老人以及老人活动场所的情况。后台时刻做监控一旦有意外发生就可以迅速处理解决。其中关于智能设备的数据传输和上报采用的华为云提供的设备接入服务IoTDA我们也会重点讲解设备如何上报数据到IOT以及如何从IOT平台拉取数据本文章的目标能够熟悉华为云IoTDA平台的特点能够掌握华为云IoTDA平台的一些概念如产品、设备、物模型等能够掌握使用华为云IoTDA平台提供的接口创建设备并绑定业务数据老人、位置能够熟悉智能设备对接华为云IoTDA平台上报数据的方式华为云IOT平台在开发智能监测之前我们必须要先熟悉和掌握华为云IoTDA平台的使用及对接才能开发我们的项目什么是物联网把所有物品通过信息传感设备与互联网连接起来进行信息交换即物物相息以实现智能化识别和管理。物联网英文Internet of Things缩写IoT起源于传媒领域是信息科技产业的第三次革命。物联网是指通过信息传感设备按约定的协议将任何物体与网络相连接物体通过信息传播媒介进行信息交换和通信以实现智能化识别、定位、跟踪、监管等功能。常见的应用场景共享充电宝充电宝设备接入物联网平台后可上报充电宝电量和借用状态等信息到物联网平台云端。充电宝用户扫码后云端低延时向充电宝下发指令使其弹出。同时企业运营者能够实时获知充电宝的运行状况。智能音箱播报音箱接入物联网平台后用户扫码完成支付后将支付金额实时通过音箱向用户和商家进行语音播报。智能家居智能家居技术已经成为当今家庭装潢的一大特色。比如通过智能灯泡可以实现远程控制灯光和电视等设备调节温度和湿度实现智能化生活。智能农耕智能农耕可以通过物联网技术来监测、传输、分析、管理农业生产过程中的信息。比如作物的生长情况、土壤的状况等以提高农业生产的效率改善利润率减少污染节约农业资源。智能医疗在智慧医疗中可以捕捉人的生理状态信息例如心跳频率、体力消耗、血压高低等。然后对采集数据进行备份、加工和分析以便个人或医生快速查询。在物联网平台接入传感器设备采集人体及周边环境参数的信息通过数据服务处理数据后反馈给用户。华为云IoTDA简介产品文档https://support.huaweicloud.com/iothub/index.html设备接入服务IoTDA是华为云的物联网平台提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力并可将设备数据灵活流转到华为云其他服务。我们作为一个开发者基本的设备与后台调度思路如下更多的介绍可以阅读官方产品文档开通IoTDA注册华为云账号前往华为云官网注册账号。如果已有注册账号请跳过此步骤。进入华为云首页后如果没有华为云的账户需要先进行注册才可以进行登录。由于注册较为简单课程和讲义不在进行体现。开通物联网平台登录账号以后我们可以在产品中搜索设备接入IoTDA可以先试用创建成功后如下服务的基本信息可以点击服务查看到此IoTDA服务就正式开通了。产品创建产品产品某一类具有相同能力或特征的设备的集合称为一款产品。帮助开发者快速进行产品模型和插件的开发同时提供端侧集成、在线调试、自定义Topic等多种能力。比如手表、大门通道门禁、紧急呼叫报警器、滞留报警器、跌倒报警器现在我们可以创建产品找到产品--创建产品产品模型产品模型Product Model也称物模型用于描述设备具备的能力和特性。开发者通过定义产品模型在物联网平台构建一款设备的抽象模型使平台理解该款设备支持的服务、属性、命令等信息。手表本身耗电量使用时间指标数据身体血压、血氧、体温数据像这些耗电量、血压、血氧数据都属于产品的功能也叫做物模型在IOT平台的物模型中分为了三类创建手表产品的物模型进入产品的详情我们选择自定义模型然后可以给这个服务添加具体的属性我目前创建的智能手表产品的物模型目前可以定义四个如下属性名称属性描述数据类型访问权限取值范围BodyTemp体温int读写0~50xueyang血氧int读写0~150HeartRate心率int读写0~150BatteryPercentage用电量int读写0~100设备归属于某个产品下的设备实体每个设备具有一个唯一的标识码。设备可以是直连物联网平台的设备也可以是代理子设备连接物联网平台的网关。前提条件设备是绑定在产品上的所以必须先创建产品才行操作步骤在左侧导航栏选择设备--所有设备在设备页面单击注册设备。在添加设备对话框中输入设备信息单击确认。如下图创建成功之后会分配一个设备的信息非常重要需要保存下来方便后面调试链接设备中可以查看创建好的设备详情设备接入-数据上报概述属性上报是一种需要平台解析、缓存通过数据流转功能将数据转发到应用侧或华为云其他云服务的一种方式。需要在平台建立产品模型。对于属性上报的数据平台会记录属性的最新一次上报值对符合产品模型定义的属性数据进行存储。官方案例-设备接入基于NB-IoT小熊派的智慧烟感我们在开发阶段可以使用联网的电脑来模拟设备的数据上报官方sdk下载Java SDK使用示例前提需要提前创建好产品和对应的物模型以及该产品的设备SDK代码获取SDK下载解压之后使用idea打开找到iot-device-demo模块中的PropertySample类如下图package com.huaweicloud.sdk.iot.device.demo.device; import com.huaweicloud.sdk.iot.device.IoTDevice; import com.huaweicloud.sdk.iot.device.client.requests.ServiceProperty; import com.huaweicloud.sdk.iot.device.transport.ActionListener; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.security.SecureRandom; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; /** * 演示如何直接使用DeviceClient进行设备属性的上报和读写 */ public class PropertySample { private static final String IOT_ROOT_CA_RES_PATH ca.jks; private static final String IOT_ROOT_CA_TMP_PATH huaweicloud-iotda-tmp- IOT_ROOT_CA_RES_PATH; private static final Logger log LogManager.getLogger(PropertySample.class); public static void main(String[] args) throws InterruptedException, IOException { // 加载iot平台的ca证书进行服务端校验 File tmpCAFile new File(IOT_ROOT_CA_TMP_PATH); try (InputStream resource CommandSample.class.getClassLoader().getResourceAsStream(IOT_ROOT_CA_RES_PATH)) { Files.copy(resource, tmpCAFile.toPath(), REPLACE_EXISTING); } // 创建设备并初始化. 用户请替换为自己的接入地址。--watch01 IoTDevice device new IoTDevice( //接入地址获取方式登录华为云IoTDA控制台左侧导航栏“总览”页签在选择的实例基本信息中单击“接入信息”--设备接入--MQTT。选择8883端 ssl://230590aa95.st1.iotda-device.cn-east-3.myhuaweicloud.com:8883, //设备id 67ab39f1bab900244b1e64a6_watch01, //设备秘钥 设备创建成功后会自动生成 5f71b853642b8ccab767890a5b148f02, tmpCAFile); if (device.init() ! 0) { return; } // 定时上报属性 while (true) { MapString, Object json new HashMap(); Random rand new SecureRandom(); // 按照物模型设置属性根据实际情况设置下面是智能报警手表的物模型 json.put(BodyTemp, 36); json.put(xueyang, rand.nextFloat()*100.0f); json.put(HeartRate, rand.nextFloat()*100.0f); json.put(BatteryPercentage, rand.nextFloat() * 100.0f); ServiceProperty serviceProperty new ServiceProperty(); serviceProperty.setProperties(json); serviceProperty.setServiceId(watch_service); // serviceId要和物模型一致 device.getClient().reportProperties(Arrays.asList(serviceProperty), new ActionListener() { Override public void onSuccess(Object context) { log.info(pubMessage success); } Override public void onFailure(Object context, Throwable var2) { log.error(reportProperties failed var2.toString()); } }); Thread.sleep(10000); } } }要改的地方IoTDevice device new IoTDevice( //接入地址获取方式登录华为云IoTDA控制台左侧导航栏“总览”页签在选择的实例基本信息中单击“接入信息”--设备接入--MQTT。选择8883端 ssl://230590aa95.st1.iotda-device.cn-east-3.myhuaweicloud.com:8883, //设备id 67ab39f1bab900244b1e64a6_watch01, //设备秘钥 设备创建成功后会自动生成 5f71b853642b8ccab767890a5b148f02, tmpCAFile);// 按照物模型设置属性根据实际情况设置下面是智能报警手表的物模型 json.put(BodyTemp, 36); json.put(xueyang, rand.nextFloat()*100.0f); json.put(HeartRate, rand.nextFloat()*100.0f); json.put(BatteryPercentage, rand.nextFloat() * 100.0f); ServiceProperty serviceProperty new ServiceProperty(); serviceProperty.setProperties(json); serviceProperty.setServiceId(watch_service); // serviceId要和物模型一致右键启动之后的效果消息发送成功后可以在华为云IoTDA平台中查看该设备上报的数据产品设备数据准备下面两款产品也是常用的大家根据需要抽时间自行创建1产品名称烟雾报警器属性名称属性描述数据类型访问权限取值范围CurrentHumidity湿度int读写0~100IndoorTemperature温度int读写-40~80SmokeSensorState烟雾监测状态bool(布尔)读写布尔值0正常1检测到烟雾2)产品名称睡眠监测带属性名称属性描述数据类型访问权限取值范围BedTime离床时间dateTime(日期时间)读写300BedExitCount离床次数int读写0~10SleepPhaseState睡眠状态int读写0~2HeartRate心率int读写1~180RespiratoryRate呼吸率int读写1~150end本文章内容到此结束后续请看智能监测系统-02使用华为云开发模块
智能监测系统-01(使用华为云开发模块)
01-IOT产品设备管理目标从今天开始我们开始一个新的模块开发叫做智能监测我们可以先来看一张图我们可以通过选择的配置来配备智能硬件设备它有两类场景安全场景和健康场景安全场景防跌倒意外、防走失、睡眠中意外、区域滞留、环境安全健康场景健康监测、健康小屋通过硬件设备来监控老人以及老人活动场所的情况。后台时刻做监控一旦有意外发生就可以迅速处理解决。其中关于智能设备的数据传输和上报采用的华为云提供的设备接入服务IoTDA我们也会重点讲解设备如何上报数据到IOT以及如何从IOT平台拉取数据本文章的目标能够熟悉华为云IoTDA平台的特点能够掌握华为云IoTDA平台的一些概念如产品、设备、物模型等能够掌握使用华为云IoTDA平台提供的接口创建设备并绑定业务数据老人、位置能够熟悉智能设备对接华为云IoTDA平台上报数据的方式华为云IOT平台在开发智能监测之前我们必须要先熟悉和掌握华为云IoTDA平台的使用及对接才能开发我们的项目什么是物联网把所有物品通过信息传感设备与互联网连接起来进行信息交换即物物相息以实现智能化识别和管理。物联网英文Internet of Things缩写IoT起源于传媒领域是信息科技产业的第三次革命。物联网是指通过信息传感设备按约定的协议将任何物体与网络相连接物体通过信息传播媒介进行信息交换和通信以实现智能化识别、定位、跟踪、监管等功能。常见的应用场景共享充电宝充电宝设备接入物联网平台后可上报充电宝电量和借用状态等信息到物联网平台云端。充电宝用户扫码后云端低延时向充电宝下发指令使其弹出。同时企业运营者能够实时获知充电宝的运行状况。智能音箱播报音箱接入物联网平台后用户扫码完成支付后将支付金额实时通过音箱向用户和商家进行语音播报。智能家居智能家居技术已经成为当今家庭装潢的一大特色。比如通过智能灯泡可以实现远程控制灯光和电视等设备调节温度和湿度实现智能化生活。智能农耕智能农耕可以通过物联网技术来监测、传输、分析、管理农业生产过程中的信息。比如作物的生长情况、土壤的状况等以提高农业生产的效率改善利润率减少污染节约农业资源。智能医疗在智慧医疗中可以捕捉人的生理状态信息例如心跳频率、体力消耗、血压高低等。然后对采集数据进行备份、加工和分析以便个人或医生快速查询。在物联网平台接入传感器设备采集人体及周边环境参数的信息通过数据服务处理数据后反馈给用户。华为云IoTDA简介产品文档https://support.huaweicloud.com/iothub/index.html设备接入服务IoTDA是华为云的物联网平台提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力并可将设备数据灵活流转到华为云其他服务。我们作为一个开发者基本的设备与后台调度思路如下更多的介绍可以阅读官方产品文档开通IoTDA注册华为云账号前往华为云官网注册账号。如果已有注册账号请跳过此步骤。进入华为云首页后如果没有华为云的账户需要先进行注册才可以进行登录。由于注册较为简单课程和讲义不在进行体现。开通物联网平台登录账号以后我们可以在产品中搜索设备接入IoTDA可以先试用创建成功后如下服务的基本信息可以点击服务查看到此IoTDA服务就正式开通了。产品创建产品产品某一类具有相同能力或特征的设备的集合称为一款产品。帮助开发者快速进行产品模型和插件的开发同时提供端侧集成、在线调试、自定义Topic等多种能力。比如手表、大门通道门禁、紧急呼叫报警器、滞留报警器、跌倒报警器现在我们可以创建产品找到产品--创建产品产品模型产品模型Product Model也称物模型用于描述设备具备的能力和特性。开发者通过定义产品模型在物联网平台构建一款设备的抽象模型使平台理解该款设备支持的服务、属性、命令等信息。手表本身耗电量使用时间指标数据身体血压、血氧、体温数据像这些耗电量、血压、血氧数据都属于产品的功能也叫做物模型在IOT平台的物模型中分为了三类创建手表产品的物模型进入产品的详情我们选择自定义模型然后可以给这个服务添加具体的属性我目前创建的智能手表产品的物模型目前可以定义四个如下属性名称属性描述数据类型访问权限取值范围BodyTemp体温int读写0~50xueyang血氧int读写0~150HeartRate心率int读写0~150BatteryPercentage用电量int读写0~100设备归属于某个产品下的设备实体每个设备具有一个唯一的标识码。设备可以是直连物联网平台的设备也可以是代理子设备连接物联网平台的网关。前提条件设备是绑定在产品上的所以必须先创建产品才行操作步骤在左侧导航栏选择设备--所有设备在设备页面单击注册设备。在添加设备对话框中输入设备信息单击确认。如下图创建成功之后会分配一个设备的信息非常重要需要保存下来方便后面调试链接设备中可以查看创建好的设备详情设备接入-数据上报概述属性上报是一种需要平台解析、缓存通过数据流转功能将数据转发到应用侧或华为云其他云服务的一种方式。需要在平台建立产品模型。对于属性上报的数据平台会记录属性的最新一次上报值对符合产品模型定义的属性数据进行存储。官方案例-设备接入基于NB-IoT小熊派的智慧烟感我们在开发阶段可以使用联网的电脑来模拟设备的数据上报官方sdk下载Java SDK使用示例前提需要提前创建好产品和对应的物模型以及该产品的设备SDK代码获取SDK下载解压之后使用idea打开找到iot-device-demo模块中的PropertySample类如下图package com.huaweicloud.sdk.iot.device.demo.device; import com.huaweicloud.sdk.iot.device.IoTDevice; import com.huaweicloud.sdk.iot.device.client.requests.ServiceProperty; import com.huaweicloud.sdk.iot.device.transport.ActionListener; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.security.SecureRandom; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; /** * 演示如何直接使用DeviceClient进行设备属性的上报和读写 */ public class PropertySample { private static final String IOT_ROOT_CA_RES_PATH ca.jks; private static final String IOT_ROOT_CA_TMP_PATH huaweicloud-iotda-tmp- IOT_ROOT_CA_RES_PATH; private static final Logger log LogManager.getLogger(PropertySample.class); public static void main(String[] args) throws InterruptedException, IOException { // 加载iot平台的ca证书进行服务端校验 File tmpCAFile new File(IOT_ROOT_CA_TMP_PATH); try (InputStream resource CommandSample.class.getClassLoader().getResourceAsStream(IOT_ROOT_CA_RES_PATH)) { Files.copy(resource, tmpCAFile.toPath(), REPLACE_EXISTING); } // 创建设备并初始化. 用户请替换为自己的接入地址。--watch01 IoTDevice device new IoTDevice( //接入地址获取方式登录华为云IoTDA控制台左侧导航栏“总览”页签在选择的实例基本信息中单击“接入信息”--设备接入--MQTT。选择8883端 ssl://230590aa95.st1.iotda-device.cn-east-3.myhuaweicloud.com:8883, //设备id 67ab39f1bab900244b1e64a6_watch01, //设备秘钥 设备创建成功后会自动生成 5f71b853642b8ccab767890a5b148f02, tmpCAFile); if (device.init() ! 0) { return; } // 定时上报属性 while (true) { MapString, Object json new HashMap(); Random rand new SecureRandom(); // 按照物模型设置属性根据实际情况设置下面是智能报警手表的物模型 json.put(BodyTemp, 36); json.put(xueyang, rand.nextFloat()*100.0f); json.put(HeartRate, rand.nextFloat()*100.0f); json.put(BatteryPercentage, rand.nextFloat() * 100.0f); ServiceProperty serviceProperty new ServiceProperty(); serviceProperty.setProperties(json); serviceProperty.setServiceId(watch_service); // serviceId要和物模型一致 device.getClient().reportProperties(Arrays.asList(serviceProperty), new ActionListener() { Override public void onSuccess(Object context) { log.info(pubMessage success); } Override public void onFailure(Object context, Throwable var2) { log.error(reportProperties failed var2.toString()); } }); Thread.sleep(10000); } } }要改的地方IoTDevice device new IoTDevice( //接入地址获取方式登录华为云IoTDA控制台左侧导航栏“总览”页签在选择的实例基本信息中单击“接入信息”--设备接入--MQTT。选择8883端 ssl://230590aa95.st1.iotda-device.cn-east-3.myhuaweicloud.com:8883, //设备id 67ab39f1bab900244b1e64a6_watch01, //设备秘钥 设备创建成功后会自动生成 5f71b853642b8ccab767890a5b148f02, tmpCAFile);// 按照物模型设置属性根据实际情况设置下面是智能报警手表的物模型 json.put(BodyTemp, 36); json.put(xueyang, rand.nextFloat()*100.0f); json.put(HeartRate, rand.nextFloat()*100.0f); json.put(BatteryPercentage, rand.nextFloat() * 100.0f); ServiceProperty serviceProperty new ServiceProperty(); serviceProperty.setProperties(json); serviceProperty.setServiceId(watch_service); // serviceId要和物模型一致右键启动之后的效果消息发送成功后可以在华为云IoTDA平台中查看该设备上报的数据产品设备数据准备下面两款产品也是常用的大家根据需要抽时间自行创建1产品名称烟雾报警器属性名称属性描述数据类型访问权限取值范围CurrentHumidity湿度int读写0~100IndoorTemperature温度int读写-40~80SmokeSensorState烟雾监测状态bool(布尔)读写布尔值0正常1检测到烟雾2)产品名称睡眠监测带属性名称属性描述数据类型访问权限取值范围BedTime离床时间dateTime(日期时间)读写300BedExitCount离床次数int读写0~10SleepPhaseState睡眠状态int读写0~2HeartRate心率int读写1~180RespiratoryRate呼吸率int读写1~150end本文章内容到此结束后续请看智能监测系统-02使用华为云开发模块