1. 前言 上一小结说了插件的创建,这一节主要怎么编写代码,以及具体流程之类的.2. 增加一句Hello World 修改 ./deps/emq_plugin_wunaozai/src/emq_plugin_wunaozai.erl 增加一行Hello World 增加后,保存 make clean make 这样就把最新版本复制到_rel 目录下了. 回到eqm-relx 目录 ./_rel/emqttd/bin/emqttd console 3. 重新加载/卸载插件 ./_rel/emqtt…
1. 说明 以下用到的知识,是建立在我目前所知道的知识领域,以后如果随着知识的拓展,不一定会更新内容.由于不是EMQ公司的人,EMQ的文档又很少,很多知识点都是靠猜的.2. 一些资料 架构设计 http://emqtt.com/docs/v2/design.html 扩展插件 http://emqtt.com/docs/v2/plugins.html  一些自带的插件3. 写插件 经过上一篇博客讲解的,编译_relx后,在deps目录下就会包含了所有依赖包以及插件包,在这个目录下有个emq_pl…
看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现设备分配一个device_id和device_key两个信息.即登录我们的业务服务器,同时登录EMQ通信服务器.免去了中间获取临时登录MQTT-Token的流程. 下面就看这么实现基于HTTP的Auth. 首先在EMQ的后台,管理-插件-emqx_auth_http中开启插件.(注意由于距离上次已经…
一.前言 时隔一年半,技术变化特别快,学习也要跟上才行.以前写过EMQ数据转存问题,当时用了比较笨的方法,通过写插件的方式,把MQTT里面的数据发送到数据库进行存储.当时也是为了学习erlang和emq.现在随着对物联网的深入,也结合实际需求,不停的学习.下面将介绍我实验测试可行的物联网数据分析解决方案.采用的还是开源方案.通过订阅MQTT的根Topic,把所有物联网数据转存到InfluxDB时序数据库,然后通过Grafana进行图表显示.这应该是目前比较流行的方案.二.安装InfluxDB I…
1. 了解 物联网最基础的就是通信了.通信协议,物联网协议好像有那么几个,以前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,所以我也不例外,不搞特殊,采用MQTT协议,选定了协议,接下来就是选一个MQTT服务器(Broker),项目初期肯定是使用开源的解决方案会好一点,一方面是有人为之填坑,一方面可以快速搭建原型.等以后有人.有资源.有用户,在自己定制开发一套系统.基于各种考虑(更多的是领导的要求)选择了国人开发的MQTTBroker EMQ框架 (http://emqtt.c…
1. 前言 EMQTT属于一个比较小众的开源软件,很多资料不全,很麻烦,很多功能都是靠猜测,还有就是看官方提供的那几个插件,了解. 2. 说明 上一小节的插件 emq_plugin_wunaozai 文件 emq_plugin_wunaozai.erl 这个文件就是Hook钩子设计了,里面默认已经有了.比如在 on_client_connected这个函数下增加一行 io:format()打印,那么,对应每个mqtt客户端连接到服务器都会打印这一行.一开始我还以为验证逻辑写在这里,然后通过判断,…
1. 前言 经过前面几小节,讲了一下插件开发,这一小节主要对一些代码和目录结构进行讲解,这些都是测试过程中一些个人经验,不一定是官方做法.而且也有可能会因为版本不一致导致差异. 2. 目录结构 这个目录结构整体就是从 emq-plugin-template 复制一份过来的,然后修改. .erlang.mk 这个是编译过程的临时文件,不用管 .git 这个是源代码版本管理,不用管 data 一些系统数据文件,不用管 deps 这个是在make编译的时候,自动下载一些依赖包,不用管 ebin 这个是…
0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联网架构.好了,废话不说,开始咯. 1. 构建STUNServer服务 STUN服务,是一个标准的服务,用户判断当前外网IP,主要用于NAT判断.我使用的是 https://github.com/jselbie/stunserver 这个开源的STUN服务,直接 git clone 下来,执行dock…
一.前言 这里虽然是说MQTT客户端.其实对于服务器来说,这里的一个具有超级权限的MQTT客户端,就可以做很多事情.比如手机APP或者网页或者第三方服务需要发送数据到设备,但是这些又不是设备,又不能让他们连到MQTT.那么就可以通过HTTP请求业务服务器.然后由业务服务器利用这个MQTT客户端进行发送数据. 还有,之前好多人问我,怎么保存这些物联网数据,真的要像前面的博客那样,要自己写插件吗?特别麻烦的啊.这里给出的结论是不需要.保存数据,除了写EMQ插件,还可以在EMQ的规则引擎上进行配置We…
1. 前言 按照我自己设计的物联网框架,对于MQTT集群中的所有消息,是要持久化到磁盘的,这里采用一个消息队列中间件Kafka作为数据缓冲,缓冲结果存到数据仓库中,以供后续作为数据分析.由于MQTT集群中的消息都是比较分散的,所以使用Kafka来聚合.采集消息. 2. 下载&编译&安装 Kafka依赖ZooKeeper 在这里下载 http://mirrors.shuosc.org/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar…