物联网架构成长之路(4)-EMQ插件创建
1. 说明
以下用到的知识,是建立在我目前所知道的知识领域,以后如果随着知识的拓展,不一定会更新内容。由于不是EMQ公司的人,EMQ的文档又很少,很多知识点都是靠猜的。
2. 一些资料
架构设计 http://emqtt.com/docs/v2/design.html
扩展插件 http://emqtt.com/docs/v2/plugins.html 一些自带的插件
3. 写插件
经过上一篇博客讲解的,编译_relx后,在deps目录下就会包含了所有依赖包以及插件包,在这个目录下有个emq_plugin_template,这个就是插件模版
cp -r emp_plugin_template emp_plugin_wunaozai
在./emq-relx/relx.config 文件中 52行增加
{emq_plugin_wunaozai, load}
在./emq-relx/data/loaded_plugins 文件 可以配置一些默认启动的插件
在./emq-relx/Makefile 文件中 13行,可以增加emq_plugin_wunaozai 这样在make的时候会调用编译
先 rm -rf _rel 清空之前编译的结果,注意之前没有停止的先进行停止服务。
./_rel/mqttd/bin/meqqd stop
rm -rf _rel
make clean
make
嗯,这个时候肯定编译不过,因为刚才复制的 emq_plugin_wunaozai 里面很多文件都要进行修改。
下图是修改前

具体修改如下:
(1) 首先把所有的文件名都修改,具体如下

其中 ebin 目录通过 make clean 进行清除即可。
(2) 修改Makefile 文件
可以修改项目名称,描述,版本之类的信息,后面插件功能变多了的话, 就可以在这里增加必要的依赖包。
(3)修改./etc/emq_plugin_wunaozai.config 配置文件,这些就是一些配置信息。进行修改。
(4)修改./test/emq_plugin_wunaozai_SUITE 这个是单元测试文件,进行修改。
(5)修改./src/*.erl 所有文件
上述文件的修改,还是比较简单的,就是把template改为wunaozai即可。没什么难度,编译不通过,就表示没有修改全。
4. 编译插件
回到 emq_relx 目录,执行rm -rf _rel && make clean && make 然后就看效果了。看到如下界面就表示插件编译通过。这个过程,可能会出现各式各样的编译不通过,就是插件修改的不彻底,再看看,就可以了。
如下图所示,就是插件编译好了。

我们启动一下emqttd
./_rel_emqttd/bin/emqttd console
默认我们自己的插件是没有加载的,可以通过Dashboard网页管理界面进行加载,也可以通过 emqttd_ctl plugin load emq_plugin_wunaozai
这里我通过网页进行加载插件。

到这里,插件的创建就完成了。
下一小节,讲一下插件里的一些配置。
物联网架构成长之路(4)-EMQ插件创建的更多相关文章
- 物联网架构成长之路(5)-EMQ插件配置
1. 前言 上一小结说了插件的创建,这一节主要怎么编写代码,以及具体流程之类的.2. 增加一句Hello World 修改 ./deps/emq_plugin_wunaozai/src/emq_plu ...
- 物联网架构成长之路(31)-EMQ基于HTTP权限验证
看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...
- 物联网架构成长之路(33)-EMQ数据存储到influxDB
一.前言 时隔一年半,技术变化特别快,学习也要跟上才行.以前写过EMQ数据转存问题,当时用了比较笨的方法,通过写插件的方式,把MQTT里面的数据发送到数据库进行存储.当时也是为了学习erlang和em ...
- 物联网架构成长之路(3)-EMQ消息服务器了解
1. 了解 物联网最基础的就是通信了.通信协议,物联网协议好像有那么几个,以前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,所以我也不例外,不搞特殊,采用MQTT协议,选定了协议,接 ...
- 物联网架构成长之路(6)-EMQ权限控制
1. 前言 EMQTT属于一个比较小众的开源软件,很多资料不全,很麻烦,很多功能都是靠猜测,还有就是看官方提供的那几个插件,了解. 2. 说明 上一小节的插件 emq_plugin_wunaozai ...
- 物联网架构成长之路(7)-EMQ权限验证小结
1. 前言 经过前面几小节,讲了一下插件开发,这一小节主要对一些代码和目录结构进行讲解,这些都是测试过程中一些个人经验,不一定是官方做法.而且也有可能会因为版本不一致导致差异. 2. 目录结构 这个目 ...
- 物联网架构成长之路(25)-Docker构建项目用到的镜像1
0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...
- 物联网架构成长之路(32)-SpringBoot集成MQTT客户端
一.前言 这里虽然是说MQTT客户端.其实对于服务器来说,这里的一个具有超级权限的MQTT客户端,就可以做很多事情.比如手机APP或者网页或者第三方服务需要发送数据到设备,但是这些又不是设备,又不能让 ...
- 物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
1. 前言 按照我自己设计的物联网框架,对于MQTT集群中的所有消息,是要持久化到磁盘的,这里采用一个消息队列中间件Kafka作为数据缓冲,缓冲结果存到数据仓库中,以供后续作为数据分析.由于MQTT集 ...
随机推荐
- 《gradle权威指南》--Gradle入门
No1: Window下搭建Gradle:添加GRADLE_HOME环境变量,然后把GRADLE_HOME\bin添加到PATH系统变量里保存即可.完成后打开CMD,运行gradle -v来验证 No ...
- 一种使用pyinstaller时图标问题解决方案
一种使用pyinstaller时图标问题解决方案 0x00 场景 使用pyinstaller将.py文件编译成.exe文件时,想要使用自己心仪的图标(.ico)比较麻烦.在使用pyinstalle ...
- 目标检测——IoU 计算
Iou 的计算 我们先考虑一维的情况:令 \(A = [x_1,x_2], B = [y_1, y_2]\),若想要 \(A\) 与 \(B\) 有交集,需要满足如下情况: 简言之,要保证 \(A\) ...
- Jmeter的安装和启动错误总结,出现unable to access jarfile apachejmeter.jar error value=1错误处理
Jmeter是纯Java开发的, 能够运行Java程序的系统一般都可以运行Jmeter, 如:Windows. Linux. mac等. 由于是由Java开发,所以自然需要jdk环境. Windows ...
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction & ONB
Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...
- socket的几大异常以及其出现的原因
1:我是模拟了一个客户端不断的向服务器发送消息,但是当某一时刻我把服务端断掉,客户端就出现了写异常 java.net.SocketException: Connection reset by peer ...
- iOS埋点统计
链接: iOS无埋点数据SDK实践之路 iOS:无埋点数据SDK实践之路,看完能懂就厉害了 iOS埋点业务方案 ios 无码统计埋点 使用AOP实现iOS应用内的埋点计数 Aspects(AOP) A ...
- Qt.Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”
出问题的环境: 操作系统: Ubuntu18.04 安装包: qt-opensource-linux-x64-5.8.0.run 现象: 新建一个Hello World项目, 试着运行, 出现以下提示 ...
- NDArray自动求导
NDArray可以很方便的求解导数,比如下面的例子:(代码主要参考自https://zh.gluon.ai/chapter_crashcourse/autograd.html) 用代码实现如下: im ...
- request.getParameter(“xxx”)的参数的取值
request.getParameter(“xxx”)的参数的取值的几种可能: 1. Html中form表单中标签的name属性: <form name="form" met ...