1. 了解html
物联网最基础的就是通讯了。通讯协议,物联网协议好像有那么几个,之前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,因此我也不例外,不搞特殊,采用MQTT协议,选定了协议,接下来就是选一个MQTT服务器(Broker),项目初期确定是使用开源的解决方案会好一点,一方面是有人为之填坑,一方面能够快速搭建原型。等之后有人、有资源、有用户,在本身定制开发一套系统。基于各类考虑(更多的是领导的要求)选择了国人开发的MQTTBroker EMQ框架 (http://emqtt.com/),目前最新版本是2.3.1 接下来大部分环境都是基于此版本的。git
2. Erlang语言github
一开始叫我学习这个语言我仍是拒绝的,固然如今也是。其实我仍是比较倾向于Java实现的MQTTBroker - Moquette 这个的。没办法,须要就学咯。编程
学习Erlang,我是在http://www.erlang-cn.com/这里找个快速入门的,简单了解一下语法和语言特性。没有怎么深刻理解,这个在目前不是重点,在后面开发插件时,边写边学才是最快的。总结几个与以往有所区别的特性吧:数组
(1)非面向对象,面向函数(并发)编程服务器
(2)无循环结构,只能经过递归实现,尽可能采用尾递归并发
(3)变量不可变框架
(4)无数组概念,不能经过下标访问函数
(5)Erlang消息传递机制学习
3. EMQ框架
这个http://emqtt.com/ 是中文的官网,这个http://emqtt.io/ 是英文的官网。因为是国人本身开发的,加上我本身英文很差,其实看中文文档就能够了。文档 http://emqtt.com/docs/v2/index.html 在 http://emqtt.com/downloads 这里下载个能够用的版本,而后跟着文档一步一步就能够搭建起来了。没有什么能够说的,我说的尚未官方文档好。里面的一些知识点和商业吹捧也能够了解一下。
4. EMQ编译、安装
好了,这部分才是重点,因为官网提供的是二进制可运行版本,可是每一个公司对应的业务需求都不一样,全部就须要进行二次开发。EMQ提供的二次开发机制是,建议使用插件方式进行扩展。因此这里就须要下载源码了。
安装Erlang/OTP 框架
安装 emq-relx EMQ编译环境
1 git clone https://github.com/emqtt/emq-relx 2 cd emq-relx 3 make
这个make过程会比较久,会下载一大堆依赖,依赖存放在 deps 目录,而后把编译结果存放在 _rel 目录下,实际生产过程当中,就是拷贝这个 _rel 目录下的全部文件就能够了。
我在当前(2017-12-21)版本下,编译的时候遇到如下这个问题
1 src/emq_sn_gateway.erl:592: undefined macro 'SN_RC_MQTT_FAILURE'
我临时解决的办法是在./emq-relx/deps/emq_sn/include/emq_sn.hrl:56 行增长一个宏定义
1 -define(SN_RC_MQTT_FAILURE, 16#04).
临时解决编译问题。
这个依赖下载过程会比较久,大部分是依赖与Github,下载编译后,目录有136M大小
下图就是编译好了
编译后,产生一个_rel 目录,这个目录下的文件,就是咱们在官网上 http://emqtt.com/downloads 下载后解压的结果了。二者基本是同样的。
运行
1 ./bin/emqttd start 2 ./bin/emqttd_ctl status 3 ./bin/emqttd stop
控制台地址: http://127.0.0.1:18083 默认用户密码 admin/public
更多内核调优,请参考官方文档。
几个经常使用端口,也能够看一下
5. EMQ运行
运行后,能够打开 http://host:18083 登陆到后台管理界面。没什么说的,就在上面玩一会。