基于谷歌云的物聯(lián)網(wǎng)系統(tǒng)——用戶活動(dòng)識(shí)別
資料介紹
描述
描述
介紹
該項(xiàng)目旨在成為以下的合乎邏輯的繼續(xù):
- 基于谷歌云的物聯(lián)網(wǎng)系統(tǒng)教程。(一)
- 基于谷歌云的物聯(lián)網(wǎng)系統(tǒng) - RIOT、MQTTSN、MQTT。( 2 )
- 基于谷歌云的物聯(lián)網(wǎng)系統(tǒng) - LoRaWAN、TTN、MQTT。( 3 )
作為羅馬 Sapienza 大學(xué)物聯(lián)網(wǎng)課程的學(xué)習(xí)項(xiàng)目。在本節(jié)中,我們將在前面部分開發(fā)的基于云的系統(tǒng)之上構(gòu)建。本質(zhì)上,我們將使用通用傳感器 API構(gòu)建一個(gè) HTML5 移動(dòng)應(yīng)用程序,以從手機(jī)的加速度傳感器收集數(shù)據(jù)。該數(shù)據(jù)將通過一個(gè)簡單的活動(dòng)識(shí)別模型進(jìn)行計(jì)算,該模型檢測(cè)用戶是靜止不動(dòng)還是行走,并最終發(fā)送到我們的云系統(tǒng)(該模型將以邊緣和云方式部署)。
依賴項(xiàng)
在這個(gè)項(xiàng)目中,需要的依賴項(xiàng)很少,可以按照此處鏈接的官方指南輕松獲得:
執(zhí)行
移動(dòng)HTML5應(yīng)用程序
一個(gè)非常簡單的基于 HTML5 的移動(dòng)應(yīng)用程序,由節(jié)點(diǎn)服務(wù)器托管,它的工作是通過通用傳感器 API 從集成加速度計(jì)中檢索數(shù)據(jù),并最終將其發(fā)送到云端。該頁面將在本地計(jì)算并顯示識(shí)別模型的結(jié)果。

通用SensorAPI -線性加速度計(jì)
設(shè)置加速度計(jì)以達(dá)到我們想要的結(jié)果非常簡單,這是通過使用 Geneirc Sensor Api,一個(gè)以一致且可訪問的方式將傳感器數(shù)據(jù)公開到開放 Web 平臺(tái)的框架。首先,您需要定義一個(gè)線性加速度傳感器,這是加速度計(jì)的一種基本形式,不包括重力加速度,在本例中,我們將頻率設(shè)置為 1Hz。
accelerometer = new LinearAccelerationSensor({ referenceFrame: 'device', frequency: 1 });
然后,設(shè)置錯(cuò)誤偵聽器后,啟動(dòng)加速度計(jì)
accelerometer.start();
accelerometer.onreading = () => {
//APPLY RECOGNITION MODEL TO THE INPUT DATA
rModel(accelerometer.x, accelerometer.y, accelerometer.z)
//PUSH DATA
}
加速度計(jì)上的輸入數(shù)據(jù)將與模型一起計(jì)算,或者直接推送到云端。
用戶活動(dòng)識(shí)別模型
我開發(fā)了一個(gè)非常簡單的活動(dòng)識(shí)別模型,具有很好的準(zhǔn)確性并且沒有訓(xùn)練數(shù)據(jù)集(這將導(dǎo)致合理數(shù)量的誤報(bào))。
從 Generic Sensor Api 測(cè)量的經(jīng)典加速度考慮了在 X、Y、Z 三個(gè)軸上施加到智能手機(jī)的重力。這種影響可以通過簡單的數(shù)學(xué)運(yùn)算輕松避免,但我們可以簡單地使用線性加速度傳感器,它不會(huì)不考慮重力。

