英文网站制作 官网,四川手机网,数商云价格,怎样做投资网站目录 概述
指令处理层开发
应用层开发
.open
.close
.init
.uninit
.start
.stop .setting .request
插件设置文件 适配华为的思路 概述
最近研究了一段时间的Neuron协议网关#xff0c;前面的博文也提到它虽然能够把数据发到华为的IoT平台上…目录 概述
指令处理层开发
应用层开发
.open
.close
.init
.uninit
.start
.stop .setting .request
插件设置文件 适配华为的思路 概述
最近研究了一段时间的Neuron协议网关前面的博文也提到它虽然能够把数据发到华为的IoT平台上但是不支持华为的物模型都是以自己的数据形式发送的。如果想支持华为的模型就必须开发北向应用插件。今天就学习一下相关的开发。
北向应用开发主要包含以下几个部分最底层的是指令处理层开发最外层的是应用层开发。
模块文件说明指令处理层开发command.c command.h common.h heartbeat.c heartbeat.h read_write.c read_write.h插件对指令的解析应用层开发mqtt_plugin.c mqtt_plugin.h mqtt_util.c mqtt_util.h插件主题框架的实现插件设置文件mqtt.json插件设置文件的定义
Neuron提供了3个MQTT插件早期版本是1个没有AWS和Azure这三个插件的MQTT部分是相同的。 可以学习一下其MQTT插件的源码。
指令处理层开发
MQTT 目前实现了上传数据、心跳数据、读 Tags 和写 Tags 的接口。command.c 中定义了 mqtt 请求对应响应的具体处理 heartbeat.c 和 read_write.c 为 command.c 提供需要的函数实现。
函数说明command_response_handlemqtt 响应处理command_read_once_response读主题的响应处理command_read_periodic_response上传主题的响应处理command_write_response写主题的响应处理command_heartbeat_response心跳数据的响应处理
应用层开发
mqtt_util.c 和 mqtt_util.h 文件定义 mqtt_plugin.c 文件中使用的具体函数实现。
南北向驱动层开发中都需要先构建 neu_plugin_intf_funs_t 的结构体并实现结构体中的每个元素的功能。
c
static const neu_plugin_intf_funs_t plugin_intf_funs {.open mqtt_plugin_open,.close mqtt_plugin_close,.init mqtt_plugin_init,.uninit mqtt_plugin_uninit,.start mqtt_plugin_start,.stop mqtt_plugin_stop,.setting mqtt_plugin_config,.request mqtt_plugin_request,
};
.open
调用 mqtt_plugin_open 函数基于 plugin 创建 node 时 neuron 第一个调用的函数创建插件自己定义的结构体 struct neu_plugin。该结构体在 mqtt_plugin.h 中定义需要注意的是结构体中的第一个成员一定是 neu_plugin_common_t common其他成员可根据驱动的具体实现增加。 .close
调用 mqtt_plugin_close 函数删除 node 时neuron 调用的最后一个函数用于释放由 open 创建的 neu_plugin_t。
.init
调用 mqtt_plugin_init 函数在创建 node 时neuron 调用完 open 后紧接着调用的函数。此函数主要做插件内需要初始化的一些资源mqtt 插件中主要初始化 mqtt 的运行状态及配置。
.uninit
调用 mqtt_plugin_uninit 函数删除 node 时neuron 首先调用的函数此函数主要释放一些在 init 中申请以及初始化的资源。
.start
调用 mqtt_plugin_start 函数用户在 neuron node 页面点击开始时neuron 会调用此函数通知插件开始运行以及开始连接设备等如果配置不正确将会返回节点设置无效的错误。
.stop
调用 mqtt_plugin_stop 函数用户在 neuron node 页面点击停止时neuron 会调用此函数stop 通知插件停止运行关闭插件与 neuron 之间的连接。 .setting
调用 mqtt_plugin_config 函数用户在 neuron node 设置页面进行设置时使用node 设置的参数将通过 json 方式呈现json 文件的配置请参考 插件设置文件 neuron 将通过此函数通知插件进行设置。mqtt_plugin_config 函数首先会解析并保存配置信息然后建立连接。 .request
调用 mqtt_plugin_request 函数根据请求类型对应响应处理。 插件设置文件
mqtt.json 文件设置应用配置参数配置 mqtt 插件每个参数的字段说明如下所示。
参数说明name页面显示该参数的名称description该参数的具体说明type该参数的类型目前常用的是 int 和 string 两种类型attribute该参数的属性只有两种可选和必选即 required 和 optionaldefault设置该参数的默认值valid该参数可填写的范围string 类型用 lengthint 类型使用 max 和 minmap用于设置选项框 适配华为的思路
首先简单的修改一下配置文件删除掉不支持的选项如map方式。考虑增加个deviceid的选项有点像Azure。这部分改动不大。
可以在azure_iot_plugin.c的基础上进行插件的入口函数的设置这部分也可以照搬。
azure_handle_trans_data这个函数需要修改一下主要是其中调用的generate_upload_json函数这个函数控制上传的JSON格式需要安装华为的物模型进行修改。