-
开发者portal旨在帮助应用开发者和设备开发者快速进行线上开发、调试工作。无 码化编解码插件开发、一键式插件部署、南向设备模拟器,您可以通过简便的操作就来体验整个NB-IoT全流程。1 准备资源1.1 平台资源申请开发者portal资源的方式:https://www.huaweicloud.com/product/iot.html1.2 资料参考在开发Profile和编解码插件之前,建议您先了解下Profile文档和编写编解码插件的使用过程。下载并查看如下的开发文档。 Profile定义:profile定义 Profile开发指南:参考开发Profile文件 编解码插件:编解码插件 编解码开发与升级指南:参考开发编解码插件 2 开发Profile设备的Profile文件是用来描述设备类型和设备服务能力的文件。定义了同一类设备具备的服务能力,属性,命令等。Step 1 登录开发者Portal,单击“Profile开发>产品”,单击页面右上角的“自定义产品”,转至“产品模板”页面。− 您可以使用模板定义您的产品,单击产品模板右上角的“立即使用”,这里的参数需要根据您的设备进行定义。− 您也可单击右上角的“创建全新产品”,直接定义您的产品,这里以创建全新产品为例。Step 2 根据实际填写“设备类型”、“设备型号”、“厂商ID”、“厂商名称”等数据。单击“确定”,添加产品完成。设备类型(DeviceType):指示设备的类型。下拉选择类型。这里以WaterMeter为例。设备型号(Model):指示设备的型号。这里以NBIoTDevice为例。厂商ID(ManufacturerId):指示设备的厂商Id。这里以HuaweiSZ为例。厂商名称(manufacturerName):指示设备的厂商名称。这里以HuaweiSZ为例。Step 3 在产品详情页面单击“新建服务”,根据界面提示信息,增加基本信息,属性或命令,单击“保存”。− 新增服务基本信息,服务的名称采用驼峰的命名方式,这里以Battery为例。描述可选,有多个服务就新增多条服务。− 新增属性属性名(propertyName):指示属性名称。这里以batteryLevel为例。属性类型(dataType):指示数据类型。取值范围:int、float、datetime、string、jsonObject、array。这里以int类型为例。上报数据时,复杂类型数据格式如下:DateTime:yyyyMMdd’T’HHmmss’Z’如:20151212T121212ZjsonObject:自定义json结构体,平台不理解只透传。最小(min)/最大值(max):指示最小/最大值。仅当dataType为int、float时生效,逻辑大于等于/小于等于。步长(step):指示步长。暂不使用,可填0即可。单位(unit):指示单位,英文,取值根据参数确定。如:温度单位:“°C”;百分比单位:“%”。长度(maxLength):指示字符串长度。仅当dataType为string、datetime、jsonObject、array时生效。枚举值(enumList):如烟感属性activityStatus可有如下取值[ "STANDBY", "RECORDING", "LIVING" ]。访问模式(method):指示访问模式。R:可读;W:可写;E可订阅。取值范围:R、RW、RE、RWE、null。本例按照如上方法,创建三个属性,分别为batteryLevel,batteryThreshold和batteryStatus。− 新增命令命令名称:指示设备可以执行的命令。如门磁的Lock命令、摄像头的VIDEO_RECORD命令。这里以SET_DIVICE_LEVEL为例。命令名与参数 共同构成一个完整的命令,在页面上单击“新增字段”。各字段的说明和属性中的字段类似,这里不再赘述。各字段更详细的命名规则请参考“资料参考”中的Profile开发指南。Step 4 【可选】单击产品详情右上角的“导出该产品Profile”,可以直接生成Profile文件并把文件导出至本地某个位置。3 开发编解码插件开发完Profile文件后,可以在界面上通过图形化的方式完成设备与平台之间的消息映射。在平台中预集成了编解码插件的模板,可以根据设备类型和接入协议在插件模板中选择模板修改开发编解码插件。登录开发者Portal,单击“插件开发”,单击右上角的“添加插件”,转到“插件模板”页签,单击“查看”,您可以查看各个模板的内容。若您的业务和模板中类似,可使用模板再根据实际来修改。若您不需要使用模板,则可自己新建插件。下面以新建插件来说明如何开发编解码插件。使用模板的类似修改即可。Step 1 单击页面右上角的“新建插件”,进入设计插件页面。说明:您可以单击右上角的“新手指导”,查看插件的实现原理。Step 2 新增消息。单击“新增消息”,输入消息的名称(这里以Battery为例)、描述和消息类型(包括数据上报、命令下发和命令下发响应)。Step 3 添加字段。单击“添加字段”,添加上报数据的字段。名字:建议和profile文件中设置的保持一致。便于和profile文件中的字段进行对应。数据类型:包括int8u,int16u,int24u,int32u,string,variablelength string,array,variant。与profile中的相对应。长度:指示该字段占多少字节长度。若长度为1,则在上报码流时,这个字段占一位,即一个16进制的数值。本例均以长度为1为例。默认值:该字段在码流中的参考值。偏移值:当前字段到本条消息码流起始位置的字节数,比如设置为2-3,则这个字段在码流中的第2-3位。说明:每个消息必须有消息地址域。地址域为标识唯一此消息唯一ID的字段,即唯一标识不同的消息。地址域的名称必须为messageId,且只有地址域的名称可以为messageId。我们要模拟数据上报,命令下发的完整过程,需要创建“数据上报”、“命令下发”和“命令下发响应”三种类型的消息。Step 4 导入Profile文件。在页面右侧“设备Profile”区域,单击“更多操作”下的“选择Profile”,选择上述第二章节中开发的Profile。说明:若您需要修改Profile,则可单击“更多操作”下的“更换Profile”。Step 5 建立profile属性、命令与消息的映射关系。根据自己定义的profile,来设计插件中的消息。通过拖拉服务中的属性或命令,与消息中的字段进行关联。属性对应于数据上报中的字段列表。有多个服务就新增多个消息。为便于理解,字段名称建议和属性名设置为相同。注意,命令下发的消息名称必须和Profile中的相同。Step 6 完成映射关系后,单击页面右上角的“部署”,部署成功后,系统会将您的设计结果自动生成编解码插件包。4 注册设备开发部署成功后,您可以将您的设备接入到IoT平台。Step 1 登录开发者Portal,单击“我的设备”,进入设备列表页面。单击右上角的“注册设备”,转向注册设备页面,选择您需要注册设备的Profile。Step 2 单击Profile,进入Profile详情页面,在页面底部填写设备名称和设备标识码,这里的设备名称和设备标识码均以HuaweiSZ为例,单击“注册”,完成设备的注册。其中,在真实场景中,设备标识码为IMEI号。如果设备是在线状态,表示设备已经成功的接入到平台。说明:可以单击设备后面的修改或删除按钮,对设备进行修改。5 添加非NB设备模拟器(可选步骤)您无需真实设备,通过模拟设备的Json消息来完成与北向应用的调试。若使用码流来模拟,则可跳过该步骤。Step 1 登录开发者Portal,单击“模拟器 > 非NB设备模拟器”,进入非NB设备模拟器列表页面。单击右上角的“设备模拟器”,弹出“创建设备模拟器”的页面,如下图所示。Step 2 选择您需要模拟的设备型号(即自己创建的设备),进入页面后,输入和“注册设备”章节注册的相同验证码(VerificateCode),这里即为HuaweiSZ。Step 3 单击“创建”,完成创建您的设备模拟器。单击您创建的设备模拟器,进入详情页面,可以设置设备的状态为在线或离线,如下图所示。6 上报数据非NB设备模拟器 Step 1 单击“模拟器 > 非NB设备模拟器”,进入非NB设备模拟器列表页面。 Step 2 单击自己创建的设备模拟器,进入详情页面,单击需要上报数据的服务,输入各个字段的值(这里以batteryLevel取值1,batteryThreshold取值3,batteryStatus取值2为例)。如下图所示。 Step 3 选择发送模式(这里以手动发送模式为例)后,单击“发送”,则在页面右侧弹出发送数据的详细消息。如下图所示。 Step 4 单击“我的设备”,进入自己的设备详情页面,单击“历史数据”页签,可以看到上报的数据。此时,上报数据即成功。如下图所示。 NB设备模拟器(码流) Step 1 单击“模拟器 > NB设备模拟器”,进入NB设备模拟器列表页面,单击“绑定设备”,在弹出框中输入第四章节注册设备时的验证码,单击“确定”即绑定设备。如下图所示。 Step 2 进入NB设备模拟器测试页面,输入十六进制码流00010203,单击“发送”,则在页面右侧弹出发送成功的消息。如下图所示。本例中,一共上报4个字节,分别为“00”、“01”、“02”、“03”。其中,第一个字节“00”表示messageId,第二个字节“01”表示上报数据对应的“batteryLevel”字段,第三个字节“02”表示batteryThreshold字段,第四个字节“03”表示batteryStatus字段。这些内容与profile文件和编解码插件是一一对应的。 Step 3 单击“我的设备”,进入自己的设备详情页面,单击“历史数据”页签,可以看到上报的数据。此时,上报数据即成功。如下图所示。7 命令下发Step 1 单击“我的设备”,进入设备列表页面。单击设备右侧的命令下发图标,弹出命令下发界面,根据界面信息,选择命令,输入命令参数的值。如下图所示。Step 2 单击“发送”,若发送成功,则会在页面右侧显示下发数据的详细消息。此时单击设备,查看历史命令,消息状态为“已送达”状态。如下图所示。8 消息订阅北向应用除了通过RESTful类型的数据查询接口,获取设备的当前数据和历史数据外,还可以通过消息订阅的方式来获取实时数据。当南向设备上报数据到达平台时,平台将检索是否有订阅存在,如果存在,则向对应的callbackUrl推送POST消息。消息订阅除了可以订阅消息外,还可以订阅设备绑定消息、设备删除消息、规则时间、命令响应等。更详细的可以参见API接口参考。下面详细介绍整个订阅流程,这里以获取设备数据为例进行介绍。Step 1 首先要搭建服务器(这里以tomcat为例)。配置https服务器具体步骤可参考:https://bbs.huaweicloud.com/forum/thread-13220-1-1.html Step 2 写一个简单的RESTful接口webapp,部署到服务器,将服务器映射到公网,调试Post接口能调通。tomcat+restful接收https推送消息和校验证书可参考如下帖子中:https://bbs.huaweicloud.com/forum/thread-13459-1-1.html Step 3 把Step1中制作好的CA证书(按照Step1中制作的证书为tomcat.pem)上传到IoT平台。登录开发者Portal平台,单击“对接信息”,单击“上传”,选择制作好的CA证书(这里为tomcat.pem),上传即可。Step 4 调用订阅接口,订阅接口传入的callbackURL即部署的服务器地址(这里callbackurl:https://ip:port/RESTfulWS/rest/UserInfoService/subscriber1),平台会把消息推送到服务器上。a. 下载北向LiteDemo并导入到Eclipse中b. 修改全局参数。在Constant.java中设置平台的基本信息和callbackURL。具体修改如下:BASE_URL:设置为OceanConnect的平台地址,如https://218.4.33.71:8743。APPID和SECRET:设置为应用的appID和密钥。CALLBACK_BASE_URL:部署的服务器IP和端口号,如https://172.31.26.81:8743。DEVICE_APPID_CALLBACK_URL等地址为完整的callbackURL,这里为CALLBACK_BASE_URL+"RESTfulWS/rest/UserInfoService/subscriber1"。订阅的消息类型有deviceAdded、deviceInfoChanged、deviceDataChanged等类型。可根据需要选择类型,这里以订阅设备数据变化(notifyType为deviceDataChanged)为例。c. 调用订阅接口。右键单击SubscribeNotification.java文件,选择“Run As > Java Application”。若成功,则在控制台Console中会返回201,如下图所示:Step 5 触发推送操作,此时我们上报数据,则在服务器日志中可以查看到推送的消息。进入服务器log目录,输入如下命令:tail -f catalina.out则可以看到服务器中收到了推送消息,如下图所示:从这里可以看到推送的数据和平台上或调用查询设备历史数据中的是一致的。说明:如上只是简单的流程体验。如果使用过程中遇到问题需要咨询,或者发现开发者portal的问题请提单给华为开发人员 。
-
在集成厂商设备/应用服务器时,最基本的两个场景是应用服务器获取设备数据与异步命令下发。这里讲分别进行说明。一、应用服务器获取设备数据简略业务流程图如下:方案1 应用服务器订阅IoT平台的deviceDataChanged或deviceDatasChanged的事件,设备上报到IoT平台后,IoT平台主动给应用服务器推送。方案2 设备上报到IoT平台后,应用服务器主动来平台查询。由于应用服务器不知道什么时候设备上报数据,因此一般是定时来IoT平台查询数据。图中的1和2两种应用服务器获取设备的方案相互不冲突,可以并存。二、应用服务器下发异步命令简略流程如下方案3 下发异步命令到IoT平台,然后平台缓存这些命令,待设备上报数据的时候再将命令下发下去。这种方案一般适用于有休眠功能的设备,应用下发命令时不必考虑设备是否处于休眠状态,命令在IoT平台缓存一下。设备上报数据时已经被唤醒,因此IoT平台再将命令下发下去。方案4 下发异步命令到IoT平台,平台不再缓存这个命令,直接下发给设备。这种方案适用于应用服务器已经确定设备处于唤醒状态。如果设备处于休眠状态,命令直接下发下去就会报错。
-
一、名词解释1、deviceIddeviceId是IoT平台给设备分配的唯一Id,IoT平台和应用服务器通过deviceId标识一个设备。2、设备IMEI号(nodeId/verifyCode)这三个名词都是设备的唯一标识(设备号),终端的设备号可以通过AT命令设置:AT+NTSETID=1,xxxxx。应用服务器用设备号进行业务发放(注册设备)。IoT平台和终端设备通过设备号标志一个设备。3、编解码插件编解码插件将设备的二进制数据解析成可读的业务数据,一个设备对应一个编解码插件,对应一种消息格式。二、对应关系1、应用服务器注册设备:IoT平台保存IMEI、deviceId对应关系2、应用服务器设置设备信息:IoT平台保存IMEI、deviceId、manufacturerId、model对应关系3、部署编解码插件:IoT平台保存IMEI、deviceId、manufacturerId、model、plugin对应关系4、终端设置IMEI:芯片保存设备IMEI5、终端上报数据:终端上电后第一次上报数据,会触发芯片发送IMEI号,与IoT建立对应关系(用户不可见),因此IoT平台根据IMEI查找plugin,将数据解码,再推送给应用服务器。
-
Profile文件和编解码组件的编写和验证由厂商完成,在进行设备/应用与IoT平台对接前,是要上传到IoT平台的。一、profile文件Profile文件是用来描述一款设备的,可以认为是一款设备的全面描述,它包含设备的设备类型、型号、制造商等一些基本属性信息,也包含了设备上报的数据有哪些字段、设备支持哪些命令等业务信息。将该profile文件上传到IoT平台后,IoT平台就“认识”这个设备了,在设备数据上报(上行)或应用服务器命令下发(下行)时,对于经过IoT平台的数据就会“放行”。但若是一款设备没有上传profile,则IoT平台提供的一些业务功能则无法使用。Profile文件上传到IoT平台需要登录平台SPPortal(一般是8843端口)。由厂商上传。二、编解码组件顾名思义,编解码组件是用来对设备上报的数据解码和对应用下发的命令编码的。当设备上报数据到IoT平台,平台收到的是二进制的数据,通过编解码组件的解码,可以将数据转为“肉眼可读的”数据,这些“可读的”数据涉及到字段和字段取值范围等都已在profile文件中定义。因此,编解码组件和profile文件有对应关系。同时,当应用服务器给设备下发命令时,在IoT平台通过编解码组件将“肉眼可读的”数据编码成二进制数据下发下去。
-
(转自https://developer.huawei.com/ict/forum/thread-13239.html )一、IoT平台在中间起到应用服务器和设备之间的联接作用和数据管理作用。IoT平台的全称是IoT联接管理平台。其中的“联接”,可以理解为IoT平台就是一个管道,起应用和设备的联接作用。有了IoT平台,设备和应用可以更快、更安全的接入,对于应用,可以不必关注设备如何接入、协议处理等问题,根据IoT平台开发的API就可以获取到设备的全量信息,并且对设备进行控制。对于设备,可以通过集成/使用华为agent、模组等快速接入。其中的“管理”,即IoT平台还提供数据管理的作用,通过IoT平台的web页面,可以对设备、应用的数据进行维护管理,IoT平台提供的报表功能可以减少应用服务器的开发量等。二、设备必然归属于一个应用服务器。AppId和secret是IoT平台分配给应用服务器的账户信息,deviceId是IoT平台分配设备的身份识别。在使用AppId/secret应用登录IoT平台后,在该账户下注册绑定设备,然后该应用使用其他API对设备进行管理控制。其他的应用服务器不能控制该设备。IoT平台和应用服务器是一对多,应用服务器和设备是是一对多,IoT平台和设备是一对多。一个IoT平台允许接入的设备总数是可配置的,最大不超过200万个。
-
注:若问题交流涉及到敏感数据,请注意保密。 (转自https://developer.huawei.com/ict/forum/thread-12771.html)开发求助帖子一般是涉及指以下几种情况的帖子:① 在应用服务器或设备侧开发时,与华为IoT平台相关的问题;② 在与IoT平台对接联调时遇到的问题。③ 在写作profile资源文件、编解码插件等时遇到的问题;④ 其他相关开发问题 开发求助帖子中的问题可能需要明确以下信息:问题来源: 若您的问题来源于展会、会议交流等,请说明清楚。 若您的问题来源于华为资料,请说明资料名称,方便的话说明资料来源。并且若是对资料某段某句有疑问的,请一并说明清楚。必要背景信息: 比如项目背景(必要的话),所使用的IoT平台IP和端口等。详细的问题求助描述: 若涉及到具体的设备、仪器、SIM卡等,请描述型号等其他信息; 若问题的出现有一定的场景,请描述具体场景条件 若问题涉及到具体的账户、密码信息,或其他项目敏感数据的,在保证安全的前提下提供必要信息; 若问题涉及到具体的某个接口的调用或数据请求的,请将请求参数附上,若有相关报错信息、错误描述等,请一并附上。 以上信息若涉及到,为了问题得到快速解决,请您务必描述清楚。例1【开发求助】水表上报数据,设备上报了一条数据,但是应用服务器收到两条IoT平台推送过来的数据通知,怎么回事? 我是××,正在和华为IoT平台对接。接入设备是水表。 设备已经成功绑定到IoT平台,应用订阅了IoT平台的设备数据上报通知,并且设备数据已经成功上报到应用,但是不过收到两条通知,具体信息如下。IoT平台信息:183.*.*.62 应用调用IoT平台接口的端口:8743 应用服务器appId:c599****aae0 两条通知信息(敏感数据已模糊处理)是:第一条通知{ notifyType: "deviceDataChanged", deviceId: "ff6b****e142", gatewayId: "ff6b****e142", requestId: null, service: { serviceId: "MeterReading", serviceType: "MeterReading", data: { gasComsumption: null, readingDate: null, signal: 0.0, rawData: "RkEwMDAwMDAxMDAxRg==" }, eventTime: "20161206T072013Z" }}第二条通知{ notifyType: "deviceDatasChanged", requestId: null, deviceId: "ff6b****e142", gatewayId: "ff6b****e142", services: [ { serviceId: "MeterReading", serviceType: "MeterReading", data: { gasComsumption: null, readingDate: null, signal: 0.0, rawData: "RkEwMDAwMDAxMDAxRg==" }, eventTime: "20161206T072013Z" }}
-
注:若问题交流涉及到敏感数据,请注意保密。(转自https://developer.huawei.com/ict/forum/thread-12755.html ) 方案求助帖子一般是涉及指以下几种情况的帖子:① 对华为IoT整体解决方案或部分模块有疑问的;② 在阅读华为IoT的资料时,对于资料的描述有疑问的;③ 在项目对接联调中,对接口字段、调用、描述、业务场景等具体问题的;④ 其他相关方案问题方案求助帖子中的问题可能需要明确以下信息:问题来源: 若您的问题来源于展会、会议交流等,请说明清楚。 若您的问题来源于华为资料,请说明资料名称,方便的话说明资料来源。并且若是对资料某段某句有疑问的,请一并说明清楚。必要背景信息: 比如项目背景(必要的话),所使用的IoT平台IP和端口等。详细的问题求助描述: 若涉及到具体的设备、仪器、SIM卡等,请描述型号等其他信息; 若问题的出现有一定的场景,请描述具体场景条件 若问题涉及到具体的账户、密码信息,或其他项目敏感数据的,在保证安全的前提下提供必要信息; 若问题涉及到具体的某个接口的调用或数据请求的,请将请求参数附上,若有相关报错信息、错误描述等,请一并附上。 以上信息若涉及到,为了问题得到快速解决,请您务必描述清楚。例1【方案求助】在对接IoT平台时不设置设备信息的话是否影响业务? 我是××,正在和华为IoT平台对接。接入设备是水表。根据《华为IoT平台对接指导书for NBIOT》的3.4节,我需要设置设备信息。请说明一下设置设备信息的必要性。IoT平台IP:183.*.*.62例2【方案求助】根据接口文档,应用调用接口向设备投递异步命令,为什么报错? 我是××,正在和华为IoT平台对接。接入设备是水表。使用的接口文档是《华为IoT联接管理平台北向接口文档(for NB-IoT)》。调用接口“Postcommand to device (向设备投递异步命令)。” 设备已经成功绑定到IoT平台,并且设备数据已经上报成功,现在应用服务器下发命令,下发失败,请帮忙看一下。IoT平台信息:183.*.*.62 应用调用IoT平台接口的端口:8743 应用服务器appId:c599****aae0 请求结构体与报错信息:
-
这里的local port 是什么 不是nb模块的udp listen端口号吗
-
问题描述:NB设备(如移远BC28模组)使用LWM2M协议接入平台,平台下发命令后,在平台的命令列表中显示已送达,但是NB设备没有收到下行数据。问题原因:NB设备使用LWM2M协议接入平台,但是profile文件中的协议类型(protocolType)字段定义为coap;解决方案:LWM2M协议设备的协议类型(protocolType)字段需填写为:LWM2M,平台校验该字段,识别到是LWM2M协议后,通过已订阅的object19通道给设备发送下行数据。
-
接口功能:实现第三方系统在访问开发API之前的认证。应用访问IoT平台对外开放接口之前须携带应用Id和密码进行鉴权登录,登录成功后获取访问令牌accessToken。关于接口的说明,请参考:https://support.huaweicloud.com/api-IoT/iot_06_0002.html注意事项:应用在调用除当前接口的以下接口时,必须在HTTP消息头中携带参数app_key和Authorization:Bearer,app_key的值为应用Id,Authorization:Bearer的值即为获取到的accessToken。在调用本接口前,请确认已从华为支撑人员获取到appId和secret。appId是IoT平台给每一个应用分配的身份标识。调用接口工具:restclient-ui-3.4.2.jar(可网上搜索直接下载)1:设置请求URL,请求方式:POST2:设置请求Header, key:Content-Type value:application/x-www-form-urlencoded3:设置请求Body: appId=*****&secret=******,请求参数appId与secret由华为方提供4:配置SSL,其中Truststore/Keystore文件及密码由华为IoT平台方提供5点击调用按钮,观察响应参数
-
【中国,北京,2018年12月11日】近日,计算机类专业教指委-华为物联网实践系列教材编委会(以下简称“编委会”)全体会议在北京隆重举行。莅临本次会议的专家有计算机类专业教指委副主任、上海交通大学傅育熙教授,计算机类专业教指委副主任、北京大学陈钟教授,软件开发环境国家重点实验室副主任马殿富教授,临沂大学校长杨波教授,计算机类专业教指委委员、华中科技大学秦磊华教授,计算机类专业教指委委员朱敏教授,上海交通大学在线教育中心副主任、教学信息化与教学方法创新教指委委员蒋建伟教授,人民邮电出版社张立科总编辑,华为企业BG全球培训与认证部冯宝帅部长,计算机类专业教指委委员、华为企业BG中国区培训与认证部卢鹏副部长,华为物联网研发专家刘旭明、李雪峰以及10多位来自知名院校的专家学者、邮电社和华为公司代表。计算机类专业教指委-华为物联网实践系列教材编委会会议现场傅育熙教授在会上致辞并表示:“华为是国际领先的ICT企业,积累了大量先进的物联网应用实践经验,同时也深入了解行业的人才需求,此次产学合作开发实践系列教材对高校物联网专业人才培养有着深远的意义。希望编委会成员能充分发挥理论优势,指导教材的结构和内容更加体系化,也希望所有作者和华为工程师能积极配合,务实高效地完成教材编写工作。冯宝帅部长强调:“华为公司从去年开始,与计算机类专业教指委和人民邮电出版社合作,采用1+1+1的模式,开发了国内首套体系化的大数据专业教材。今天,我们产、教、社三方再次联合,以华为物联网端、管、云架构为基础,立项开发物联网实践教材,支持物联网相关专业建设和应用型人才培养改革。”张立科总编辑表示:“随着5G的商用和人工智能的发展,物联网的产业应用必然越来越广泛,人才需求必然越来越旺。人民邮电出版社会在教指委的指导下,总结上一套大数据教材的成功经验,与华为公司紧密配合,调集社里优秀编辑力量,把本套物联网教材打造成精品。”会上举行了编委会成员的聘书颁发仪式,冯宝帅部长、张立科总编辑共同为傅育熙教授颁发编委会主任聘书;傅育熙教授给2位副主任、8位委员以及3位秘书长颁发聘书。冯宝帅部长(右)、张立科总编辑(左)为傅育熙教授(中)颁发编委会主任聘书计算机类专业教指委-华为物联网实践系列教材编委会成员聘书颁发仪式现场本系列教材采用产学合作的开发方式,会上就系列教材的写作思路和内容大纲进行了深入交流,专家们集思广益,从各个角度对教材的前期规划与后期开发提出建设性意见。本系列教材计划于2019年10月面世,届时,各大实体书店以及线上商城均有出售,高校和老师可根据实际情况选择教材用于教学实践。计算机类专业教指委-华为物联网实践系列教材编委会全体会议合影附:参加此次物联网实践系列教材汇报选题表教材主题(暂定)作者华为物联网专家物联网开发架构南京邮电大学 丁飞王嘉宇物联网操作系统原理上海交通大学 孔令和李雪峰、柴方明物联网联接管理平台淮阴师范学院 黄焱赵金勇无线通信技术东南大学 俞菲王雷NB-IoT原理与技术上海交通大学 孔令和张海鹏、王雷物联网安全技术北京大学 关志易涛物联网应用技术-智能家居北京工业大学 方娟易涛物联网应用技术-边缘计算网关陈良银李雪峰、魏彪物联网应用案例上海交通大学 楚朋志李雪峰、魏彪物联网可穿戴设备深圳职业技术学院 王洋刘旭明、李雪峰物联网NB-IoT实战开发产业作者 熊保松王小军物联网LiteOS开发与实践产业作者 刘火良孙斌、郭健
-
如果你还不知道NB-IoT是什么?那你最好先看一下下面的内容。 NB-IoT:https://www.huaweicloud.com/product/iot.html开发指南:【心得分享】NB-IoT对接方案——(1)相关名词解释 和 基本业务流程简介 【心得分享】NB-IoT对接方案——(2)基本开发流程简介 【心得分享】NB-IoT对接方案——(3)四大组件开发资源分享 【心得分享】NB-IoT对接方案——(4)FAQ 【心得分享】NB-IoT对接方案——(5)消息订阅 开发工具分享:【工具分享】串口助手与虚拟串口 【工具分享】北向GUI调试应用 常见问题自调试:【自调试】北向应用鉴权失败怎么办?【自调试】SoftRadio绑定设备失败怎么办? 【自调试】NB模块绑定设备失败怎么办?【自调试】数据上报失败怎么办?(SoftRadio篇)【自调试】数据上报失败怎么办?(NB模块篇) 【自调试】异步命令下发失败怎么办?【自调试】立即命令下发失败怎么办? 【自调试】订阅失败怎么办?最后再介绍一个解决问题的神器:华为开发者社区DevCenter:https://console.huaweicloud.com/ticket/?region=cn-north-1#/ticketindex/selectBusinessType?productTypeId=5936f9cc0f1c49d1b7cd412e2364f925&subTypeId=49可提交问题单,华为开发者社区支持团队将及时与您联系,进行技术支持。
-
本文为该系列第五篇,重点讲解订阅接口的使用。何为订阅:北向应用除了通过RESTful类型的数据查询接口,获取设备的当前数据和历史数据外,还可以通过消息订阅的方式来获取实时数据。当南向设备上报数据到达平台时,平台将检索是否有订阅存在,如果存在,则向对应的callbackUrl推送POST消息。消息订阅除了可以订阅消息外,还可以订阅设备绑定消息、设备删除消息、规则时间、命令响应等。订阅方式:订阅接口的格式非常简单,只有两个参数:notifyType:订阅的消息类型,有bindDevice、deviceDataChanged、deviceDeleted、commandRsp、ruleEvent等。callbackurl:消息发送的地址,支持HTTP和HTTPS(如果选择HTTPS,则需要上传应用服务器的证书到平台)。【Note】callbackurl包含IP和端口两部分,不可缺失。例如:http://xxx.xxx.xxx.xxx:8080平台目前不提供DNS解析服务,所以只能接受IP+Port的形式。消息接收方式:首先,接收消息的应用服务器需要有一个公网IP(当然,如果是有公网IP的路由器将端口进行映射也可以)。而后应用服务器端就可以跑一个端口的监控程序,等待客户端的socket连接。可以考虑使用ServerSocket来实现。ServerSocket ss = new ServerSocket(8080, 10, InetAddress.getByName("xxx.xxx.xxx.xxx"));accept()将阻塞,直到客户端发起socket连接请求,并完成连接。连接建立后,就可以从socket中读取到消息体。InputStreamReader input = new InputStreamReader(socket.getInputStream());消息体:(以一个deviceDataChanged类型的消息为例)POST / HTTP/1.1Content-Type: application/jsonContent-Length:313Host:xxx.xxx.xxx.xxx:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.4.1 (JAVA/1.8.0_101)Accept-Encoding: gzip, deflate{"notifyType":"deviceDataChanged","deviceId":"xxxxxxxx",“gatewayId”:"xxxxxxx","requestId":null,"service":{ "serviceId":"Humidity", "serviceType":"Humidity", "data":{ "Humidity":17, "HumidityMinToday":17, "HumidityMaxToday":18 }, "eventTime":"20170405T151308Z"}}之后,就是消息体的解析了,这里就不再赘述了。
-
(转自 https://developer.huawei.com/ict/forum/thread-20633.html )1,设备Profile文件:Q:平台可以上传多个设备profile么?A:可以。一个应用可以绑定多款不同的设备,所以也就可以上传多个不同的设备profile文件。每个profile是独立的,按照profile编写要求进行编写即可。Q:服务profile中有一个选项option,可选值有mandatory、master等,区别是什么,如何配置?A:该选项目前平台不会做针对性操作。所以该选项用于开发者对自身设备服务的一种备注信息。例如:对于一个门磁传感器,则开关一定是master服务。Q:上传的压缩包必须是zip格式么?A:是的,否则无法上传。Q:上传的压缩包名字的格式是什么?A:deviceType_manufacturerId_model.zip。例如:在编写设备profile时,命名deviceType为MultiSensor,manufactuterId为eSDK,model为v01,则压缩包名应为MultiSensor_eSDK_v01.zip。Q:json文件中的内容可以配置为中文么?A:目前不支持。Q:在编写服务能力描述文件的时候,dataType类型,有string、int、string list、decimal、DateTime、jsonObject等,这个decimal这个类型是多大数据范围,另外精度如何?A:这个字段只是一个描述性的字段,是个小数格式即可,float、double均可。Q:设备profile文件中properties字段可以为null吗?A:一个服务可以同时有命令和属性,也可以只有其中一个。命令和属性的组合合理就可以了。比如亮度的调节命令和亮度的上报适合放在一个服务里面。Q:南向设备商用后,如果需要更新,添加服务,那已经注册的设备是否需要重新绑定?A:不需要重新绑定。如果设备manufacturerId、model、devicetype等基础信息不变,只是更新或添加服务,那么只需要上传更新的设备Profile和对应的新的编解码插件即可。并不需要重新注册已经添加成功的设备。2,编解码插件:Q:能否不开发编解码插件,让平台进行透传?A:不可以。如果ISV对上传到平台的数据保密性要求较高,可以自行对上报数据进行加密,但是不可使用透传,编解码插件必须开发。Q:打包程序时,是否需要打包依赖的库?A:需要。详情可以解压缩华为支持组提供的Demo。Q:编解码插件上传平台后与应用绑定吗?A:不与应用绑定,而是与设备Profile绑定。 编解码插件在上传平台是需要配置manufacturerId、model信息,这样就与profile里面配置填写这两个字段相同的设备有了映射关系,当有这种类型设备的数据到达平台后,都会调用这一个编解码插件。Q:上报数据,可以不返回数据上报响应么?A:可以,对应的编解码插件的接口返回null即可。Q:下发的信令,设备端是否可以不响应?A:不可以,设备端如果不发送信令执行结果给平台,则平台将持续发送该命令,直到命令过期。3,南向设备(包括SoftRadio):Q:串口输出内容,但是SoftRadio没有显示,为什么?A:如果使用串口调试工具,可以看到串口输出内容,但是SoftRadio没有内容的显示。则检查是否每条AT命令都以“/r/n”结尾。如果不以“/r/n”结尾,则SoftRadio认为命令没有接受完毕,不会显示。Q:打印AT_ERROR,原因是什么?A:AT命令无法辨识,格式有错。建议用串口调试工具进行输出,看看命令是否完整,格式是否正确,如果无法确认,可以发给华为支持组寻求帮助。Q:南向设备通过串口发送的AT命令,AT+NMGS后的数据内容是什么格式?A:后面的内容分为两个部分,length和data,中间以逗号分开。Data部分为一串16进制数,每两个16进制数表示一个byte;length表示byte的数量。例如:要发送0ACD12FF,则为4个byte,命令为AT+NMGS=4,0ACD12FFQ:在SoftRadio点击绑定按钮时,status显示“Fail: The IOT server is failed to process device binding request”A:①可能原因是由于在注册设备时,NodeID和verify Code不是TEST$_XXX的形式;②可能是注册设备时Node ID和 Verify Code 不相同,Node ID和Verify Code必须完全相同;③可能是之前已经绑定一个相同的Node ID的设备成功,在softradio里面删除再进行绑定也会报这个错误。Q:点击绑定按钮时,status显示“Fail: Device binding times out.”A:①可能原因网络不通;②PlatformConfig IP或端口设置有误,尤其是PORT,务必于华为平台支持人员确认SoftRadio的连接端口。Q:使用NB模组时,如何使设备上线?A:NB设备上线需要上报数据,但不一定是上报Profile中设定的属性的数据。只需要上报的数据能够在编解码插件内解析成功。上报的数据里面将带有IMEI,平台调用了编解码解析成功后,这个设备就上线了。Q:是不是必须按照文档中所述,使用AT+NMGR命令从SoftRadio或者NB模块中获取数据响应和命令?有没有办法让SoftRadio和NB模块直接推送?A:有。只需要提前执行AT+NNMI=1,进行配置。4,北向应用:Q:北向应用开发对JDK版本是否有要求?A:是的,必须JDK8及以上版本。(TLS1.2的支持)Q:在物联网解决方案的开发过程中,北向应用是否必须?A:是的,由于设备的添加需要北向应用注册、南向设备绑定,所以北向应用必须存在,才能完成南向设备的功能调试。如果开发者目前不想开发北向,只愿意专注于南向开发,可以通过github下载北向调试工具(分享于本系列第3篇)。Q:规则引擎配置短信通知无效,为什么?A:研发用的OceanConnect没有配置短信服务器,所以短信无法发送。可以先用发送邮件的方式进行调试,正式部署的平台将会有短信服务器。Q:鉴权接口的AppID与secret来源是什么?A:AppID和secret为应用在华为平台上的一组“用户名”、“密码”。开发者如果获取到了SPPortal的访问权限,则可以自行创建应用,从而获取;或者通过华为平台支持人员,代为创建,创建完毕后,华为平台支持人员将发送这组信息给开发者。Q:何时选择HTTP、何时选择HTTPS连接?A:开发时,推荐使用HTTPS的连接方式,连接端口8743,使用开发通用证书;如果因为网络原因的限制,可以使用HTTP连接方式,连接端口8090(不是所有支持平台都开放了该端口,请事先与华为平台支持人员确认,且需要平台进行白名单设置)。Q:开发NB-IoT方案时,参考开发者社区的API北向参考,是否可以?A:不可以。开发者社区的API北向参考针对Agent、Agent Lite方案,有部分接口和NB-IoT方案是不同的,比如发送命令到设备端。建议向devcenter.huawei.com索要API北向参考(For NB-IoT)。Q:现在设备上报平台的数据,都会保存在平台上,那么平台能够保存多少数据呢?A:IoT平台有一个定时器,每20分钟检测一次历史数据。符合以下两种情况中的一种,部分数据会被删除:1. 若检测到整个IoT平台保存的历史数据条数超过10万条。2. 若检测到有历史数据产生时间到当前时间大于90天。上面两个条件“10万条”和“90天”都是在平台后台可以配置的。删除数据都是删除老数据保存新数据。持续更新中...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签