前言
最近實驗室準(zhǔn)備招新生载萌,但現(xiàn)在可以拿出來演示誘拐新生的DEMO一個都沒妒穴,于是老板要求我做一個房間定位的系統(tǒng)搪哪。
原理和設(shè)備也很簡單靡努。一個Beacon收集器,和若干個beacon晓折。通過Beacon收集器收集到的beacon的RSSI值判斷是否在房間里面惑朦,也是就設(shè)定一個閾值,大于這個閾值在房間外面漓概,小于這個閾值就在房間里面漾月。
Beacon收集器是用Wifi連接到路由器,使用MQTT協(xié)議傳輸數(shù)據(jù)胃珍,下面的MQTT的資料:
MQTT定義
MQTT是IBM開發(fā)的一個即時通訊協(xié)議梁肿。MQTT是面向M2M和物聯(lián)網(wǎng)的連接協(xié)議,采用輕量級發(fā)布和訂閱消息傳輸機制觅彰。Mosquitto是一款實現(xiàn)了 MQTT v3.1 協(xié)議的開源消息代理軟件吩蔑,提供輕量級的支持發(fā)布/訂閱的的消息推送模式,使設(shè)備對設(shè)備之間的短消息通信簡單易用填抬。
MQTT特點
- 【MQTT協(xié)議特點——相比于RESTful架構(gòu)的物聯(lián)網(wǎng)系統(tǒng)烛芬,MQTT協(xié)議借助消息推送功能,可以更好地實現(xiàn)遠(yuǎn)程控制飒责。
- 【MQTT協(xié)議角色】——在RESTful架構(gòu)的物聯(lián)網(wǎng)系統(tǒng)赘娄,包含兩個角色客戶端和服務(wù)器端,而在MQTT協(xié)議中包括發(fā)布者宏蛉,代理器(服務(wù)器)和訂閱者遣臼。
- 【MQTT協(xié)議消息】——MQTT中的消息可理解為發(fā)布者和訂閱者交換的內(nèi)容(負(fù)載),這些消息包含具體的內(nèi)容拾并,可以被訂閱者使用暑诸。
- 【MQTT協(xié)議主題】——MQTT中的主題可理解為相同類型或相似類型的消息集合蚌讼。
MQTTServer的安裝
這里使用的系統(tǒng)是Kail Linux辟灰,Mosquitto雖然可以使用apt-get个榕,但是我用apt-get下下來的沒有mosquitto_和mosquitto_pub這兩個程序,所以直接去官網(wǎng)找了源碼包編譯安裝芥喇。
安裝前準(zhǔn)備
確保安裝了libssl-dev西采,libc-ares-dev,uuid-dev继控,g++這些編譯需要的庫械馆。
sudo apt-get install libssl-dev libc-ares-dev uuid-dev g++
安裝libssl-dev的小插曲
樹莓派已經(jīng)安裝的版本太高會導(dǎo)致安裝libssl-dev不成功
解決方法:
sudo apt-get install aptitude
sudo aptitude install libssl-dev
第一個解決方法選no
第二選yes
使用dpkg -l *libssl*
顯示當(dāng)前版本
如果接下來的包也遇到這種情況使用一樣方法,全部都把他降級吧少年
安裝
去官方網(wǎng)站找到最新的源碼包:http://mosquitto.org/files/source/
用wget下載源碼包武通,xxx為最新的版本代號
wget http://mosquitto.org/files/source/mosquitto-xxx.tar.gz
解壓
tar zxfv mosquitto-*-tar.gz
進(jìn)入目錄
cd mosquitto*
編譯
make
安裝
sudo make install
創(chuàng)建連接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
更新動態(tài)鏈接庫
sudo ldconfig
自此Mosquitto安裝完成
測試
一個完整的MQTT示例包括一個總的MQTT代理服務(wù)器霹崎,一個發(fā)布端和一個訂閱端。
示例步驟:
-
啟動mosquitto服務(wù)冶忱。
mosquitto -v
- -v:打印更多的調(diào)試信息
-
訂閱端通過mosquitto_sub訂閱指定主題的消息.
mosquitto_sub -v -t BBColle01
- -v:打印更多的調(diào)試信息
- -t:訂閱的主題(title)
-
發(fā)布者通過mosquitto_pub發(fā)布指定主題的消息尾菇。
mosquitto_pub -v -t BBColle01 -m "{\"id\":\"Nekotter\"}"
轉(zhuǎn)發(fā)服務(wù)器把該主題的消息推送到訂閱端。
這里發(fā)布端囚枪,代理服務(wù)器派诬,訂閱端都為localhost。
總結(jié)
服務(wù)器是搭建好了链沼,接下來還要干的事:
- 使用paho-python模塊接收beacon收集器發(fā)送到值默赂,并用python處理數(shù)據(jù)。
- 用Flask框架搭建網(wǎng)頁括勺,把整個系統(tǒng)的UI做出來缆八。