物聯(lián)網(wǎng):從有線到無線,我的 Beacon 開發(fā)之路

責(zé)任編輯:editor007

作者:亂馬客

2017-09-22 22:29:50

摘自:gss

2、自動(dòng)簽到、簽退前面提到,我們可以知道進(jìn)入、離開及一直掃描 Beacon ,所以我們可以自動(dòng)記錄這些信息。3、控制門禁,達(dá)到自動(dòng)開門當(dāng)知道人與Beacon的距離之后,因?yàn)槲覀児居虚T禁,進(jìn)出都要刷卡。

在網(wǎng)絡(luò)上看到 Beacon 的介紹,可以運(yùn)用在很多地方。

而在一般的企業(yè)中可以有什么樣的應(yīng)用呢?

以下分享筆者這陣子利用 Beacon 開發(fā)的經(jīng)驗(yàn)給大家,

前言

Beacon 是什么呢? 它的英文就是燈塔、烽火臺(tái) …

它就像燈塔一樣一直發(fā)送 藍(lán)芽的廣告訊號,

主要有 UUID, Major 及 Minor 再包含一些 payload 數(shù)據(jù)。

而 UUID 可以代表一個(gè)公司, Major 及 Minor 則可以讓我們再分別定義 分公司 或 地區(qū)等等。

那要如何知道這個(gè) Beacon 在那里呢?

要透過藍(lán)芽去掃描它,iOS就內(nèi)建有 Core Location APIs 可以使用。

而 Android 則可以使用 Beacon Library 來掃 Beacon。

在一開始測試 Beacon 時(shí),建議使用 Android 安裝 掃描 Beacon 的 App比較方便,

因?yàn)?iPhone 無法直接掃描,需要輸入 UUID 等信息才可以掃。

一開始掃到時(shí),會(huì)有進(jìn)入這個(gè) Beacon 區(qū)域的事件 (Monitoring),

當(dāng)進(jìn)入 Beacon 這個(gè)區(qū)域后,就可以一直掃描這個(gè) Beacon (Ranging),然后取得它的 RSSI 值來判斷跟它的距離。

最后如果掃不到這個(gè) Beacon 的話,會(huì)有一個(gè) 離開這個(gè) Beacon 區(qū)域的事件 (Monitoring)。

有了 Beacon 之后,初步的 Survey 后,

我們就開始試看看它到底能不能像網(wǎng)絡(luò)上說的那么神奇,

所以我們做了以下的應(yīng)用,



實(shí)踐:

1、室用定位


網(wǎng)絡(luò)上的文章都說它可以用在室內(nèi)定位,那一個(gè)辦公室中,我放3個(gè)Beacon是不是就可以利用三角定位來找出人在那里呢?

所以原本的目標(biāo)是一個(gè)辦公室中放個(gè)4顆 Beacon,看看能不能取得每個(gè)人行走的路線,未來還可以分析那條路是熱區(qū),或是那個(gè)員工都會(huì)去找那個(gè)員工之類的分析。

測試結(jié)果發(fā)現(xiàn), Beacon 過了3公尺后,RSSI值后不穩(wěn)定,所以如果我真的要定位準(zhǔn)的話,就要買很多顆的 Beacon。

如果多顆的話,就要用 Fingerprint 來算位置在那里。

一顆穩(wěn)定的 Beacon 不便宜,如果要在辦公室達(dá)到目標(biāo)的話,成本太高,所以后來我們就放棄了。

2、自動(dòng)簽到、簽退

前面提到,我們可以知道進(jìn)入、離開及一直掃描 Beacon ,所以我們可以自動(dòng)記錄這些信息。

就可以知道員工幾點(diǎn)到公司、幾點(diǎn)離開公司。

本來 App 是使用 Cordova 來寫,但這樣員工到公司時(shí),就要拿出手機(jī),然后開啟 App 去掃描,

這樣跟拿出門禁卡來刷,好像好不到那去。

所以我們就改用 Xamarin 來寫,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ī)亮起來,這時(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 來模擬 Beacon ,同時(shí)再接公司的門禁,當(dāng)員工靠近門時(shí),Server收到信息之后,就透過 Azure IOT Hub 發(fā)訊息(免費(fèi)的跟付費(fèi)的數(shù)量跟速度有差哦)讓 RPi開門。

架構(gòu)圖如下,

演示的視頻如下,






結(jié)論

看起來雖然簡單的事,但實(shí)際去做往往會(huì)遇到意料之外的問題,例如RSSI不準(zhǔn)、Android 在背景久了之后會(huì)休眠,然后就無法順利掃描(可設(shè)定 Wake Lock)。

除了開發(fā)技術(shù)上的問題之外,使用者是否愿意開藍(lán)芽、定位等權(quán)限,也常常讓 App 無法順利運(yùn)作。

未來就往 Physical Web 方向走,會(huì)場報(bào)到、員工簽到、退,逃生口的開關(guān) Web 化 ….

大家可以多發(fā)揮一些想象來讓世界更美好。

開發(fā)過程非常感謝同事們的幫忙 …

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號