物联网架构成长之路(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 清空之前编译的结果,注意之前没有停止的先进行停止服务。

1 ./_rel/mqttd/bin/meqqd stop
2 rm -rf _rel
3 make clean
4 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
  这里我通过网页进行加载插件。

  到这里,插件的创建就完成了。
  下一小节,讲一下插件里的一些配置。

原文地址:https://www.cnblogs.com/wunaozai/p/8120075.html

时间: 2024-08-30 15:31:26

物联网架构成长之路(4)-EMQ插件创建的相关文章

物联网架构成长之路(5)-EMQ插件配置

1. 前言 上一小结说了插件的创建,这一节主要怎么编写代码,以及具体流程之类的.2. 增加一句Hello World 修改 ./deps/emq_plugin_wunaozai/src/emq_plugin_wunaozai.erl 增加一行Hello World 增加后,保存 1 make clean 2 make 3 cp -r ebin ../../_rel/emqttd/lib/emq_plugin_wunaozai-2.3.1 这样就把最新版本复制到_rel 目录下了. 回到eqm-r

物联网架构成长之路(33)-EMQ数据存储到influxDB

一.前言 时隔一年半,技术变化特别快,学习也要跟上才行.以前写过EMQ数据转存问题,当时用了比较笨的方法,通过写插件的方式,把MQTT里面的数据发送到数据库进行存储.当时也是为了学习erlang和emq.现在随着对物联网的深入,也结合实际需求,不停的学习.下面将介绍我实验测试可行的物联网数据分析解决方案.采用的还是开源方案.通过订阅MQTT的根Topic,把所有物联网数据转存到InfluxDB时序数据库,然后通过Grafana进行图表显示.这应该是目前比较流行的方案.二.安装InfluxDB I

物联网架构成长之路(7)-EMQ权限验证小结

1. 前言 经过前面几小节,讲了一下插件开发,这一小节主要对一些代码和目录结构进行讲解,这些都是测试过程中一些个人经验,不一定是官方做法.而且也有可能会因为版本不一致导致差异. 2. 目录结构 这个目录结构整体就是从 emq-plugin-template 复制一份过来的,然后修改. .erlang.mk 这个是编译过程的临时文件,不用管 .git 这个是源代码版本管理,不用管 data 一些系统数据文件,不用管 deps 这个是在make编译的时候,自动下载一些依赖包,不用管 ebin 这个是

物联网架构成长之路(50)-EMQ配置SSL证书,实现MQTTs协议

0. 前言 EMQ是带有SSL功能的,需要进行简单的配置,才能使用.下面就简单说一下如何实现自签证书. 1. 利用OpenSSL签发证书 1 ? cat createCA.sh 2 #/bin/sh 3 # 生成自签名的CA key和证书 4 openssl genrsa -out ca.key 2048 5 openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -subj "/CN=www.wunaozai.com"

物联网架构成长之路(0)-目录

一.基础 [http://www.cnblogs.com/wunaozai/p/8067621.html] 物联网架构成长之路(1)-前言 [http://www.cnblogs.com/wunaozai/p/8075640.html] 物联网架构成长之路(2)-脚手架工具准备 [http://www.cnblogs.com/wunaozai/p/8082332.html] 物联网架构成长之路(3)-EMQ消息服务器了解

物联网架构成长之路(56)-SpringCloudGateway+JWT实现网关鉴权

0. 前言 结合前面两篇博客,前面博客实现了Gateway网关的路由功能.此时,如果每个微服务都需要一套帐号认证体系就没有必要了.可以在网关处进行权限认证.然后转发请求到后端服务.这样后面的微服务就可以直接调用,而不需要每个都单独一套鉴权体系.参考了Oauth2和JWT,发现基于微服务,使用JWT会更方便一些,所以准备集成JWT作为微服务架构的认证方式. [https://www.cnblogs.com/wunaozai/p/12512753.html] 物联网架构成长之路(54)-基于Naco

物联网架构成长之路(32)-SpringBoot集成MQTT客户端

一.前言 这里虽然是说MQTT客户端.其实对于服务器来说,这里的一个具有超级权限的MQTT客户端,就可以做很多事情.比如手机APP或者网页或者第三方服务需要发送数据到设备,但是这些又不是设备,又不能让他们连到MQTT.那么就可以通过HTTP请求业务服务器.然后由业务服务器利用这个MQTT客户端进行发送数据. 还有,之前好多人问我,怎么保存这些物联网数据,真的要像前面的博客那样,要自己写插件吗?特别麻烦的啊.这里给出的结论是不需要.保存数据,除了写EMQ插件,还可以在EMQ的规则引擎上进行配置We

物联网架构成长之路(35)-利用Netty解析物联网自定义协议

一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做web软件开发的,也是比较喜欢这种方式.阿里的物联网平台,也是推荐这种方式.但是,但是做惯硬件开发,嵌入式开发就比较喜欢用裸TCP-Socket连接.采用的是二进制协议.基于此大部分应用场合为了兼容旧设备,就需要单独开发一个TCP服务器的网关.这里使用以前学过的,也是比较流行的Netty框架. 话不

物联网架构成长之路(11)-Redis缓存主从复制

1. 说明 在我的物联网平台框架框架中,会用到Redis这个中间件.作为EMQ权限认证的缓存.https://www.cnblogs.com/think-in-java/p/5123884.html 2. 编译&运行 1 wget http://download.redis.io/releases/redis-4.0.6.tar.gz 2 make && make test && make PREFIX=/home/user/workspace/redis inst