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 登陸到後臺管理界面。沒什麼說的,就在上面玩一會。