物聯(lián)網(wǎng):從有線到無(wú)線,我的 Beacon 開發(fā)之路
責(zé)任編輯:editor007 作者:亂馬客 | 2017-09-22 22:29:50 本文摘自:gss
而在一般的企業(yè)中可以有什么樣的應(yīng)用呢?
以下分享筆者這陣子利用 Beacon 開發(fā)的經(jīng)驗(yàn)給大家,
前言
Beacon 是什么呢? 它的英文就是燈塔、烽火臺(tái) …
它就像燈塔一樣一直發(fā)送 藍(lán)芽的廣告訊號(hào),
主要有 UUID, Major 及 Minor 再包含一些 payload 數(shù)據(jù)。
而 UUID 可以代表一個(gè)公司, Major 及 Minor 則可以讓我們?cè)俜謩e定義 分公司 或 地區(qū)等等。
那要如何知道這個(gè) Beacon 在那里呢?
要透過(guò)藍(lán)芽去掃描它,iOS就內(nèi)建有 Core Location APIs 可以使用。
而 Android 則可以使用 Beacon Library 來(lái)掃 Beacon。
在一開始測(cè)試 Beacon 時(shí),建議使用 Android 安裝 掃描 Beacon 的 App比較方便,
因?yàn)?iPhone 無(wú)法直接掃描,需要輸入 UUID 等信息才可以掃。
一開始掃到時(shí),會(huì)有進(jìn)入這個(gè) Beacon 區(qū)域的事件 (Monitoring),
當(dāng)進(jìn)入 Beacon 這個(gè)區(qū)域后,就可以一直掃描這個(gè) Beacon (Ranging),然后取得它的 RSSI 值來(lái)判斷跟它的距離。
最后如果掃不到這個(gè) Beacon 的話,會(huì)有一個(gè) 離開這個(gè) Beacon 區(qū)域的事件 (Monitoring)。
有了 Beacon 之后,初步的 Survey 后,
我們就開始試看看它到底能不能像網(wǎng)絡(luò)上說(shuō)的那么神奇,
所以我們做了以下的應(yīng)用,
實(shí)踐:
1、室用定位
網(wǎng)絡(luò)上的文章都說(shuō)它可以用在室內(nèi)定位,那一個(gè)辦公室中,我放3個(gè)Beacon是不是就可以利用三角定位來(lái)找出人在那里呢?
所以原本的目標(biāo)是一個(gè)辦公室中放個(gè)4顆 Beacon,看看能不能取得每個(gè)人行走的路線,未來(lái)還可以分析那條路是熱區(qū),或是那個(gè)員工都會(huì)去找那個(gè)員工之類的分析。
測(cè)試結(jié)果發(fā)現(xiàn), Beacon 過(guò)了3公尺后,RSSI值后不穩(wěn)定,所以如果我真的要定位準(zhǔn)的話,就要買很多顆的 Beacon。
如果多顆的話,就要用 Fingerprint 來(lái)算位置在那里。
一顆穩(wěn)定的 Beacon 不便宜,如果要在辦公室達(dá)到目標(biāo)的話,成本太高,所以后來(lái)我們就放棄了。
2、自動(dòng)簽到、簽退
前面提到,我們可以知道進(jìn)入、離開及一直掃描 Beacon ,所以我們可以自動(dòng)記錄這些信息。
就可以知道員工幾點(diǎn)到公司、幾點(diǎn)離開公司。
本來(lái) App 是使用 Cordova 來(lái)寫,但這樣員工到公司時(shí),就要拿出手機(jī),然后開啟 App 去掃描,
這樣跟拿出門禁卡來(lái)刷,好像好不到那去。
所以我們就改用 Xamarin 來(lái)寫,Android的部份如果要在背景掃的話,就要使用 Service,Android 6.0 還要加入白名單。
而iOS內(nèi)建就Support在背景處理(App拉掉,還是會(huì)運(yùn)作),但雖然 App 知道進(jìn)入或離開 Beacon 區(qū)域,這時(shí) Http 卻不給用,因?yàn)楫嬅媸前档摹?br />
這時(shí)我們目前的解法就是當(dāng) User 進(jìn)入或離開時(shí),發(fā)一個(gè) Local 的通知,讓手機(jī)亮起來(lái),這時(shí) Http 就可以用,所以就可以將數(shù)據(jù)送到 Server 上了(只是有點(diǎn)擾人)。
3、控制門禁,達(dá)到自動(dòng)開門
當(dāng)知道人與Beacon的距離之后,因?yàn)槲覀児居虚T禁,進(jìn)出都要刷卡。有時(shí)開會(huì)時(shí),手上會(huì)拿筆電或其他的東西,再要刷卡實(shí)在不太方便。
如果我們就使用 RPi 來(lái)模擬 Beacon ,同時(shí)再接公司的門禁,當(dāng)員工靠近門時(shí),Server收到信息之后,就透過(guò) Azure IOT Hub 發(fā)訊息(免費(fèi)的跟付費(fèi)的數(shù)量跟速度有差哦)讓 RPi開門。
架構(gòu)圖如下,
演示的視頻如下,
結(jié)論
看起來(lái)雖然簡(jiǎn)單的事,但實(shí)際去做往往會(huì)遇到意料之外的問題,例如RSSI不準(zhǔn)、Android 在背景久了之后會(huì)休眠,然后就無(wú)法順利掃描(可設(shè)定 Wake Lock)。
除了開發(fā)技術(shù)上的問題之外,使用者是否愿意開藍(lán)芽、定位等權(quán)限,也常常讓 App 無(wú)法順利運(yùn)作。
未來(lái)就往 Physical Web 方向走,會(huì)場(chǎng)報(bào)到、員工簽到、退,逃生口的開關(guān) Web 化 ….
大家可以多發(fā)揮一些想象來(lái)讓世界更美好。
開發(fā)過(guò)程非常感謝同事們的幫忙 …
關(guān)鍵字:Beacon物聯(lián)網(wǎng)