• [问题求助] 【iot设备接入】模型定义中属性的权限不足
    如图所示,对于属性的权限只有可读可写,可执行权限消失了?怎么处理?
  • [问题求助] NB设备接入华为云时报错,一直不能接入[续问]
    因为nb设备接入华为云报错,现在想从nb卡本身和连接华为云两方面确认问题,目前操作是:windows的cmd ping 华为云ip不通,用AT+NPING=119.3.250.80也不通,但是AT+NPING=180.101.49.12(百度的ip)是通的,这个可以说明nb卡可以正常连网,但是连华为云有问题吗?
  • [问题求助] NB设备接入华为云时报错,一直不能接入
    NB设备接入华为云时,前面各项AT命令返回值都正常,最后设备连接ip时报错,完整命令是AT+NCDP=119.3.250.80,5683,出错log如下:00> <info> app: AT+CSQ:00> +CSQ:17,9900> OK00> 00> <info> app: AT+CEREG?:00> +CEREG:0,100> <info> app: AT+CFUN\r\n:00> +CFUN:100> OK00> <info> app: AT+NCDP\r\n:00> +CME ERROR: 50请大家指教,谢谢!
  • [问题求助] 设备接入
    设备接入 IoTDA 的设备消息可以通过SMN下发吗?如何关联?
  • [问题求助] 【小熊派】【华为云设备接入】设备已注册但是连接华为云失败
    【功能模块】小熊派开发板、NB通信模组【操作步骤&问题现象】1、按照iLearningX视频教程配置华为云平台,配置编解码插件,注册产品2、在iot-link中配置网络参数,编译、烧写oc-agriculture-demo教程(设别识别码已经修改为自己的)3、尝试在控制台中进行在线调试,设备状态一直显示未激活4、用iot-studio的通信模块检测工具检测,网络连接状态检测,显示查询EPS网络注册状态指令超时未响应,EPS registration status: Not registered, but UE is currently trying to attach or searching an operator to register to.【截图信息】产品信息设备信息通信模组检测工具截图【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【IoTDA产品】【自定义topic功能】订阅自定义topic可以直接接收到发布的内容吗?
    【操作步骤&问题现象】1、用mqtt.fx连接iot,订阅自定义的topic(有发布和订阅权限)。在向该topic发布消息,控制台消息跟踪处可以看到发送的消息,但订阅端接收不到?【截图信息】订阅端:控制台消息跟踪接收到了:
  • [问题求助] 【DDC,AR502,IoTDA产品】【数据上报下行功能】
    开发的项目需要将真实的设备接入到沃土平台Appcube里面,整体方案数据链路为: 上行:DDC上报数据到=》AR502(华为硬件)上报数据到=>华为云IoTDa数据平台=》沃土平台Appcube下行:沃土平台Appcube =》华为云IoTDa数据平台=>AR502 =》DDC 其中AR502和IoTDA和沃土平台Appcube均是华为的产品AR502上安装了华为的MessageFlow和HlinkGateway  想要调通整个链路,需要进行那些配置呢,有没有具体的解决方案? 如果有,麻烦帮忙提供一下
  • [公告] 华为云IoT设备接入服务全体验
    前言:在开始本文之前,我们先问问自己下面两个问题:问题一:物联网慢慢渗入千行百业,其快速发展已成必然,但是在发展的过程中有没有什么挑战呢?问题二:目前在智能制造行业很多物联网设备,都是依赖边缘网关的,也即,通过边缘网关来接入物联网,那么为什么要使用边缘网关呢?边缘网关有什么好处呢?我们将通过下面的文章,来一一解答。一、物联网带来的机遇经调查数据显示,目前已经有60%的企业,现在正在使用或者是即将部署IoT业务;有24%的企业IT预算,会用于IoT相关的一些投资;同时,已经有63%的企业,通过IoT的部署,已经收获非常丰厚的回报。物联网在经济中正在发挥着越来越重要的作用。关于物联网的更多的数据可以见下图:同时,我们可以看到,在实际生活当中,也遍布了物联网的身影:智慧抄表、智慧路灯、智慧井盖、车联网、智慧零售、智慧门店……物联网已经深深的渗入到各行各业,并且推动着相关行业的数字化转型,引领着行业做着非常深远的变革。回顾历史,我们可以总结发现,在互联网经济中,一共有三波“浪潮”:第一波:信息服务业数字化,主要是在2000年至2015年。互联网公司的发展,通过互联网软件数字化,已经推动了相关的行业进行物联网转型。而这,已经是过去式了;第二波:服务产业数字化,集中在2014-2020年,主要是以电信、银行、政府、医疗、出版、零售等等为代表的传统服务+互联网技术进行着数字化。这一阶段已经基本完成;第三波:实体经济数字化,从2015年至今。其中包括我们最为关注的制造业、能源、交通、农业等等涉及到民生的一些大的行业的变化,这是正在发生变革的一波“浪潮”。从国家的十一五/十二五规划到十三五的规划,到近期热议的“新基建”,都在推动制造业产业升级。可目前我国制造业规模庞大、但大而不强,自主创新能力不足,该如何提升呢?数字化转型正是提升制造业竞争力的关键途径。二、物联网带来的挑战物联网带来的红利无疑是巨大的,但是同时,也带来也一定的挑战:挑战一:让“物”说话在让“物”说话的过程中,我们的关键挑战在于:大量现存设备未被数字化;多样化设备、各行业协议、各行业通信方式不同;设备要求低功耗、低成本;设备安全问题突出。我们目前让设备入网的最常用的就是传感器。传统的传感器只是模拟信息量的记录,无法对记录进行分析处理。因此,第一步,需要将传感器所有的感知数字化,用非常客观的数字来表达诸如温度、压力、位置等等信息。同时,我们需要在传感器能够感知的基础上,让它“学会表达”,也就是网络化,通过连接上网,让“物物相连”。先数字化,然后网络化,这是让“物”说话的第一步。挑战二:让“物”说一种话让“物”说一种话的关键挑战在于:百万种数据元素,缺乏标准和规范;多样化数据格式;各厂商“烟囱式”发展,数据孤岛林立,数据互通困难。目前的一些设备,因为行业不同,生产厂家也是不同的,比如路灯、井盖、水表等等,都是不同的厂家生产的。那么,在生产过程中,它们所使用的协议、接入方式有可能都是不一样的,就相当于不同国家的人,没有统一的语言,完全无法沟通。因此,我们需要在各种设备之间,“架起桥梁”,让它们说同一种话,这也就是我们的“物模型”,或者“产品模型” 。让数据标准化,统一物模型,让“物”说同一种话。挑战三:让“物”说有价值的话让“物”有价值的话的关键挑战在于:海量数据带来算力、存储问题;实时流、时序、离线、多维分析复杂;行业应用场景复杂;商业闭环、价值变现和分配问题。如何让数据变得有价值,是制造业面临的一个巨大挑战。海量的数据出现之后,我们需要从各个方面去分析:时间维度、冷热数据、有价值的数据和没有价值的数据等等,从而得到一个完整的数据分析,进而能够对“物”进行决策,让数据有价值。以上即是物联网面临的主要的挑战。可以看到,“万物互联”并不是一件简单的事情。而回归到制造业,在制造业的数字化落地过程中,企业发现,数据的量非常大,流通起来非常困难,数据采集的周期也非常短,基本以秒为单位。同时,数据如何使用,都已经被限制。因此,具体到制造业,数字化的过程中还有如下问题:无法做个性化定制:全要素采集非常困难;无法网络化协同:多域数据流打通难;无法智能化生产:数据大、维度多分析难;无法服务化延伸:产品智能化服务开发难。三、华为云IoT设备接入服务解读(一)设备接入服务解决方案架构图:互联网的用户,都有一个基本的认知,那就是“数据不会凭空产生”。数据都是通过采集进而上报上来的。华为云IoT设备接入服务,即是进行数据采集工作的一个工具,或者说,平台。以下是华为云IoT的物联网解决方案架构图:华为云IoT云服务,以LiteOS为操作系统,赋能设备以“感知”的能力,同时,通过SDK让设备有网络化的能力;设备网络化之后,通过网关等方式接入华为云IoT的物联网平台(包括设备接入服务、设备发放服务、全球SIM联接以及数据分析服务等等),进行数据上报、命令下发等操作;再通过API方式,连接到物联网应用,打造智慧交通、智慧城市、智慧园区等等各种智慧场景。当然整个框架里面也有很多华为云其他的服务,比如数据库等等,来支撑上层物联网应用的使用。其中,设备接入服务,提供海量设备的接入和管理能力,配合华为云其他服务同时使用,帮助客户快速端到端构筑满足要求的物联网解决方案。其包括多网络接入、设备联动规则、产品模型开发等等功能,通过这些微服务,为设备接入提供一个整体服务管理能力。(二)华为云IoT设备接入服务通信模型让“物”说话,只是一个拟人的修辞手法,我们实际上要做的,是要让设备使用一种通信方式进行“沟通”。那么我们要如何将一个设备抽象出来进行分析处理呢?首先,是属性上报。通过相关的协议解析,属性上报之后,基于模型管理,会把设备的属性分成属性、命令、事件和透明的消息模式,而这些,我们又可以通过schema的形式进行描述;而在上层应用,我们也会按照这样的模型进行相关的处理。 接下来,我们详细介绍一下设备接入服务的各个能力。1、产品模型(Profile):统一的数据&通信模型上述这样的一个统一的数据模型是如何形成的呢?这里引入了一个“编解码插件”的概念。具体的方式如下:定义产品:这里有两种方式进行定义:方式1:设备厂商通过SP Portal在线编辑Profile;方式2:设备厂商获取平台提供的样例Profile,根据自身业务进行修改,生成自己业务所需Profile;快速生成插件插件生成:平台提供开发者Portal,通过开发者Portal基于自己定义的Profile,快速生成插件;插件部署:对于完成的插件支持一键快速部署;价值对于上层应用价值:降低上层应用对设备管理复杂度,通过在平台规模不同厂家的数据,形成统一的Profile,上层应用无须感知不同设备的差异;对设备厂商价值:无须修改设备代码,通过插件适配不同企业的诉求,降低设备厂家的维护复杂度。2、规则引擎:数据流转&设备联动我们再来结识一下设备接入的另一个强大的功能:规则引擎。通过规则引擎,我们可以把上报的数据上传到相关的服务(比如数据分析服务等等),引发多设备协同(提醒、告警通知、状态报告等等)。3、构筑边云协同、泛接入、可信的智能IoT边缘服务:IoT边缘,即除了提供云端的能力以外,通过边缘也会构筑大量的能力,包括泛接入能力、本地自治、行业应用等等。特别需要介绍一下,泛接入能力能够满足除了一些相对标准的协议接入以外,还能提供一些私有协议的接入。在边缘之上,也会集成前面说的行业插件能力。通过这种第三方行业插件的能力,能够接入各种各样的设备。4、基于规则的设备联动,边云协同实现多场景业务自定义边缘侧的设备联动,可以和云端的IoTDA接入服务做统一的协同。5、网络异常时提供本地自治能力,确保业务连续性本地自治的能力很好理解。一般来说,当网络异常的时候,边缘的站点,是贴近设备的。贴近设备的时候,根据自己的管理能力,为接入的设备提供服务,也就是说当网络边缘站点跟云端的网络出现异常情况的时候,可以通过本地自治管理,能够保证业务的连续性。四、华为云IoT设备接入服务快速接入&演示接下来,结合一个产线的设备来实际演示一下设备是如何接入物联网平台的。我们需要准备的物料有:边缘网关(Atlas500)边缘网关集成标准MODBUS协议PLC(镭雕机,含设备网关MODBUS Sever和采集器)接入到边缘网关边缘网关集成私有设备接入协议(集成对应协议解析的容器/进程服务)PLC(贴片机)采用私有TCP协议介入到边缘网关具体流程:1、进入IoTDA服务:https://www.huaweicloud.com/product/iothub.html,点击“立即使用”2、进入设备接入服务页面,创建产品:通过控制台的产品页面,可以预先从属性、服务、设置的命令、事件等等每个维度去定义每一种产品,以下简单介绍比较重要的几个产品模型:IoT边缘:edge_node,创建产品并定义相关产品模型。每个模型的属性,对应一个服务的类型,如edge_access,即是负责MODBUS的设备接入镭雕机:LaserMarkingModbus。模型较为简单。通过镭雕机上报雕刻的速度、电流和LED灯等等。镭雕机的设备网关:modbus_server。主要用来设置与MODBUS设备对接的相关的参数,比如连接类型、鉴权、IP地址端口等等信息。贴片机:Mounter1。较为复杂,里面除了基本的信息,如产品版本、产品名称、加工程序名等等,还包括如加工结果、设备状态、压缩空气气流等等所有涉及到贴片工艺相关的一些参数3、进入“设备”:“设备”里的HDC2021 Training就是本次实验所需的设备在“设备”的概念里,“设备”是分层级的,HDC2021 Training所属产品是我们之前定义的“edge_node”,同时,它又有两个子设备:training_server(镭雕机)和MountDevice0425(贴片机)。4、注册子设备:在HDC2021_Training/training_server下注册Modbus子设备选择产品:进行数据采集配置添加子设备,并点击“确定”:完成以上就是一个简单的设备接入的演示。华为云IoT平台除了可以使用网关接入,还可以采取直连(MQTT)的方式,对硬件没有特殊的要求,大家有时间可以自行前往进行体验。五、华为云IoT设备接入服务小结回顾我们在一开始提出的问题,我们在经过这一阶段的讲解之后,可以做出这样的回答:问题一:物联网慢慢渗入千行百业,其快速发展已成必然,但是在发展的过程中有没有什么挑战呢?答:前面说过的三大挑战:让“物”说话,让“物”说同一种话,让“物”说有价值的话。也即,让设备数据化、网络化、标准化,同时需要有数据分析能力,让数据能够价值最大化。问题二:目前在智能制造行业很多物联网设备,都是依赖边缘网关的,也即,通过边缘网关来接入物联网,那么为什么要使用边缘网关呢?边缘网关有什么好处呢?答:边缘网关对网络可靠性、安全性的增强,是非常有利的,同时能够增强本地多个单设备的本地闭环也有这明显的好处。通过上述的讲解和实验,我们可以看到华为云IoT设备接入服务提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。一起来体验一下吧~
  • [技术干货] 鸿蒙(二)基于小熊派实现LOT上云的智慧家居项目
    手把手教你利用鸿蒙OS实现智慧家居·LOT上云项目一、前言今天使用鸿蒙OS,做一个LOT上云的智慧家居项目。我们想实现的场景是这样的:云端WEB有一个控制界面,能够操控家房间里的灯和风扇,同时将房间里温度、湿度、光强实时显示出来。二、案例思路先讲一下大致的思路,可以分为两个部分:先配置云服务器,再编写底层MCU的业务代码,实现数据采集与联网上报。逻辑上没有复杂的东西,但贵在走通整个流程。和普通RTOS上云的方案差不多,具体差异在软件方面。1、准备工作云服务器的配置,不算复杂,主要是前端的处理和显示,可以先在服务器调通,再根据云服务提供的API,进行访问。硬件环境使用小熊派·鸿蒙季开发板和E53_IA1扩展板(有温湿度光强传感器和电机)。具体如何创建工程,可以参考我的上一篇文章,这里采用Windows环境下的开发方式。无论是基于HPM还是Docker环境获取鸿蒙源码创建工程,都很简单。这个Demo,我们将会用到鸿蒙OS的内核子系统和驱动子系统。内核子系统主要使用线程相关的API(基于CMSIS-2.0)和网络服务相关的API(socket);驱动子系统主要调用底层的GPIO和硬件I2C,控制外部设备。在内核子系统和驱动子系统上,我们还需要一个组件(软件包),物联网通信协议MQTT,利用它进行上云服务。列一下主要的资源和工具:硬件:小熊派 · 鸿蒙季开发板E53_IA1扩展板源码:Hi3861开发板的源码,来源Hb,适用于windows环境IDEvscode(IDE平台)DevEco Device Tool (IDE组件,可选)RaiDrive本地环境:windows10 64位ubuntu18.04云环境:HUAWEI-LoTCloud(云服务器平台)CloudIDE(可选,用于在线调试API接口)下面,跟着我具体的操作,一步一步实现整个方案,内容比较多,务必提前装好环境,可以先看看前面的文章,把环境搭建起来。2. 云端操作先讲云服务器这里。为了方便验证,我们首选华为云服务器(腾讯云、阿里云也可,原理大同小异)。操作流程大致如下:设备接入华为云平台之前,需要在平台注册用,已注册过的可忽略这一步。华为云地址:https://www.huaweicloud.com/登陆以后,在华为云首页单击控制台,进入产品控制终端,这里包含了各种云服务的产品。选择云服务器的地点为华为-北京四。点击左侧的 服务器,找到物联网,选择设备接入IoTDA 并立即使用。或者在搜索输入 设备接入IoTDA跳转过去。下次选择这个服务时,直接点击搜索栏下的最近访问的服务,就能快速进入相应的服务当中,非常方便。点击产品,选择创建产品,填写产品信息。「所属资源空间」选择默认,「产品名称」这里填写一个Smart_House(根据自己喜好写一个),「协议类型」选择MQTT就好,「数据格式」为JSON,「厂商名称」填写一口Linux,「设备类型」填写senser。点击确定,完成产品的创建。创建完毕,弹出产品创建成功的窗口消息。点击产品列表的「查看」,进行设备的相关操作。定义一个服务模型,「服务ID」随便起名字,这里填入Agriculture,「服务类型」填入senser。点击确定,完成服务的添加。接下来为服务设置属性和命令,这里规定了数据通信的基本格式。点击「添加属性」,以温度为例,「属性名称」填写Temperature,「属性描述」填写温度,「数据类型」为整型,「访问权限」为可读,剩下的默认即可。其中「属性名称」的内容,要与后面我们在MCU中发送的信息保持一致,这里先提一句。与温度类似,我们依次填写如下内容,不同的是灯和电机,两个的「数据类型」是字符串,「长度」为3。下图列举了灯的属性和其他的设备属性总览。接着添加服务命令,点击「添加命令」,依次输入「命令名称」,再点击「新增输入参数」。新增输入参数和服务属性差不多,这里是字符串的数据类型,输入枚举值,用英文逗号做分割。我们来看一下所有的属性和命令,差不多就这样:我们往下进行,点击「设备」,选择「注册设备」填写设备属性,「所属资源空间」选择默认账户的即可,「所属产品」选择上面自己创建的产品,「设备标识码」填写senser,「设备名称」填写house,其他保持默认,点击确定完成创建。设备创建成功以后,有两个重要信息需要保存,分别是设备ID和设备密钥。设备ID:   60cdaf505f880902bcaa161c_senser设备密钥: 4a423f69b41806de0d8ed77e145534e7接着我们利用获取的密钥,生成直连MQTT所需的ClentID,通过这个链接跳转:https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/以上,我们云服务器的配置,先到此为止,接下来就是MCU终端上的软件编写。在我们完成软件编写以后,在进行两边的联调测试。三、软件编写我们使用的鸿蒙OS源码,已经包含了MQTT等常用的模块,在示例工程中可以方便的查找。这里先简单讲一下目录结构,熟悉一下整个鸿蒙OS在源码框架上的细节。这里使用的鸿蒙源码工程,由HPM包管理器获取,具体源码结构如下:我们列一张表,看看每一个文件夹具体承担了哪些职能:文件名称    描述applications    BearPi-HM_Nano开发板应用案例base    系统的基础服务,主要使用DFX子系统、启动文件、硬件适配接口等kernel    内核子系统ohos_bundles    厂家提供的一些组件和服务third_party    第三方组件foundation    系统服务框架子系统、WAN开发headers    存放main头文件src    存放 main源文件utils    公共基础库test    XTS认证子系统vendor    硬件抽象层build    编译构建子系统out    存放编译文件bin    存放二进制文件适合本文项目的代码示例,在applications文件夹,具体目录为:applications\BearPi\BearPi-HM_Nano\sample\D6_iot_cloud_oc。这里列一下目录文件结构:文件名称    描述E53_IA1.c    扩展板驱动oc_mqtt_profile_package.c    打包和配置MQTT数据oc_mqtt.c    MQTT连接服务wifi_connet.c    wifi连接服务iot_cloud_oc_sample.c    业务逻辑代码我们主要要用到的API如下,具体实现的细节,可以到源文件里面去阅读。可以分为初始化和数据上传两个部分。1. 初始化1)设备信息void device_info_init(char *client_id, char * username, char *password);设置设备信息,在调用oc_mqtt_init()前要先设置设备信息参数    描述无    无返回    描述0    成功-1    获得设备信息失败-2    mqtt 客户端初始化失败2)华为IoT平台 初始化int oc_mqtt_init(void);华为IoT平台初始化函数,需要在使用 华为IoT平台 功能前调用。参数    描述无    无返回    描述0    成功-1    获得设备信息失败-2    mqtt 客户端初始化失败3)设置命令响应函数void oc_set_cmd_rsp_cb(void(*cmd_rsp_cb)(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size));设置命令响应回调函数。参数    描述recv_data    接收到的数据recv_size    数据的长度resp_data    响应数据resp_size    响应数据的长度返回    描述无    无2. 数据上传1)设备消息上报int oc_mqtt_profile_msgup(char *deviceid,oc_mqtt_profile_msgup_t *payload);是指设备无法按照产品模型中定义的属性格式进行数据上报时,可调用此接口将设备的自定义数据上报给平台,平台将设备上报的消息转发给应用服务器或华为云其他云服务上进行存储和处理。参数    描述deviceid    设备idpayload    要上传的消息返回    描述0    上传成功1    上传失败2)设备上报属性数据int oc_mqtt_profile_propertyreport(char *deviceid,oc_mqtt_profile_service_t *payload);用于设备按产品模型中定义的格式将属性数据上报给平台。参数    描述deviceid    设备idpayload    要上传的消息返回    描述0    上传成功1    上传失败属性上报和消息上报的区别,请查看消息通信说明3)网关批量上报属性数据int oc_mqtt_profile_gwpropertyreport(char *deviceid,oc_mqtt_profile_device_t *payload);用于批量设备上报属性数据给平台。网关设备可以用此接口同时上报多个子设备的属性数据。参数    描述deviceid    设备idpayload    要上传的消息返回    描述0    上传成功1    上传失败4)属性设置的响应结果int oc_mqtt_profile_propertysetresp(char *deviceid,oc_mqtt_profile_propertysetresp_t *payload);参数    描述deviceid    设备idpayload    消息返回    描述0    上传成功1    上传失败5)属性查询响应结果int oc_mqtt_profile_propertygetresp(char *deviceid,oc_mqtt_profile_propertygetresp_t *payload);参数    描述deviceid    设备idpayload    消息返回    描述0    上传成功1    上传失败6)将命令的执行结果返回给平台int oc_mqtt_profile_cmdresp(char *deviceid,oc_mqtt_profile_cmdresp_t *payload);平台下发命令后,需要设备及时将命令的执行结果返回给平台,如果设备没回响应,平台会认为命令执行超时。参数    描述deviceid    设备idpayload    要上传的消息返回    描述0    上传成功1    上传失败3. 编写业务逻辑1)连接平台准备好上文我们获取的连接信息(ClientId、Username、Password),一个可以上网的WIFI(账户和密码),注意不可以用5G频段。#define CLIENT_ID "60cdaf505f880902bcaa161c_senser_0_0_2021062002"#define USERNAME "60cdaf505f880902bcaa161c_senser"#define PASSWORD "e7f839333a8d3618a975e2626df1462f67202f3f4103080fe8d6f05df0fa7ce3"WifiConnect("TP-LINK_65A8","0987654321");device_info_init(CLIENT_ID,USERNAME,PASSWORD);oc_mqtt_init();oc_set_cmd_rsp_cb(oc_cmd_rsp_cb);2)推送数据当需要上传数据时,需要先拼装数据,然后通过oc_mqtt_profile_propertyreport上报数据。代码示例如下:/** * @brief      处理上报的数据。 * @details   Process the reported data. * @param[in] report  需要上报的数据。The data to be reported. * @return    None***/static void deal_report_msg(report_t *report){    /** 定义服务ID句柄 */    oc_mqtt_profile_service_t    service;    /** 定义温度的上报数据句柄 */    oc_mqtt_profile_kv_t         temperature;    /** 定义湿度的上报数据句柄 */    oc_mqtt_profile_kv_t         humidity;    /** 定义亮度的上报数据句柄 */    oc_mqtt_profile_kv_t         luminance;    /** 定义电灯的上报数据句柄 */    oc_mqtt_profile_kv_t         led;    /** 定义电机的上报数据句柄 */    oc_mqtt_profile_kv_t         motor;    /** 初始化要上报的服务ID数据 */    service.event_time = NULL;    service.service_id = "Agriculture";    service.service_property = &temperature;    service.nxt = NULL;        /** 初始化要上报的温度数据 */    temperature.key = "Temperature";    temperature.value = &report->temp;    temperature.type = EN_OC_MQTT_PROFILE_VALUE_INT;    temperature.nxt = &humidity;        /** 初始化要上报的湿度数据 */    humidity.key = "Humidity";    humidity.value = &report->hum;    humidity.type = EN_OC_MQTT_PROFILE_VALUE_INT;    humidity.nxt = &luminance;        /** 初始化要上报的亮度数据 */    luminance.key = "Luminance";    luminance.value = &report->lum;    luminance.type = EN_OC_MQTT_PROFILE_VALUE_INT;    luminance.nxt = &led;        /** 初始化要上报的电灯数据 */    led.key = "LightStatus";    led.value = g_app_cb.led?"ON":"OFF";    led.type = EN_OC_MQTT_PROFILE_VALUE_STRING;    led.nxt = &motor;        /** 初始化要上报的电机数据 */    motor.key = "MotorStatus";    motor.value = g_app_cb.motor?"ON":"OFF";    motor.type = EN_OC_MQTT_PROFILE_VALUE_STRING;    motor.nxt = NULL;        /** 将属性数据上报给平台 */    oc_mqtt_profile_propertyreport(USERNAME,&service);    return;}3)命令接收华为IoT平台支持下发命令,命令是用户自定义的。接收到命令后会将命令数据发送到队列中,task_main_entry函数中读取队列数据并调用deal_cmd_msg函数进行处理,代码示例如下:/** * @brief      将命令数据发送到队列。 * @details   Send command data to the queue. * @param[in] recv_data  接收的数据 * @param[in] recv_size  接收数据的大小 * @param[in] resp_data  接收的上报数据 * @param[in] resp_size  接收的上报数据的大小 * @return    None***/void oc_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size){    app_msg_t *app_msg;    int ret = 0;    app_msg = malloc(sizeof(app_msg_t));    app_msg->msg_type = en_msg_cmd;    app_msg->msg.cmd.payload = (char *)recv_data;    printf("recv data is %.*s\n", recv_size, recv_data);        /** 送入队列 */    ret = osMessageQueuePut(mid_MsgQueue,&app_msg,0U, 0U);        if(ret != 0){        free(recv_data);    }    *resp_data = NULL;    *resp_size = 0;}/** * @brief      线程入口,读取队列数据并处理。 * @details   Thread entry, read queue data and process. * @param[in] None * @return    None***/static int task_main_entry( void ){    app_msg_t *app_msg;        /** 连接WIFI */    WifiConnect("TP-LINK_65A8","0987654321");    /** 注册设备的连接信息*/    device_info_init(CLIENT_ID,USERNAME,PASSWORD);    /** 初始化MQTT*/    oc_mqtt_init();    oc_set_cmd_rsp_cb(oc_cmd_rsp_cb);    while(1){        app_msg = NULL;        (void)osMessageQueueGet(mid_MsgQueue,(void **)&app_msg,NULL, 0U);        if(NULL != app_msg){            switch(app_msg->msg_type){                case en_msg_cmd:                    deal_cmd_msg(&app_msg->msg.cmd);                    break;                case en_msg_report:                    deal_report_msg(&app_msg->msg.report);                    break;                default:                    break;            }            free(app_msg);        }    }    return 0;}/** * @brief      解析命令,并给出处理的结果。 * @details   Thread entry, read queue data and process. * @param[in] cmd 命令。 * @return    None***/static void deal_cmd_msg(cmd_t *cmd){    cJSON *obj_root;    cJSON *obj_cmdname;    cJSON *obj_paras;    cJSON *obj_para;    int cmdret = 1;    oc_mqtt_profile_cmdresp_t  cmdresp;    obj_root = cJSON_Parse(cmd->payload);    if(NULL == obj_root){        goto EXIT_JSONPARSE;    }    obj_cmdname = cJSON_GetObjectItem(obj_root,"command_name");    if(NULL == obj_cmdname){        goto EXIT_CMDOBJ;    }    if(0 == strcmp(cJSON_GetStringValue(obj_cmdname),"Agriculture_Control_light")){        obj_paras = cJSON_GetObjectItem(obj_root,"paras");        if(NULL == obj_paras){            goto EXIT_OBJPARAS;        }        obj_para = cJSON_GetObjectItem(obj_paras,"light");        if(NULL == obj_para){            goto EXIT_OBJPARA;        }        ///< operate the LED here        if(0 == strcmp(cJSON_GetStringValue(obj_para),"ON")){            g_app_cb.led = 1;            Light_StatusSet(ON);            printf("Light On!");        }        else{            g_app_cb.led = 0;            Light_StatusSet(OFF);            printf("Light Off!");        }        cmdret = 0;    }    else if(0 == strcmp(cJSON_GetStringValue(obj_cmdname),"Agriculture_Control_Motor")){        obj_paras = cJSON_GetObjectItem(obj_root,"paras");        if(NULL == obj_paras){            goto EXIT_OBJPARAS;        }        obj_para = cJSON_GetObjectItem(obj_paras,"motor");        if(NULL == obj_para){            goto EXIT_OBJPARA;        }        ///< operate the Motor here        if(0 == strcmp(cJSON_GetStringValue(obj_para),"ON")){            g_app_cb.motor = 1;            Motor_StatusSet(ON);            printf("Motor On!");        }        else{            g_app_cb.motor = 0;            Motor_StatusSet(OFF);            printf("Motor Off!");        }        cmdret = 0;    }EXIT_OBJPARA:EXIT_OBJPARAS:EXIT_CMDOBJ:    cJSON_Delete(obj_root);EXIT_JSONPARSE:    ///< do the response    cmdresp.paras = NULL;    cmdresp.request_id = cmd->request_id;    cmdresp.ret_code = cmdret;    cmdresp.ret_name = NULL;    (void)oc_mqtt_profile_cmdresp(NULL,&cmdresp);    return;}4. 编译调试修改 applications\sample\BearPi\BearPi-HM_Nano路径下 BUILD.gn 文件,指定 oc_mqtt 参与编译。#"D1_iot_wifi_sta:wifi_sta",#"D2_iot_wifi_sta_connect:wifi_sta_connect",      #"D3_iot_udp_client:udp_client",#"D4_iot_tcp_server:tcp_server",#"D5_iot_mqtt:iot_mqtt",        "D6_iot_cloud_oc:oc_mqtt",#"D7_iot_cloud_onenet:onenet_mqtt",示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,会打印温湿度及光照强度信息。sdk ver:Hi3861V100R001C00SPC025 2020-09-03 18:10:00FileSystem mount ok.wifi init success!00 00:00:00 0 68 D 0/HIVIEW: hilog init success.00 00:00:00 0 68 D 0/HIVIEW: log limit init success.00 00:00:00 0 68 I 1/SAMGR: Bootstrap core services(count:3).00 00:00:00 0 68 I 1/SAMGR: Init service:0x4b8040 TaskPool:0xfa9a400 00:00:00 0 68 I 1/SAMGR: Init service:0x4b8064 TaskPool:0xfb01400 00:00:00 0 68 I 1/SAMGR: Init service:0x4b81c8 TaskPool:0xfb1d400 00:00:00 0 100 I 1/SAMGR: Init service 0x4b8064 <time: 0ms> success!00 00:00:00 0 0 I 1/SAMGR: Init service 0x4b8040 <time: 0ms> success!00 00:00:00 0 200 D 0/HIVIEW: hiview init success.00 00:00:00 0 200 I 1/SAMGR: Init service 0x4b81c8 <time: 0ms> success!00 00:00:00 0 200 I 1/SAMGR: Initialized all core system services!00 00:00:00 0 0 I 1/SAMGR: Bootstrap system and application services(count:0).00 00:00:00 0 0 I 1/SAMGR: Initialized all system and application services!00 00:00:00 0 0 I 1/SAMGR: Bootstrap dynamic registered services(count:0).SENSOR:lum:107.50 temp:33.34 hum:63.95<--System Init--><--Wifi Init-->register wifi event succeed!callback function for wifi scan:0, 0+NOTICE:SCANFINISHcallback function for wifi scan:1, 24WaitSacnResult:wait success[1]s********************no:001, ssid:养只狗叫瑞邦            , rssi:  -53no:002, ssid:电信302                     , rssi:  -63no:003, ssid:412                           , rssi:  -64no:004, ssid:DIRECT-IXLAPTOP-O3K3OKASmsUK  , rssi:  -69...********************Select:  2 wireless, Waiting...+NOTICE:CONNECTEDSENSOR:lum:67.50 temp:33.17 hum:68.33WaitConnectResult:wait success[1]sWiFi connect succeed!begain to dhcp<-- DHCP state:Inprogress --><-- DHCP state:Inprogress --><-- DHCP state:OK -->server :        server_id : 192.168.1.1        mask : 255.255.255.0, 1        gw : 192.168.1.1        T0 : 7200        T1 : 3600        T2 : 6300clients <1> :        mac_idx mac             addr            state   lease   tries   rto        0       e81131641696    192.168.1.123   10      0       1       3SENSOR:lum:79.17 temp:32.77 hum:60.45SENSOR:lum:38.33 temp:32.51 hum:52.88SENSOR:lum:42.50 temp:32.30 hum:50.59SENSOR:lum:42.50 temp:32.11 hum:49.73SENSOR:lum:40.00 temp:31.91 hum:49.74SENSOR:lum:41.67 temp:31.75 hum:49.96回到华为云平台,平台上的设备显示为在线状态点击设备右侧的“查看”,进入设备详情页面,可看到上报的数据在华为云平台设备详情页,单击“命令”,选择同步命令下发,选中创建的命令属性,单击“确定”,即可发送下发命令控制设备。看一下现象:串口打印云端接收的数据,并执行点灯的指令。5. 调试华为云API点击「API检索和调试」,进入API调测界面。目前开放有Java、python、node.js、php等,可以根据个人的需求,构建前端。这里我们先调试API,选择一个设备命令,按照图示操作。注意Body里面的参数,与我们上文产品的属性是一样的,其中paras的参数,填写要符合图片给出的规范,也就是JSON的格式。最后点击调式,给出调试结果,我们的开发板上,灯也被点亮!四、总结云端的操作,要注意和终端软件编写的信息相同,一个是MQTT的连接信息不能出错,还有就是注意名称之间的大小写要相同;终端MCU软件的编写,注意分层设计,先写好各自的功能模块,最后再实现相关的业务逻辑;注意调测,利用好串口和云端MQTT信息跟踪服务;整体走下来,工作量还是蛮大的,需要注意的地方有很多,所以要特别细心。源代码后台回复鸿蒙获取,工程文件可以参考上个文章获取。————————————————原文链接:https://blog.csdn.net/daocaokafei/article/details/118076366
  • [方案构建] 【伊视贝】智联壹号CWAD华为云沃土云创&amp;严选系统构建流程分享
    1.背景:       得益于速度更快的WiFi和5G技术以及机器学习与人工智能的技术演进,很多企业逐步进入实施数字化转型。如全球大约拥有300多亿台物联网设备,物联网技术正在逐渐进入人们的工作与生活中。伊视贝自主研发的【智联壹号CWAD】是一款面向智慧园区&楼宇&酒店等行业的物联网一体化孪生数字建筑云平台,提供建筑运营支撑,提升用户体验,创造新价值和新业务。       华为云提供了多种场景的解决方案,基于华为云平台构建大数据仓库、数据中台,构建大数据中心。利用华为云高阶服务快速实现了平台的开发、部署、维护与升级,极大的提升了平台的开发效率,节约了基础环境搭建成本。使用华为云IOTDA平台的安全接入、设备管理、数据采集、数据流转等场景快速实现了设备接入管理一系列基本业务,为项目在实施与落地上节约了大量时间。2.适用场景:       产品适用于各个建筑综合体,如写字楼、酒店、社区、园区、商场等有数字化转型需求皆可接入平台之中。各个业态通过接入平台后可实现以下价值         1)设备实施智能化管理模式,提升用户体验的同时增加资产价值;         2)设备实时监测与预防,提升设备使用寿命,提升设备管理效率提升资产价值;         3)实现一屏掌控,高效管理,提升物业管理效率,降低人工成本;3.方案架构    4.方案架构说明智联壹号CWAD平台由五部分组成,边缘计算层,华为云IotDA接入层,华为云ECS业务层,华为云高阶服务层,前端展示层。边缘计算层     边缘计算层又分为设备层、边缘驱动采集层、边缘上云层组成,边缘采集后的数据通过华为云IotDA客户端组件把数据上传至华为云IotDA,华为云IotDA上云方式分为CoAP、HTTPS、MQTT三种设备接入方式,CWAD采用了MQTT方式接入,以下是一些边缘客户端接入步骤。     注:CWAD采用的边缘网关统一上云方式,需要通过创建华为云IotDA直连设备做为网关转发,再接入多个采集设备(非直连设备)进行设备数据上传。接入流程     1、华为云IOT上申请免费试用(免费试用期间再),免费试用可以接入100个设备,每天消息的上限为9000条。            2、创建产品         2.1 进入产品列表,去创建产品。                   2.2 创建产品                  2.3 点击产品名称,进入产品详情,创建产品模型。                           3、创建网关设备(对应华为云IotDA的类型叫做直连设备)         3.1.进入产品设备列表                    3.2.注册设备               4、创建监控设备(对应华为云IotDA的类型叫做非直连设备)         4.1.点击网关设备进入网关设备详情                                        4.2 添加子设备,并关联产品,关联产品后,该设备拥有该产品模型下的参数(非直连设备,从属于网关)                      5、创建华为云IotDA对接项目,并导入华为云IotDA对接SDK包         5.1 加载Iot平台的CA证书,进行服务器校验                            5.2 通过子设备的设备ID与校验信息,把设备数据上报                华为云IotDA在使用华为云Iot服务过程中共使用了以下功能,包含安全接入、设备管理、数据采集、流转管理1、安全接入介绍          CWAD应用服务器通过(APPServer)接入认证,收到成功响应后获取AccessToken(其中也可以使用ask的方式,建议使用token方式)。           2、设备管理           CWAD为了方便在应用系统中集成华为云IotDA的设备管理功能,便于在应用系统中能直接维护华为云IotDA里的设备,华为云IotDA提供了对应的接入方法,以下是一些简单的接入步骤。     2.1 创建数据转发规则,设置转发目标(转发目标为CWAD应用服务器地址),并启用规则           2.2 接入华为云IotDA获取产品列表接口(因产品维护较少,还是选择在华为云IotDA控制台上维护)     2.3 编写CWAD设备维护页面与接口代码,并接入华为云IotDA设备添加、删除、查看、修改接口     3、数据采集          数据采集即为上述介绍的边缘计算层流程包含4、流转管理         流转管理为华为云IotDA上创建的转发规则,如上2.1所示,经过流转后,CWAD实现了数据转发接入、存储、展示                     华为云ECS业务层华为云ECS业务层共使用了华为云5台ECS服务器,提供了CWAD的应用服务部署     这5台服务器上发分别搭建了Nginx负载均衡、反向代理、文件服务器、图片服务器、分布式微服务全家桶、Zookeeper(用于服务注册)等服务。        华为云高阶服务层华为云高阶服务层共包含了华为云RDS、华为云DCS、华为云MRS,应用场景如下1、华为云RDS     基于华为云RDS在CWAD中的应用为用户数据、业务数据存储等场景。         2、华为云DCS     基于华为云DCS在CWAD中的应用为用户校验校验、热点数据存储、分布式锁等场景。      3、华为云MRS     基于华为云MRS在CWAD中的应用为数据仓库HDDS,数据列式存储Hbase,数据分布式计算Spark、Hive等。      前端展示层基于华为云ECS部署前端服务器,前端展示层包含Web浏览器、APP、公众号、大屏可视化。                        5.华为云资源清单          6.华为云方案优势说明1、平台优势    华为云平台集成了基础设施到上层应用等一系列平台服务,包括计算,储存,网络与CDN,数据库,容器,应用中间件,管理与监控,视频处理,迁移,大数据,AI,企业应用,物联网,安全,Stack等服务,形成了完整的软件服务生态链,为大中型企业提供了灵活的服务方式,同时可针对企业发展提供很好的扩容支撑。    华为云平台每项服务拥有完善的服务体系,完整的文档手册,可快速了解和使用服务,提高系统搭建和部署效率。系统提供多版本选择,可根据企业系统或者应用的自身情况选择服务,系统运行稳定,操作管理方便快捷,运维人员响应及时,是可信赖的平台。2、组件优势    华为云平台提供了不同的系统与服务组件,一套完整的平台需要不同的组件支撑加上应用服务提供业务服务,在使用华为云之前,我们需要搭建自己的容器、数据库、缓存服务器、大数据平台、NoSQL等,使用了华为云平台后至少在系统组件上我们只需要关注应用服务器即可, 数据库采用了华为云的RDS主备,分布式Redis服务,大数据采用了华为云的MRS服务,避免掉了部署麻烦、安全漏洞、版本不一致、运维困难、环境问题定位等一系列问题。3、运维优势              使用华为云作为载体,每类服务均提供页面化管理和监控,提高了运维效率,降低了运维成本,同时降低了运维门槛。4、安全优势    如ECS服务的定时漏洞检测、负载过高自动报警与及时处理等措施;MRS上的Kerberos安全认证、安全规则、人机用户权限管理等措施。5、成本优势    从环境自建到系统运维,占据了产品成本的很大比重,同时需要源源不断的投入成本进维护和更新,以及新技术人才的引进,给企业带来了沉重的负担。    华为云提供了一站式服务,企业只关心自己的核心产品开发,产品销售与运营,极大的降低了研发成本,维护成本,有更多时间和资金开发产品,做最主要的事情。     7.系统迁移流程      本次系统迁移共经历2个月,期间也有部分审核等待与其他工作处理时间,真正花在迁移上的时间大概为1个月左右,其中包含了多名技术人员与测试共同参与完成本次迁移。迁移准备工作:      1、整理需要迁移SQL需要迁移的库与表的结构,因华为云是一个全新的环境,仅需要迁移对应的结构即可(部分基础表需要迁移数据),并变更服务中使用SQL的配置文件      2、整理需要迁移的NOSQL需要迁移的数据结构,并变更服务中访问NOSQL的配置文件      3、整理迁移环境,其中包含了Nginx、Tomcat、网关、路由、鉴权、平台服务、监控服务、运营服务等等,并整理需要修改的配置文件,以下为部分迁移服务示例。            4、提前熟悉华为云BigData Client SDK包的使用方式,MRS控制台使用,Kerberos认证      5、提前学习与熟悉华为云IOT相关接入流程与开发文档。系统迁移流程:      1、数据库结构迁移(含SQL与NOSQL);      2、组件切换,配置变更,业务服务迁移与部署;      3、大数据环境切换,接入华为云BigData Client SDK,原有的自建大数据环境切换到华为云MRS,主要体现在数据存储目标,计算服务目标等的切换;      4、数据流转迁移(原Kafka切换到华为云IotDA);      5、开发华为云IotDA设备管理页面与接口,接入华为云IotDA设备接入接口,调试完成上线;      6、华为云IotDA创建产品、产品模型、网关、子设备、规则,边缘接入网关与关联子设备,设备接入完成;      7、前端页面重新编译部署,APP重新打包上架;8.相关文档与报告提交以下为本次沃土认证&严选提交的相关文档列表整理(仅包含产品与技术相关文档):      1、《附件3.1【自测试】联合方案场景化集成用例-V1.0.pptx》      2、《附件3.1【自测试】深圳市伊视贝科技有限责任公司-智联壹号系统-功能清单与测试用例模板-v2.1.xlsx》      3、《附件3.2【自测试】深圳市伊视贝科技有限责任公司-智联壹号系统-测试报告模板-v1.0.docx》      4、《附件2.1伊视贝集成华为云高阶服务证明V2.0.pptx》      5、《CWAD压测接口文档.docx》      6、《确认清单与组件、软著名称.xlsx》      7、《伊视贝公司与华为联合测试报告(设备接入云服务IoTDA)V1.0.docx》      8、《华为云严选商品配置-报价-功能清单模板V1.1.xlsx》      9、《伊视贝孪生数字建筑运营服务商CWAD平台功能清单.xlsx》      10、《伊视贝孪生数字建筑运营服务商CWAD平台功能详细说明文档.docx》      11、《CWAD整体方案架构图(华为云).pdf》      12、《附件1.2-伊视贝孪生数字建筑运营服务商.pptx》
  • [交流吐槽] 万物互联时代,爱投斯物联中台如何实现多设备接入、多系统融合,进行统一化管理?
    随着近几年物联网的发展,特别是在2020年提出的新基建,七个关键词中有四个是跟物联网产业紧密相关,这是一个新的发展机遇,也是企业改革的重要节点。十四五规划中,设备接入、多系统数据融合互联互通,是物联网的重点内容,也是产业互联网中大数据、人工智能应用的基础,也是当下普遍存在的痛点,          这些痛点容易形成信息孤岛,使企业不会达到真正意义上的智慧管理,解决这些问题需要大量的人力、财力、时间等成本,是大部分企业无法承担的。基于这种情况,IOTOS®物联中台作为一款技术型平台型产品因此而诞生了。什么是IOTOS®物联中台?专业解释:物联中台中的“物”不仅仅是设备设施等有形的物体,而是广义上的概念。万物互联的对象包含了人、设备、系统、算法、服务。 IOTOS®物联中台作为一款通用级、系统级、工具级、可扩展的物联中台软件,通常包含了采集平台、通信中台和数据中台的全部特性,除了支持数据分析、处理、交易等抽象业务服务外,还涉及采集和通信。除了支持私有部署,还提供跨平台、多语言SDK,支持业务逻辑时序同步回调,支持包括系统内核的二次开发扩展,适合复杂程度不一的产业智慧化项目业务场景。在相关环节上,节省资金成本60%、开发效率提升80%。 通俗解释:一个管理系统,分为前端、后端,那么物联中台作为中间层,起到承上启下的作用,上接应用,下接设备。比如:我们把物联中台比作高架桥的桥面,那么企业设备就好比桥墩,系统应用好比上桥面上奔驰的汽车,二次开发应用好比只需要在桥面上容许多种品牌型号的汽车上路,不同型号的车代表的是不同的应用,也就是物联中台的存在使你不需要为了某种汽车到达某个目的而单独建一条高架桥,避免了重复建设的浪费,降低了建设成本,同时还可以实现可扩展性,那就涉及到高架的二期、三期的工程,物联中台道理也一样。
  • [技术干货] 将华为云平台IoTDA收到的数据转发给Node-red服务器
    在论坛上目前没有搜到IoTDA转给Node-red的教程,自己做了一些研究,也得到了很多人的帮助,回馈社区,希望能够帮助到别人。1、简介本文介绍如何将华为云IoTDA云平台收到的数据转发给Node-red搭建的Http服务器,并且使用Node-red的Dashboard功能显示数据的折线图。目前数据来源是MQTTfx模拟的数据,稍加修改,可用真实的设备通过MQTT等协议向华为云平台发送真实的数据2、准备工作2.1、华为云平台IoTDA账户。2.2、具备公网IP的设备,(如云服务器,或者内网穿透)安装好Node-red服务器。在华为云服务器上安装Node-red教程可参考官方教程,根据自己云服务器的类型选择。https://nodered.org/docs/getting-started/local然后打开Node-red使用的1880端口。     3过程3.1、使用MQTT.fx接入华为云详情参考https://support.huaweicloud.com/devg-iothub/iot_01_2127.html其中有一点容易出错,是MQTT.fx中设置“broker Address”是PING出来的   官方教程中的描述不不够明显   最终实现的效果:MQTTfx能够向IoTDA平台发送数据。   3.2、设置转发规则选择与MQTT.fx相同的资源空间里的设备,创建规则,将数据来源设置为设备属性转发目标选择HTTP,地址为自己的华为云服务公网IP+1880端口+http的post地址。我的httppost地址为“iotda”,这由node-red程序决定。   最后启动规则。 3.3、Node-red的http程序编写Node-red的使用可以参考本人博客里的系列教程https://blog.csdn.net/geek_monkey/category_7744078.html程序的编写主要依据IoTDA的开发指南《使用HTTP/HTTPS订阅推送》https://support.huaweicloud.com/devg-iothub/iot_01_0001.html应用服务器的URL被称为回调地址,本案例的回调地址就是个人的云服务器公网IP+1880端口+http的post地址另外,收到数据的应用服务器需要返回200响应码 由此编写Node-red的数据输入与状态码返回节点。拖入 http in 节点,改为POST,输入URL为/iotda;拖入http response 输入状态码200  3.4、发布数据与消息跟踪通过MQTT.fx向华为云发送数据。 使用物联网平台→监控运维→消息跟踪功能,来确保平台收到消息,而且消息被转发。  可以在Node-red看到数据包里有MQTT.fx发送的内容,说明数据被成功转发。   5、Node-red解析JSON数据使用函数节点编写代码,解析JSON数据。这段代码我不清楚有没有更好的写法,我不太懂JS语法,只是用了比较笨的方法,判断字符串  另外一个函数节点的代码类似,判断条件改为batter而已。效果:用折线图显示了2个属性的变化完整的代码如下,可以直接导入Node-red中[{"id":"6bd6ce79.14d38","type":"http in","z":"f5be5277.932c4","name":"","url":"/iotda","method":"post","upload":false,"swaggerDoc":"","x":290,"y":180,"wires":[["54a4a7d1.96df08","8b41064a.d48268","9d79e536.26d708","11ae6cc3.534ae3"]]},{"id":"54a4a7d1.96df08","type":"debug","z":"f5be5277.932c4","name":"input","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":520,"y":260,"wires":[]},{"id":"8b41064a.d48268","type":"http response","z":"f5be5277.932c4","name":"","statusCode":"200","headers":{},"x":540,"y":180,"wires":[]},{"id":"ff13ec95.dab86","type":"debug","z":"f5be5277.932c4","name":"connectivity","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":530,"y":380,"wires":[]},{"id":"9d79e536.26d708","type":"function","z":"f5be5277.932c4","name":"","func":"var temp;\nif(msg.payload.notify_data.body.services[0].service_id === \"Connectivity\")\n{\n temp = msg.payload.notify_data.body.services[0].properties.dailyActivityTime;\n msg.payload = temp;\nreturn msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":420,"wires":[["ff13ec95.dab86","4ae99ad2.0a53b4"]]},{"id":"4ae99ad2.0a53b4","type":"ui_chart","z":"f5be5277.932c4","name":"","group":"70b080d0.8a375","order":0,"width":0,"height":0,"label":"dailyAcitvityTime","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":550,"y":420,"wires":[[]]},{"id":"11ae6cc3.534ae3","type":"function","z":"f5be5277.932c4","name":"","func":"var temp;\nif(msg.payload.notify_data.body.services[1].service_id === \"Battery\")\n{\n temp = msg.payload.notify_data.body.services[1].properties.batteryLevel;\n msg.payload = temp;\nreturn msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":520,"wires":[["327ab772.6991b8","ebac8ce6.b9889"]]},{"id":"327ab772.6991b8","type":"ui_chart","z":"f5be5277.932c4","name":"","group":"70b080d0.8a375","order":0,"width":0,"height":0,"label":"batteryLevel","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":550,"y":520,"wires":[[]]},{"id":"ebac8ce6.b9889","type":"debug","z":"f5be5277.932c4","name":"Battery","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":500,"y":580,"wires":[]},{"id":"70b080d0.8a375","type":"ui_group","name":"group","tab":"442d9179.f36e3","order":1,"disp":true,"width":"6","collapse":false},{"id":"442d9179.f36e3","type":"ui_tab","name":"home","icon":"dashboard","disabled":false,"hidden":false}] 
  • [问题求助] 华为云平台设备接入未激活
    接入设备,显示未激活
  • [问题求助] 【IoTDA】使用【HTTP/HTTPS】订阅推送,【创建规则】没有生效。
    小弟看到了IoTDA中的用户指南,有关于HTTP/HTTPS订阅推送的章节。https://support.huaweicloud.com/usermanual-iothub/iot_01_0001.html但是由于自身水平较差,未能调通。我使用MQTT.fx向IOTDA发送了数据,并且IOTDA已经收到了数据。然后设置了几条数据转发的规则,并让规则运行。规则的收件地址是我用华为云服务搭建的Node-red服务器。(抱歉我也不会别的前端技术)我关掉了云服务中防火墙,确保了这个地址和端口是能够被访问的。直接使用浏览器能够打开node-red的地址然而,node-red却收不到任何数据。我怀疑我在IOTDA平台设置的规则是不正确的。因为在【监控运维】→【消息调试】界面下,只能看到设备至平台的数据,看不到平台数据转发。按照我的理解,如果规则生效了,平台应该会向node-red转发数据,而这个转发的数据,应该是能够消息调试界面下看到的。也有可能是因为我Node-red程序编写的不对。不知道该如何解决,请路过的大佬指点。或者发给我一些关于【HTTP/HTTPS】订阅推送或【创建规则】的教程。非常感谢
  • [问题求助] 【IotDA产品】【应用侧PHP命令下发功能】遇到 IOTDA.014106
    PHP用curl写的post设备命令下发接口,json格式,参数:{"service_id":"DevicePara","command_name":"DevCommand","paras":{"switch":"ON"}},但是返回总是提示{"error_code":"IOTDA.014106","error_msg":"CommandBody for mqtt protocol is not correct."}。同样的将参数复制到Postman又能成功。有没有高手指点一下是什么地方出了问题?
总条数:623 到第
上滑加载中