91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>基于谷歌云的物聯(lián)網(wǎng)系統(tǒng)——用戶活動識別

基于谷歌云的物聯(lián)網(wǎng)系統(tǒng)——用戶活動識別

2023-06-19 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

描述

介紹

該項目旨在成為以下的合乎邏輯的繼續(xù):

作為羅馬 Sapienza 大學物聯(lián)網(wǎng)課程的學習項目。在本節(jié)中,我們將在前面部分開發(fā)的基于云的系統(tǒng)之上構(gòu)建。本質(zhì)上,我們將使用通用傳感器 API構(gòu)建一個 HTML5 移動應用程序,以從手機的加速度傳感器收集數(shù)據(jù)該數(shù)據(jù)將通過一個簡單的活動識別模型進行計算,該模型檢測用戶是靜止不動還是行走,并最終發(fā)送到我們的云系統(tǒng)(該模型將以邊緣和云方式部署)。

依賴項

在這個項目中,需要的依賴項很少,可以按照此處鏈接的官方指南輕松獲得:

執(zhí)行

移動HTML5應用程序

一個非常簡單的基于 HTML5 的移動應用程序,由節(jié)點服務器托管,它的工作是通過通用傳感器 API 從集成加速度計中檢索數(shù)據(jù),并最終將其發(fā)送到云端。該頁面將在本地計算并顯示識別模型的結(jié)果。

pYYBAGOYHtuAI0yPAAB6UFXNz7k209.jpg
移動應用
?

通用SensorAPI -線性加速度計

設(shè)置加速度計以達到我們想要的結(jié)果非常簡單,這是通過使用 Geneirc Sensor Api,一個以一致且可訪問的方式將傳感器數(shù)據(jù)公開到開放 Web 平臺的框架。首先,您需要定義一個線性加速度傳感器,這是加速度計的一種基本形式,不包括重力加速度,在本例中,我們將頻率設(shè)置為 1Hz。

accelerometer = new LinearAccelerationSensor({ referenceFrame: 'device', frequency: 1 });

然后,設(shè)置錯誤偵聽器后,啟動加速度計

accelerometer.start();
accelerometer.onreading = () => {
    //APPLY RECOGNITION MODEL TO THE INPUT DATA
    rModel(accelerometer.x, accelerometer.y, accelerometer.z)
    //PUSH DATA
}

加速度計上的輸入數(shù)據(jù)將與模型一起計算,或者直接推送到云端。

用戶活動識別模型

我開發(fā)了一個非常簡單的活動識別模型,具有很好的準確性并且沒有訓練數(shù)據(jù)集(這將導致合理數(shù)量的誤報)。
從 Generic Sensor Api 測量的經(jīng)典加速度考慮了在 X、Y、Z 三個軸上施加到智能手機的重力。這種影響可以通過簡單的數(shù)學運算輕松避免,但我們可以簡單地使用線性加速度傳感器,它不會不考慮重力。

pYYBAGOYHuGACRGTAAAta1lW5Ig403.png
智能手機上的加速度矢量
?

模型本身依賴于向量“法線”概念的功能性,實際上我們有一個包含三個元素 v(x,y,z) 的向量,我們可以通過這個數(shù)學概念來計算該向量的長度以下等式:

||v|| = sqrt(x^2 + y^2 + z^2)

該長度在經(jīng)驗研究的閾值上進行比較。
在我們的例子中,如果長度大于 0.7,則用戶應該在移動,否則它在休息。

部署模型 - 基于Edge

如前所述,我們正在測試我們模型的兩種部署。讓我們看看我們?nèi)绾卧趹贸绦虻那岸吮镜夭渴鹉P汀?/font>

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 上本地計算,并通過托管頁面的服務器上的 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 });
};

請注意,您需要一些個人 google 云項目數(shù)據(jù)(mqtt 主題、客戶端和 deviceId),如我們的第一個教程中所述。

部署模型 - CloudBased

另一面,現(xiàn)在讓我們將模型部署到云上。html是相同的,但現(xiàn)在我們不會使用本地計算的值,實際上數(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)通過云端模型計算,然后通過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);
}

如您所見,我們使用兩個設(shè)備進行推送,以實現(xiàn)我們的雙重部署研究案例的目標。

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();

額外- 云功能作為后臺功能

通過使用云功能也可以達到同樣的目標。可以在“./crowd_sensing_client/background_function”下的我的個人存儲庫中找到一個示例。我認為這是實現(xiàn)這個目標的一種很好的平衡方法,流程非常簡單,本質(zhì)上傳遞給特定主題的數(shù)據(jù)將通過定義的后臺函數(shù)進行分析,然后推送到另一個主題(或您喜歡的同一個主題) )。讓我們看看它是如何工作的:

1)在google cloud IoT core上點擊云函數(shù),然后新建一個函數(shù)。

poYBAGOYHuiAUfWxAABSkjdzmlQ926.png
創(chuàng)建云函數(shù)
?

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

2)編碼你的功能。

poYBAGOYHuqAeH4lAACdmTFAW38462.png
完成功能的配置
?

注意在這部分中,正確設(shè)置package.json至關(guān)重要,因為 pubsub 的版本彼此非常不同(在這種情況下,我使用的是 0.21.1)。請記住更改已執(zhí)行函數(shù)的名稱。

3)只需將值推送到特定主題即可。

我真的很喜歡這個實現(xiàn),但是使用的那個對所有其他教程來說更加線性和一致。我希望您喜歡本教程,您可以測試運行服務器 (node./app.js) 并使用部署在 heroku 上的移動應用程序的整體應用程序


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 国产精品人人爱一区二区白浆 | 成年人黄色片视频 | 欧美婷婷六月丁香综合色 | 真人实干一级毛片aa免费 | 1000部啪啪 | 欧美一级别 | 性视频一区 | 国产女人伦码一区二区三区不卡 | 日日夜夜操操 | 情久久| 欧美特黄一免在线观看 | 久久夜色tv网站免费影院 | 午夜久久久久久网站 | 日韩毛片在线看 | 大香交伊人 | 美女大黄三级视频在线观看 | bt天堂资源在线种子 | 中文字幕在线播放第一页 | 爱爱帝国亚洲一区二区三区 | 成年网站在线看 | 特级毛片aaaa级毛片免费 | 最新版天堂资源官网 | xvideos国产 | 午夜精品在线免费观看 | 亚洲精品国产成人 | 国内在线观看精品免费视频 | 激情在线播放免费视频高清 | 日本国产在线 | 青草久操 | 99草在线观看 | 亚洲人成电影 | 草伊人| 一区二区三区免费精品视频 | 国产精品国产三级国产普通话对白 | 欧美草逼| 人与禽一级一级毛片 | 国产在线精品香蕉综合网一区 | 萌白酱香蕉白丝护士服喷浆 | 在线视频综合网 | 一级做性色a爱片久久片 | xxx性xxx乱 |