模型本身依賴于向量“法線”概念的功能性,實(shí)際上我們有一個(gè)包含三個(gè)元素 v(x,y,z) 的向量,我們可以通過這個(gè)數(shù)學(xué)概念來計(jì)算該向量的長度以下等式:
||v|| = sqrt(x^2 + y^2 + z^2)
該長度在經(jīng)驗(yàn)研究的閾值上進(jìn)行比較。
在我們的例子中,如果長度大于 0.7,則用戶應(yīng)該在移動(dòng),否則它在休息。
部署模型 - 基于Edge
如前所述,我們正在測(cè)試我們模型的兩種部署。讓我們看看我們?nèi)绾卧趹?yīng)用程序的前端本地部署模型。
delta = Math.sqrt(accelerometer.x * accelerometer.x + accelerometer.y * accelerometer.y + accelerometer.z * accelerometer.z);
delta > 0.7 ? (moving = true, status.innerHTML = "Walking") : (moving = false, status.innerHTML = "Resting");
console.log("send data: " + accelerometer);
socket.emit('data',
{
x: accelerometer.x,
y: accelerometer.y,
z: accelerometer.z,
status: moving
});
線性加速度傳感器收集的數(shù)據(jù)在 html 上本地計(jì)算,并通過托管頁面的服務(wù)器上的 publishAsync 函數(shù)發(fā)送到谷歌云(我們通過使用 soket.io 檢索值,如上一教程中所示)。
const publishAsync = (
mqttTopic,
client,
data,
) => {
console.log("Edge computing");
// Function that push the sensor status on Google Cloud
var status = JSON.stringify(data.status);
var x = JSON.stringify(data.x);
var y = JSON.stringify(data.y);
var z = JSON.stringify(data.z);
console.log("x: " + x + " y: " + y + " z:" + z + " ======> " + status);
const payload = deviceId + ":" + status + ":" + "crowd_sensing";
// Publish "payload" to the MQTT topic. qos=1 means at least once delivery. (There is also qos=0)
console.log('Publishing message:', payload);
client.publish(mqttTopic, payload, { qos: 1 });
};
請(qǐng)注意,您需要一些個(gè)人 google 云項(xiàng)目數(shù)據(jù)(mqtt 主題、客戶端和 deviceId),如我們的第一個(gè)教程中所述。
部署模型 - CloudBased
另一面,現(xiàn)在讓我們將模型部署到云上。html是相同的,但現(xiàn)在我們不會(huì)使用本地計(jì)算的值,實(shí)際上數(shù)據(jù)(x,y,z)是:
1)推送到云端
const publishCloud = (
mqttTopicCloud,
clientCloud,
data,
) => {
// Function that push the sensor value on Google Cloud
var x = JSON.stringify(data.x);
var y = JSON.stringify(data.y);
var z = JSON.stringify(data.z);
console.log("Cloud computing");
console.log("x: " + x + " y: " + y + " z:" + z);
const payload = deviceIdCloud + ":" + x + ":" + y + ":" + z + ":" + "crowd_sensing";
// Publish "payload" to the MQTT topic. qos=1 means at least once delivery. (There is also qos=0)
console.log('Publishing message:', payload);
clientCloud.publish(mqttTopicCloud, payload, { qos: 1 });
};
2)通過云端模型計(jì)算,然后通過soket.io推送到dashboard。
else if (device == "accelerometer") {
//Computed at edge, receive and push the value without computing at cloud
log[5].lastValue = value;
log[5].values.push(value);
socket.emit('accelerometer', log[5].lastValue);
socket.emit('accelerometer', log[5].values);
}
else if (device == "accelerometer_cloud") {
//Compute at cloud, if delta > 0.7 then user is moving
var delta = Math.sqrt(x * x + y * y + z * z);
log[6].lastValue = delta > 0.7
socket.emit('accelerometer_cloud', log[6].lastValue);
socket.emit('accelerometer_cloud', log[6].values);
}
如您所見,我們使用兩個(gè)設(shè)備進(jìn)行推送,以實(shí)現(xiàn)我們的雙重部署研究案例的目標(biāo)。
3) 保存在數(shù)據(jù)庫中
// References an existing subscription
const subscription = pubSubClient.subscription(subscriptionName);
// Create an event handler to handle messages
let messageCount = 0;
const messageHandler = message => {
console.log(`Received message ${message.id}:`);
console.log(`\tData: ${message.data}`);
var data = `${message.data}`.split(":");
if (data != null) {
var device = data[0].toString();
var x, y, z;
var value = data[0] != "accelerometer_cloud" ? data[1].toString() : (x = data[1], y = data[2], z = data[3]);
[//Device Switch as seen in 2)]
new Data
({
device: device,
value: value,
data: Date.now() / 1000
}).save();
額外- 云功能作為后臺(tái)功能
通過使用云功能也可以達(dá)到同樣的目標(biāo)。可以在“./crowd_sensing_client/background_function”下的我的個(gè)人存儲(chǔ)庫中找到一個(gè)示例。我認(rèn)為這是實(shí)現(xiàn)這個(gè)目標(biāo)的一種很好的平衡方法,流程非常簡單,本質(zhì)上傳遞給特定主題的數(shù)據(jù)將通過定義的后臺(tái)函數(shù)進(jìn)行分析,然后推送到另一個(gè)主題(或您喜歡的同一個(gè)主題) )。讓我們看看它是如何工作的:
1)在google cloud IoT core上點(diǎn)擊云函數(shù),然后新建一個(gè)函數(shù)。

為函數(shù)插入一個(gè)名稱,選擇分配的內(nèi)存(256MiB 就足夠了),選擇 Cloud Pub/Sub 作為觸發(fā)方法,然后選擇一個(gè)關(guān)聯(lián)的主題(或者創(chuàng)建一個(gè)新的無論如何)。
2)編碼你的功能。

注意在這部分中,正確設(shè)置package.json至關(guān)重要,因?yàn)?pubsub 的版本彼此非常不同(在這種情況下,我使用的是 0.21.1)。請(qǐng)記住更改已執(zhí)行函數(shù)的名稱。
3)只需將值推送到特定主題即可。
我真的很喜歡這個(gè)實(shí)現(xiàn),但是使用的那個(gè)對(duì)所有其他教程來說更加線性和一致。我希望您喜歡本教程,您可以測(cè)試運(yùn)行服務(wù)器 (node./app.js) 并使用部署在 heroku 上的移動(dòng)應(yīng)用程序的整體應(yīng)用程序。
- 使用谷歌云物聯(lián)網(wǎng)和MQTT的環(huán)境站
- 物聯(lián)網(wǎng)感知技術(shù)及系統(tǒng)應(yīng)用 1次下載
- 物聯(lián)網(wǎng)人類活動(dòng)識(shí)別網(wǎng)絡(luò)應(yīng)用
- 物聯(lián)網(wǎng)云平臺(tái)說明書 0次下載
- 分布式工業(yè)物聯(lián)網(wǎng)云平臺(tái) 0次下載
- 探究機(jī)械工程物聯(lián)網(wǎng)系統(tǒng)遠(yuǎn)程解決方案 15次下載
- 論物聯(lián)網(wǎng)與大數(shù)據(jù)、云計(jì)算、工業(yè)物聯(lián)網(wǎng)、區(qū)塊鏈的關(guān)系 4次下載
- 基于ZigBee和物聯(lián)網(wǎng)的智能草莓大棚控制系統(tǒng) 38次下載
- 基于流量指紋的物聯(lián)網(wǎng)設(shè)備識(shí)別方法 13次下載
- 基于區(qū)塊鏈的物聯(lián)網(wǎng)訪問控制系統(tǒng) 45次下載
- 基于深度信念網(wǎng)絡(luò)的實(shí)體識(shí)別算法 16次下載
- 物聯(lián)網(wǎng)到底是什么物聯(lián)網(wǎng)的簡介和三項(xiàng)關(guān)鍵技術(shù)詳細(xì)說明 16次下載
- 物聯(lián)網(wǎng)的體系架構(gòu)的詳細(xì)資料概述 16次下載
- 阿里云物聯(lián)網(wǎng)平臺(tái)的用戶指南資料免費(fèi)下載 16次下載
- 基于諸智云的工業(yè)物聯(lián)網(wǎng)解決方案詳細(xì)資料免費(fèi)下載 24次下載
- 基于機(jī)智云物聯(lián)網(wǎng)平臺(tái)的停車場(chǎng)管理系統(tǒng)設(shè)計(jì) 1.6k次閱讀
- 中易云物聯(lián)網(wǎng)系統(tǒng)一體機(jī)的主要應(yīng)用場(chǎng)景 1.2k次閱讀
- 基于機(jī)智云物聯(lián)網(wǎng)平臺(tái)的4G智能開窗器控制系統(tǒng)設(shè)計(jì) 2.7k次閱讀
- 基于阿里云物聯(lián)網(wǎng)平臺(tái)的智能燈光控制系統(tǒng)設(shè)計(jì) 5.4k次閱讀
- 陀螺儀在人體活動(dòng)識(shí)別系統(tǒng)中的應(yīng)用 3.6k次閱讀
- 云計(jì)算、大數(shù)據(jù)與物聯(lián)網(wǎng)有什么聯(lián)系呢? 9.2k次閱讀
- 如何成功實(shí)現(xiàn)物聯(lián)網(wǎng)用戶體驗(yàn)設(shè)計(jì) 2.1k次閱讀
- 科普:物聯(lián)網(wǎng)、云計(jì)算和大數(shù)據(jù)的原理和區(qū)別 5.5k次閱讀
- 物聯(lián)網(wǎng)系統(tǒng)評(píng)價(jià)的模型如何去構(gòu)建實(shí)現(xiàn) 2k次閱讀
- 分布式工業(yè)物聯(lián)網(wǎng)云平臺(tái)是怎樣的 2k次閱讀
- 你知道水泵物聯(lián)網(wǎng)監(jiān)控系統(tǒng)嗎 2.5k次閱讀
- 物聯(lián)網(wǎng)有哪些操作系統(tǒng)?物聯(lián)網(wǎng)操作系統(tǒng)匯總 5.7w次閱讀
- 物聯(lián)網(wǎng)嵌入式系統(tǒng)的應(yīng)用及特征 5.6k次閱讀
- 云計(jì)算與物聯(lián)網(wǎng)的關(guān)系_云計(jì)算和物聯(lián)網(wǎng)的優(yōu)勢(shì) 1.5w次閱讀
- 物聯(lián)網(wǎng)環(huán)境下的云存儲(chǔ)安全技術(shù)研究 835次閱讀
下載排行
本周
- 1矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 2HT81696H 內(nèi)置升壓的30W立體聲D類音頻功放數(shù)據(jù)手冊(cè)
- 1.21 MB | 1次下載 | 免費(fèi)
- 3HTA6863 3W超低噪聲超低功耗單聲道D類音頻功率放大器數(shù)據(jù)手冊(cè)
- 0.87 MB | 次下載 | 免費(fèi)
- 4南芯 Southchip SC8802C 充電控制器 規(guī)格書 Datasheet 佰祥電子
- 88.16 KB | 次下載 | 免費(fèi)
- 5矽力杰 Silergy SY7065 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
- 910.67 KB | 次下載 | 免費(fèi)
- 6矽力杰 Silergy SY7066 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
- 989.14 KB | 次下載 | 免費(fèi)
- 7WD6208A產(chǎn)品規(guī)格書
- 631.24 KB | 次下載 | 免費(fèi)
- 8NB685 26 V,12 A,低靜態(tài)電流,大電流 同步降壓變換器數(shù)據(jù)手冊(cè)
- 1.64 MB | 次下載 | 2 積分
本月
- 1EMC PCB設(shè)計(jì)總結(jié)
- 0.33 MB | 12次下載 | 免費(fèi)
- 2PD取電芯片 ECP5702規(guī)格書
- 0.88 MB | 5次下載 | 免費(fèi)
- 3矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 4氮化鎵GaN FET/GaN HEMT 功率驅(qū)動(dòng)電路選型表
- 0.10 MB | 3次下載 | 免費(fèi)
- 5PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊(cè)
- 0.88 MB | 3次下載 | 免費(fèi)
- 6SY50655 用于高輸入電壓應(yīng)用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
- 1.01 MB | 3次下載 | 免費(fèi)
- 7怎么為半導(dǎo)體測(cè)試儀選擇精密放大器
- 0.65 MB | 2次下載 | 免費(fèi)
- 8SY52341 次級(jí)側(cè)同步整流英文手冊(cè)
- 0.94 MB | 2次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191469次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論