資料介紹
描述
介紹
我們準備去;
將以下無線節(jié)點連接到 Azure Sphere;
我們將使用 GPIO 控制的 LED 來指示狀態(tài)并說明 Azure IoT Central 控制。
將 Azure Sphere 配置為 Azure IoT Central 和內(nèi)部節(jié)點網(wǎng)絡之間傳感器和控制數(shù)據(jù)的透明網(wǎng)關(guān)。
配置 IoT Central 儀表板以顯示傳感器數(shù)據(jù)并提供簡單的控制。
概述
分布式數(shù)據(jù)系統(tǒng)是任何通信節(jié)點的系統(tǒng),每個節(jié)點維護數(shù)據(jù)對象作為一個單一的、連貫的數(shù)據(jù)系統(tǒng)可訪問。我們的公司 Koliada 維護著一個分布式數(shù)據(jù)系統(tǒng) (EtherDATA),該系統(tǒng)旨在透明訪問和管理小型嵌入式設備上的分布式和復制數(shù)據(jù)對象。該項目使用 Azure Sphere 和 Azure IoT Central,借助 EtherDATA 有效地監(jiān)視和控制無線傳感器節(jié)點。
該系統(tǒng)由安全的 Azure 云平臺產(chǎn)品 Azure IoT Central、安全的物聯(lián)網(wǎng)網(wǎng)關(guān)設備 Azure Sphere 和分布式數(shù)據(jù)系統(tǒng) EtherDATA 組成,EtherDATA 將數(shù)據(jù)訪問抽象為一組布置為無線網(wǎng)格的無線傳感器節(jié)點。網(wǎng)格由 EtherMESH 管理,這是一種嵌入式網(wǎng)格協(xié)議,也由 Koliada 維護,用于小型、低功耗、嵌入式設備。
傳感器和控制數(shù)據(jù)使用 EtherDATA 通過無線網(wǎng)格進行分發(fā),包括使用 JSON over UART 連接到 Azure Sphere 的網(wǎng)格網(wǎng)關(guān)設備。Sphere 在網(wǎng)格和 Azure IoT Central 之間轉(zhuǎn)發(fā)數(shù)據(jù)以進行遠程監(jiān)控。
部分總結(jié)
本文檔末尾提供了指向所有組件的詳細信息的鏈接。
蔚藍
Azure 微軟的公共云計算平臺。它提供一系列云服務,包括計算、分析、存儲和網(wǎng)絡服務。用戶可以從這些服務中挑選,以在公共云中開發(fā)和擴展新應用程序,或運行現(xiàn)有應用程序。
本項目專門使用了 Azure IoT 中央服務。
Azure 物聯(lián)網(wǎng)中心
Azure IoT Central 是一種完全托管的 IoT 軟件即服務解決方案,可以輕松創(chuàng)建連接物理世界和數(shù)字世界的產(chǎn)品。您可以通過以下方式將互聯(lián)產(chǎn)品愿景變?yōu)楝F(xiàn)實:
? 從連接的設備中獲得新的見解,為您的客戶提供更好的產(chǎn)品和體驗。
? 為企業(yè)創(chuàng)造新的商機。
Azure IoT Central 有四個與 Azure IoT Central 應用程序交互的角色:
? 構(gòu)建者負責定義連接到應用程序的設備類型并為操作員定制應用程序。
? 操作員管理連接到應用程序的設備。
? 管理員負責管理任務,例如管理應用程序中的用戶和角色。
? 設備開發(fā)人員創(chuàng)建在連接到您的應用程序的設備上運行的代碼。
蔚藍球體
Azure Sphere 是一個安全的高級應用程序平臺,具有用于連接 Internet 的設備的內(nèi)置通信和安全功能。它包括一個安全、互聯(lián)、交叉的微控制器單元 (MCU)、一個定制的基于 Linux 的高級操作系統(tǒng) (OS),以及一個基于云的安全服務,可提供持續(xù)、可更新的安全性。
Azure Sphere 硬件、軟件和安全服務為設備維護、控制和安全提供了獨特的集成方法。硬件架構(gòu)為連接的設備提供了一個從根本上安全的計算基礎,讓您可以專注于您的產(chǎn)品。
該軟件架構(gòu)具有在 Microsoft 編寫的安全監(jiān)視器上運行的安全自定義操作系統(tǒng)內(nèi)核,同樣使您能夠?qū)④浖ぷ骷性谠鲋滴锫?lián)網(wǎng)和特定于設備的功能上。
將 Azure Sphere 用作該項目的一部分的優(yōu)勢在于,它為傳感器和控制器的內(nèi)部網(wǎng)絡提供了一個高度安全的網(wǎng)關(guān)。使用 Sphere 可以降低內(nèi)部網(wǎng)絡的復雜性、成本和功耗,而不會影響整個系統(tǒng)的安全性。
以太數(shù)據(jù)
EtherDATA 是一個數(shù)據(jù)定義、存儲和訪問系統(tǒng),它使用簡單的數(shù)據(jù)定義范例滿足小型分布式節(jié)點之間數(shù)據(jù)復制和通信的需求。EtherDATA 解決了以下架構(gòu)規(guī)則;
邏輯數(shù)據(jù)獨立性
EtherDATA 數(shù)據(jù)對象通過數(shù)據(jù)模式進行描述和訪問。
物理數(shù)據(jù)獨立性
EtherDATA 數(shù)據(jù)對象由系統(tǒng)定義的邏輯到物理映射存儲和引用,并作為系統(tǒng)服務提供給應用程序。
網(wǎng)絡透明度
EtherDATA 可以通過各種網(wǎng)絡技術(shù)實現(xiàn),包括但不限于 TCP/IP、以太網(wǎng)和使用各種節(jié)點架構(gòu)的無線技術(shù)。通信和節(jié)點架構(gòu)的細節(jié)對應用程序是隱藏的。
復制透明度
數(shù)據(jù)復制改善了引用的局部性,并在發(fā)生故障時提高了訪問的冗余性。EtherDATA 數(shù)據(jù)對象可以透明地在網(wǎng)絡中的節(jié)點或節(jié)點組之間進行復制。
碎片透明度
小型嵌入式系統(tǒng)沒有資源來存儲系統(tǒng)可訪問的所有數(shù)據(jù),并且任何數(shù)據(jù)庫都必須跨網(wǎng)絡節(jié)點分段。EtherDATA 向應用程序隱藏了這種碎片。
EtherDATA 不提供關(guān)系數(shù)據(jù)庫管理工具。它專門設計用于為小型異構(gòu)系統(tǒng)輕松抽象數(shù)據(jù)引用。在 8051 中,EtherDATA 可以部署在少至 5k 字節(jié)的 ROM 和可忽略不計的 RAM 占用空間(< 128 字節(jié))中。
在這個項目中,EtherDATA 使用 Koliada 的底層無線網(wǎng)狀網(wǎng)絡技術(shù) EtherMESH 來實現(xiàn)網(wǎng)狀網(wǎng)絡連接。
以太網(wǎng)狀網(wǎng)絡
網(wǎng)狀網(wǎng)絡是一種網(wǎng)絡拓撲結(jié)構(gòu),其中每個節(jié)點不僅要捕獲和傳播自己的數(shù)據(jù),還要充當其他節(jié)點的中繼。
以太網(wǎng);
是異質(zhì)節(jié)點的同質(zhì)網(wǎng)格
- 所有幀都可以到達所有節(jié)點
使用優(yōu)化的洪水填充算法進行動態(tài)路由和傳播
- 單個“廣播”傳輸?shù)竭_所有本地節(jié)點,減少 RF“顫動”。
- 簡單的存儲轉(zhuǎn)發(fā)架構(gòu)。
- 正在申請專利的流量管理優(yōu)化
- 消除了對特定節(jié)點類型的需求
自同步通信
- 顯著降低配置要求。
- 消除了比溝通所需的時間更長的清醒時間。
就我們的項目而言,EtherMESH 提供以下主要功能;
1.低功耗
2. 易于部署,以及
3.便于管理。
KoliadaES
KoliadaES 是一個用于異構(gòu)嵌入式開發(fā)的同構(gòu)模塊化嵌入式系統(tǒng)。它既是嵌入式系統(tǒng)開發(fā)和實現(xiàn)的范例。
我們使用 E3 Embeddeds PIEP 板和 KoliadaES 來快速啟動數(shù)據(jù)節(jié)點。
PIEP
PIEP——處理器獨立嵌入式平臺——E3 Embedded 的模塊化硬件系統(tǒng)——利用了模塊化嵌入式系統(tǒng) KoliadaES 的潛力。
PIEP 系統(tǒng)由多個不同種類的可堆疊板組成,無論是處理器還是外圍設備或可互換的分線板。
MCU 架構(gòu)的改變是通過簡單地更換處理器板來實現(xiàn)的,并且在使用 KoliadaES 時,利用相同的源代碼和相同的外圍設備。
硬件和軟件要求
為了設置這個項目,我們需要。
1. 設置終端網(wǎng)關(guān)——Azure sphere設備
硬件
- Azure sphere MT3620套件
- PIEP-KOLIADA 站棧 x 1
任何 PIEP 處理器板
接線板
USB板
軟件
? Windows 10 版本 1607 或更高版本
? Azure 云服務(Azure IoT Central)
工具
? Visual Studio VS2017 15.9+ 或 VS 2019 16.04+
? 用于視覺工作室的 Azure Sphere SDK
? Azure sphere 開發(fā)人員命令提示符
2. 設置 KoliadaES 系統(tǒng)
硬件
? EtherDATA 壓力/溫度/濕度堆棧 x 3
任何 PIEP 處理器板
溫度/相對濕度/壓力板
USB板
電池板
? EtherDATA 跟蹤器堆棧 x 1
任何 PIEP 處理器板
電池板
USB板
? EtherDATA 磁力計堆棧 x 1
任何 PIEP 處理器板
接線板
電池板
USB板
? EtherDATA 站堆棧 x 1
任何 PIEP 處理器板
接線板
USB板
? 外部磁力計傳感器
軟件
? Windows 10 版本 1607 或更高版本
? KoliadaES SDK
? Visual Studio Code(或任何基于 make 的 IDE)
工具
? Visual Code 1.39 或更高版本(或任何基于 make 的 IDE)
? KoliadaES SDK
在我們的部署中,我們使用了 PIEP Mini TI CC2541 處理器板,但任何啟用無線、支持 KoliadaES 的 MCU 都可以與相同的應用程序代碼一起使用。
構(gòu)建系統(tǒng)
該系統(tǒng)由一組無線傳感器節(jié)點組成,這些節(jié)點使用 KoliadaES 的專有網(wǎng)狀協(xié)議 (EtherMESH) 和分布式數(shù)據(jù)系統(tǒng) (EtherDATA) 主動測量數(shù)據(jù)并相互通信。EtherDATA 與 Azure sphere 集成以將此數(shù)據(jù)轉(zhuǎn)發(fā)到 Azure IoT 中央數(shù)據(jù)庫。
關(guān)鍵部件是
? 三個壓力/溫度/濕度節(jié)點,每 30 秒記錄一次 PHT 數(shù)據(jù)。
? 用于跟蹤資產(chǎn)或人員位置的跟蹤器節(jié)點。等等,每 10 秒記錄一次數(shù)據(jù)。
? 用于跟蹤門或大門狀態(tài)的磁力計(磁傳感器)。
注意:一旦有新的傳感器讀數(shù)或電池值,所有這些都會通過網(wǎng)狀網(wǎng)絡傳輸數(shù)據(jù)。
? 站點節(jié)點(網(wǎng)狀網(wǎng)絡的一部分)從上述節(jié)點收集所有傳感器和電池數(shù)據(jù),并將其傳送給
? Azure Sphere 設備(通過UART 或串行通信)。Azure Sphere 能夠?qū)?PIEP Koliada 站接收到的傳感器推送到 Azure IoT Central 數(shù)據(jù)庫。
? Azure IoT Central 提供對基于網(wǎng)絡的儀表板的訪問,該儀表板填充上述接收到的傳感器數(shù)據(jù),可以使用任何網(wǎng)絡瀏覽器遠程監(jiān)控這些數(shù)據(jù)。
構(gòu)建 PIEP-KoliadaES-Sphere-Azure 系統(tǒng)
步驟1
按照 KoliadaESDK 說明進行安裝 ( https://docs.koliada.com )。
第2步
PIEP節(jié)點的組裝說明
在開始組裝 PIEP 板之前,請確保這些板中的每一個都堆疊在一起,并且排針引腳如下圖所示對齊。
使用螺釘堆疊所有板以保持它們完好無損。
現(xiàn)在讓我們堆疊此項目所需的電路板。
- PHT(壓力/溫度/濕度)堆棧
- 跟蹤堆棧
- 磁力計堆棧
- 站棧
將 KoliadaES下載到構(gòu)建的PIEP節(jié)點
您可以在我們的 KoliadaES 示例頁面 ( https://docs.koliada.com ) 上找到所有網(wǎng)格節(jié)點代碼。
構(gòu)建并刷新為每個節(jié)點提供的項目。請注意,不同的項目需要不同的二進制組件。加載程序使用項目清單來確定每個節(jié)點設備需要哪些二進制文件。
對每個 PIEP 堆棧進行編程后,打開節(jié)點——它們將形成一個運行 EtherDATA 的網(wǎng)格。
現(xiàn)在您需要在節(jié)點和 Azure Sphere 之間建立連接,然后 Azure Sphere 可以將數(shù)據(jù)推送到 Azure IoT Central 以進行遠程監(jiān)控。
第 3 步- 設置 Azure 帳戶
如果您還沒有,Microsoft 還提供了有關(guān)使用Azure以及我們使用的服務Azure IoT Central的文檔。Azure IoT Central 允許用戶遠程管理他們的 IoT 設備,并提供統(tǒng)計數(shù)據(jù)和視覺效果來幫助展示收集到的數(shù)據(jù)。
擁有帳戶后,創(chuàng)建 IoT Central 服務并按照 Microsoft 提供的此處說明授權(quán)您的 Azure Sphere。
現(xiàn)在您可以創(chuàng)建 IoT Central Dashboard
要準備 Azure IoT Central 儀表板以顯示來自無線傳感器節(jié)點的濕度、溫度、壓力、電池、門數(shù)據(jù),您需要按照此處給出的說明進行操作。
第 4 步- 將 Station Stack 連接到 Azure Sphere
第 2 步中的項目之一構(gòu)建了一個系統(tǒng),用于將 EtherDATA 網(wǎng)格連接到 Azure Sphere。
現(xiàn)在您已經(jīng)建立了 Azure Sphere 和 EtherDATA 與網(wǎng)狀網(wǎng)絡之間的連接。無線傳感器網(wǎng)絡已成功將其數(shù)據(jù)轉(zhuǎn)發(fā)到 Azure 球體。為了讓適配器程序?qū)⒛愕脑O備連接到你的 IoT Central 服務并轉(zhuǎn)發(fā)在 Station Stack 上收集的所有數(shù)據(jù),你需要設置一個 Azure 云帳戶和 Azure IoT Central 服務。
您可以通過將 Station Stack 的終端板連接到插入 PC 的 UART-USB 適配器并以 115200 波特率運行任何終端程序來單獨驗證數(shù)據(jù)收集。您將看到發(fā)出的 JSON 字符串;
這顯示了根據(jù)為 EtherDATA 定義的模式來自各個節(jié)點(節(jié)點是一組節(jié)點)的數(shù)據(jù);batteryValue、eValue(溫度、濕度和壓力)和 DoorState(有關(guān) EtherDATA 模式的更多詳細信息,請參見下文)。
第 5 步- 設置 Azure Sphere
要開始設置,請按照 Microsoft 的文檔Azure Sphere Setup進行操作。此鏈接將引導你完成安裝 Azure Sphere SDK 并讓你的設備為應用程序部署做好準備的步驟。
將我們的附加程序加載到您的 Azure Sphere
按照 Microsoft 中有關(guān)側(cè)載應用程序的說明進行操作。使用提供的 Github 代碼讓您的 Azure Sphere 準備好使用 KoliadaES 適配器程序。
現(xiàn)在您已經(jīng)設置了該項目所需的一切。
發(fā)生了什么?
現(xiàn)在所有無線傳感器節(jié)點都在采樣數(shù)據(jù)并在整個網(wǎng)格中分發(fā)該數(shù)據(jù)。然后,該數(shù)據(jù)通過串行通信通過站節(jié)點轉(zhuǎn)發(fā)到 azure sphere。球體運行一個連接模塊來連接到 Azure 服務,并將它接收到的數(shù)據(jù)(從站節(jié)點)推送到 Azure IoT Central 數(shù)據(jù)庫。現(xiàn)在您可以看到您的儀表板正在使用實時數(shù)據(jù)更新,如下所示。
您應該看到以下行為:-
? 所有三個節(jié)點的溫度、壓力、濕度和電池數(shù)據(jù)應每 30 秒在儀表板上更新一次,并且還可以看到最新數(shù)據(jù)的圖表。
? DoorState(磁力計數(shù)據(jù))在每次狀態(tài)改變時更新。在我們的例子中,我們將傳感器連接到磁性門上,每次打開或關(guān)閉門時都會更新 DoorState。
溫度、壓力和濕度堆棧可以放置在任何其他網(wǎng)格節(jié)點最遠 50 米范圍內(nèi)的不同位置。在這里,我們在玻璃咖啡桌上放置了一個監(jiān)控室內(nèi)溫度的設備。
第二個 PHT 堆棧放置在服務器系統(tǒng)機架中,用于監(jiān)控服務器溫度。
第三個 PHT 堆棧放置在房屋外的露臺上,以監(jiān)測室外環(huán)境溫度。
磁力計安裝在門上,可在門打開或關(guān)閉時發(fā)送信號。
追蹤器裝置放置在背包中,以追蹤背包是否在屋內(nèi),并提供背包何時被帶出和進入屋內(nèi)的歷史記錄。
站節(jié)點串行連接到 Azure Sphere。它在網(wǎng)格節(jié)點和 Azure Sphere 之間轉(zhuǎn)發(fā)數(shù)據(jù),從而在 Azure IoT Central 之間轉(zhuǎn)發(fā)數(shù)據(jù)。
該系統(tǒng)為多個獨立無線節(jié)點的安全監(jiān)視和控制提供了一個很好的框架。可以從 PC 或手機訪問數(shù)據(jù)和控制 UI。由于所有的數(shù)據(jù)都被轉(zhuǎn)發(fā)到Azure IoT Central,便于從世界任何地方進行遠程監(jiān)控。
代碼說明
EtherDATA(分布式數(shù)據(jù))——設置節(jié)點數(shù)據(jù)
EtherDATA 使用元數(shù)據(jù)文件 (.ddl) 來描述托管數(shù)據(jù)對象。我們根據(jù)此處顯示的示例指定一組監(jiān)視和控制對象;
UInt8 batteryValue
{
description "current (uncalibrated) battery value";
access readonly;
units "/4096";// raw 12 bit value
}
int eValue[3]
{
description "Current Humidity Sensor Value";
access readonly;
units "% or deg or mbar";
}
byte deviceType
{
description "Device Type";
// 1 - station
// 2 - tracker
// 3 - DoorSensor
// 4 - PHT
access readonly;
}
byte DoorData
{
description "Door values";
access readonly;
}
EtherDATA 對象是全局定義的,并且對于網(wǎng)格中的所有節(jié)點都必須相同。網(wǎng)絡全局定義允許 EtherDATA 從任何節(jié)點訪問和管理數(shù)據(jù)對象。
在應用程序中,我們使用 EtherDATA API 從特定節(jié)點通過網(wǎng)絡發(fā)布數(shù)據(jù)對象,如下所示;
dbPublish(eValue); // for PHT nodes only
dbPublish(batteryValue); // all nodes have a battery
dbPublish(buttonData); // for nodes with buttons
只有 PHT 節(jié)點具有壓力、溫度和濕度傳感器,因此僅需要從 PHT 節(jié)點調(diào)用 dbPublish(eValue)。它們是發(fā)布 PHT 數(shù)據(jù)的節(jié)點。
類似地,磁力計節(jié)點使用 dbPublish(DoorData) 并且 dbPublish(batteryvalue) 在所有使用電池的節(jié)點上使用。
dbPublish 只是告訴 EtherDATA 在數(shù)據(jù)對象可用時發(fā)布它,它仍然由應用程序來確定何時可用。
以下命令根據(jù)來自傳感器的每個樣本設置/更新數(shù)據(jù)對象值。
dbSet(eValue, data); // PHT nodes
dbSet(batteryValue, data); // all nodes
dbSet(DoorData, data); // magnetometer node
dbSet(buttonData, data); // button nodes
數(shù)據(jù)項的值將使用 GPIO、ADC、SPI、UART 等的系統(tǒng)接口從底層系統(tǒng)派生。通常,樣本采用定時器事件處理程序并調(diào)用 dbSet 函數(shù)以將數(shù)據(jù)發(fā)布到 EtherDATA 以進行分發(fā)。
最后,站節(jié)點需要包含以下配置代碼,以便從其他傳感器節(jié)點接收所有更新的數(shù)據(jù)。
dbSubscribe(“*”,eValue, callback);
dbSubscribe(“*”,batteryValue, callback);
dbSubscribe(“*”,DoorData, callback);
dbSubscribe(“*”,buttonData, callback);
如前所述,所有 EtherDATA 對象都是全局定義的,這允許在所有節(jié)點中以相同的方式訪問和管理 EtherDATA 系統(tǒng)中的任何節(jié)點。
除了項目文件中描述的一些基本設置和事件處理之外,盡管可以說更多的內(nèi)容來描述 EtherDATA、EtherMESH 和 KoliadaES,但這幾乎總結(jié)了網(wǎng)格節(jié)點的設置。
Azure Sphere - 設置 IoT Central 數(shù)據(jù)庫連接
Azure SDK main.c 文件包含設置 Azure IoT Central 連接句柄所需的初始化。此處顯示了 Azure IoT Central/Hub 定義;
#include "parson.h" // used to parse Device Twin messages.
// Azure IoT Hub/Central defines.
#define SCOPEID_LENGTH 20
static char scopeId[SCOPEID_LENGTH]; // ScopeId for the Azure IoT Central application, set in // app_manifest.json, CmdArgs
static IOTHUB_DEVICE_CLIENT_LL_HANDLE iothubClientHandle = NULL;
static const int keepalivePeriodSeconds = 20;
static bool iothubAuthenticated = false;
static void SendMessageCallback(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void *context);
static void ReceiveHubMessage(IOTHUB_CLIENT_CONFIRMATION_RESULT result, const unsigned char *payload, size_t payloadSize, void *userContextCallback);
static void TwinCallback(DEVICE_TWIN_UPDATE_STATE updateState, const unsigned char *payload,
size_t payloadSize, void *userContextCallback);
static void TwinReportBoolState(const char *propertyName, bool propertyValue);
static void ReportStatusCallback(int result, void *context);
static const char *GetReasonString(IOTHUB_CLIENT_CONNECTION_STATUS_REASON reason);
static const char *getAzureSphereProvisioningResultString(
AZURE_SPHERE_PROV_RETURN_VALUE provisioningResult);
Azure 帳戶和范圍 ID 的連接字符串設置如下所示;
int main(int argc, char *argv[])
{
Log_Debug("IoT Hub/Central Application starting.\n");
mydoorstate[0] = '0';
if (argc == 2) {
Log_Debug("Setting Azure Scope ID %s\n", argv[1]);
strncpy(scopeId, argv[1], SCOPEID_LENGTH);
}
else {
Log_Debug("ScopeId needs to be set in the app_manifest CmdArgs\n");
return -1;
}
Log_Debug("UART application starting.\n");
if (InitPeripheralsAndHandlers() != 0) {
terminationRequired = true;
}
// Main loop
while (!terminationRequired) {
if (WaitForEventAndCallHandler(epollFd) != 0) {
terminationRequired = true;
}
}
ClosePeripheralsAndHandlers();
Log_Debug("Application exiting.\n");
return 0;
}
InitPeripheralsAndHandlers 初始化UART 并等待UART Event(即從站節(jié)點接收數(shù)據(jù))。
static void UartEventHandler(EventData *eventData)
每當它通過 UART 從站節(jié)點接收數(shù)據(jù)時,此事件處理程序都會執(zhí)行必要的解析,如此處所示;
{
const size_t receiveBufferSize = 128;
uint8_t receiveBuffer[receiveBufferSize + 1]; // allow extra byte for string termination
ssize_t bytesRead = -1;
for (int i = 0; i < 32767 && bytesRead == -1; i++) {
bytesRead = read(uartFd, receiveBuffer, receiveBufferSize);
}
if (bytesRead < 0) {
Log_Debug("ERROR: Could not read UART: %s (%d).\n", strerror(errno), errno);
terminationRequired = true;
return;
}
然后識別解析的數(shù)據(jù)類型(PHT 值、電池或門狀態(tài))和節(jié)點名稱,并將相應的數(shù)據(jù)推送到 Azure IoT Central,如此處所示;
SendRoomTemperature(evalue1);
SendRoomHumidity(evalue2);
SendRoomPressure(evalue3);
static void SendRoomTemperature(const unsigned char *value)
{
static char eventBuffer[100] = { 0 };
static const char *EventMsgTemplate = "{ "RoomTemp": "%s"}";
int len = snprintf(eventBuffer, sizeof(eventBuffer), EventMsgTemplate, value);
if (len < 0)
return;
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromString(eventBuffer);
if (messageHandle == 0) {
Log_Debug("WARNING: unable to create a new IoTHubMessage\n");
return;
}
if (IoTHubDeviceClient_LL_SendEventAsync(iothubClientHandle, messageHandle, SendMessageCallback,
/*&callback_param*/ 0) != IOTHUB_CLIENT_OK) {
Log_Debug("WARNING: failed to hand over the message to IoTHubClient\n");
}
else {
//Log_Debug("INFO: IoTHubClient accepted the message for delivery\n");
}
IoTHubMessage_Destroy(messageHandle);
}
這總結(jié)了 Azure Sphere 設備的網(wǎng)格 → Azure 轉(zhuǎn)發(fā)責任。反向的類似機制接收控制請求并將它們轉(zhuǎn)發(fā)到網(wǎng)格。
現(xiàn)在剩下的都在 Azure Central 上了。由于設備已經(jīng)預先在 IoT Central 上準備好(模仿我們的設置),IoT Central 知道設置并正在等待所有數(shù)據(jù)(PHT 值、電池或門狀態(tài))進入。
概括
在事先不了解 Azure Sphere 或 Azure IoT Central 的情況下,大約需要 5 天的時間來啟動所描述的節(jié)點,配置 Azure Sphere 以在網(wǎng)格和 Azure IoT Central 之間移動數(shù)據(jù)。
在合適的容器中,PIEP 硬件專為穩(wěn)健的現(xiàn)場部署和任意用戶交互而設計。PIEP 板很容易簡化為定制的、用戶指定的硬件,無需更改代碼。PIEP 加上 KoliadaES 提供了一種簡單的方法來穩(wěn)健地制作原型,并根據(jù)需要轉(zhuǎn)移到生產(chǎn)中,而無需大量的生產(chǎn)工程時間和成本。
我們有多個類似的網(wǎng)格部署,用于在家庭、工業(yè)和醫(yī)療保健環(huán)境中部署數(shù)據(jù)和控制。Azure Sphere 讓我們能夠簡單而安全地將這些網(wǎng)絡連接到互聯(lián)網(wǎng)。
鏈接
視覺工作室;
天藍色;
蔚藍球體;
自定義 EtherDATA 應用程序
這種分布式數(shù)據(jù)系統(tǒng)即插即用,易于用于各種應用。有關(guān)如何使用 KoliadaES 開始創(chuàng)建/自定義新應用程序的更多詳細信息,請通過http://www.koliada.com聯(lián)系我們
- 如何使用W5100S EVB Pico連接到Azure IoT Central
- 使用Azure MT3620和Azure IoT Central的風車監(jiān)視器
- 如何將手機連接到Azure IoT Central
- 分布式電源對配電系統(tǒng)的影響分析
- 基于Simulink的電子對抗分布式仿真系統(tǒng) 26次下載
- 高性能嵌入式堆棧Azure PTOS USBX概述 10次下載
- 基于DSP的航空發(fā)動機分布式總線設計方案 14次下載
- 基于分布式數(shù)據(jù)Cache的實時動態(tài)遷移機制 20次下載
- 一種分布式網(wǎng)絡掃描架構(gòu)和任務調(diào)度算法 19次下載
- 基于無線網(wǎng)格技術(shù)的遠程分布式交通信號控制系統(tǒng)架構(gòu) 10次下載
- 分布式電纜溫度監(jiān)控系統(tǒng) 74次下載
- 三層分布式計算網(wǎng)格任務調(diào)度系統(tǒng) 25次下載
- 基于Web Services的分布式異構(gòu)系統(tǒng)應用集成的研究
- 分布式制造資源集成系統(tǒng)軟件平臺研究
- 分布式對象調(diào)試中的事件模型
- Java手寫分布式鎖的實現(xiàn) 424次閱讀
- tldb提供分布式鎖使用方法 761次閱讀
- 深入理解redis分布式鎖 763次閱讀
- 鴻蒙分布式相機“踩坑”分享 1578次閱讀
- Redis分布式鎖真的安全嗎? 880次閱讀
- 利用NI VeriStand 2010實現(xiàn)分布式同步系統(tǒng)的設計 3154次閱讀
- 詳談分布式系統(tǒng)的定義及屬性 3689次閱讀
- 分布式光纖傳感器原理_分布式光纖傳感器的應用 8424次閱讀
- Redis 分布式鎖的正確實現(xiàn)方式 3483次閱讀
- 分布式的產(chǎn)生與定義 3970次閱讀
- 淺談分布式塊存儲的元數(shù)據(jù)服務設計 4871次閱讀
- 深度解讀分布式存儲技術(shù)之分布式剪枝系統(tǒng) 1773次閱讀
- 分布式電源應用若干問題解答 1329次閱讀
- 智能電網(wǎng)中的分布式發(fā)電技術(shù) 1597次閱讀
- 基于CAN總線的分布式網(wǎng)架健康狀態(tài)監(jiān)測系統(tǒng)的設計 963次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多