從零開始搭建物聯網平台(2):MQTT服務的搭建


EMQ:

現有的MQTT服務器有很多,例如Mosquitto、Apache-Apollo、EMQ等等,最后呢選擇了EMQ畢,國內公司的開源產品,中文資料相對要多一些。EMQ的官網宣稱是百萬級分布式開源物聯網MQTT消息服務器,百不百萬倒無所謂,反正是給自用的沒有那么多的數據產生。

安裝:

服務器系統版本為Ubuntu14.04,首先在EMQ官網下載對應的安裝包http://emqtt.com/downloads/latest/ubuntu14_04-deb,進入目錄 輸入命令:sudo dpkg -i emqttd-ubuntu16.04_v2.0_amd64.deb進行安裝。按照官方的說明完成上述操作之后還需要安裝依賴lksctp-tools庫apt-get install lksctp-tools。至此MQTT服務已經搭建好了,但是還需要一些配置方可使用。

配置:

EMQ提供了Web 管理控制台,默認是開啟的,URL 地址: http://localhost:18083 ,缺省用戶名/密碼: admin/public。登陸成功之后就能可查詢 EMQ 消息服務器基本信息、統計數據、度量數據,查詢系統客戶端(Client)、會話(Session)、主題(Topic)、訂閱(Subscription),以及對插件的管理。

插件里面我覺得最重要的應該是認證插件,當然了是可以不需要認證功能的,但是呢安全性和規范性還是需要認證功能的,EMQ提供了很種方式的認證功能,我選擇MySQL認證訪問插件。

進入到插件管理頁面,打開MySQL配置,第一步填寫 MySQL數據庫的相關信息,還需要注意一下要把加密方式給去掉,這樣連接的時候要方便一些。完成這些配置之后要到MySQL對應的數據庫創建用戶和訪問控制表:

CREATE TABLE `mqtt_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  `salt` varchar(35) DEFAULT NULL,
  `is_superuser` tinyint(1) DEFAULT 0,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `mqtt_acl` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `allow` int(1) DEFAULT NULL COMMENT '0: deny, 1: allow',
  `ipaddr` varchar(60) DEFAULT NULL COMMENT 'IpAddress',
  `username` varchar(100) DEFAULT NULL COMMENT 'Username',
  `clientid` varchar(100) DEFAULT NULL COMMENT 'ClientId',
  `access` int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub',
  `topic` varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `mqtt_acl` (`id`, `allow`, `ipaddr`, `username`, `clientid`, `access`, `topic`)
VALUES
    (1,1,NULL,'$all',NULL,2,'#'),
    (2,0,NULL,'$all',NULL,1,'$SYS/#'),
    (3,0,NULL,'$all',NULL,1,'eq #'),
    (5,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'),
    (6,1,'127.0.0.1',NULL,NULL,2,'#'),
    (7,1,NULL,'dashboard',NULL,1,'$SYS/#');

為了測試方便先在用戶表里面插入一個測試賬戶信息,例如username:admin 、password:123456,至此認證功能基本上配置好了。

測試:

現在還沒有完成硬件部分的設計,只能通過EMQ提供的Websocket工具來測試連通性,打開websocket頁面,填寫好之前在用戶表里面的賬戶和密碼,點擊連接測試能否連接成功,如果成功了那么整個MQTT服務的搭建也就順利完成了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM