chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>The Things Network V2 Azure物聯(lián)網(wǎng)中心和物聯(lián)網(wǎng)中心網(wǎng)關(guān)

The Things Network V2 Azure物聯(lián)網(wǎng)中心和物聯(lián)網(wǎng)中心網(wǎng)關(guān)

2023-06-16 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

背景

在客戶放棄概念證明( PoC )項(xiàng)目,在我桌子下面的盒子。

在過去幾年中,我構(gòu)建了一系列Windows 10 IoT Core現(xiàn)場網(wǎng)關(guān)應(yīng)用程序,用于將LoRa設(shè)備連接到Azure IoT 中心、Azure IoT CentralAdafruit.IO 。這些運(yùn)行良好,但現(xiàn)在我需要一個(gè)基于Microsoft Azure 云的解決方案,將連接到物聯(lián)網(wǎng) (TTN)的LoRaWAN設(shè)備連接到在Microsoft Azure中運(yùn)行的應(yīng)用程序

我一直在為 .NET nanoFrameworkGHI Electronics TinyCLR設(shè)備開發(fā)庫的另一個(gè)項(xiàng)目,以啟用RAK811 LPWAN 模塊( PoC 的Wisduino外形)的LoRaWAN連接

在新西蘭有兩個(gè)全國性的網(wǎng)絡(luò)Spark IoT 、KotahiNet ),但我一直想探索 TTN 和The Things Industries的功能,它們看起來有足夠的診斷功能來滿足我的目的。

我假設(shè)如果您正在閱讀這個(gè)項(xiàng)目故事,那么您熟悉為 Microsoft Azure 開發(fā)應(yīng)用程序,尤其是 IoT 服務(wù)。TTN 應(yīng)用程序和設(shè)備的配置在其他幾個(gè)Hackster.IO項(xiàng)目中已經(jīng)詳細(xì)介紹過,這里不再贅述。

這個(gè)項(xiàng)目是我博客上一系列帖子的總結(jié),我在其中更詳細(xì)地介紹了解決方案的構(gòu)建。

在一開始的時(shí)候

我最初連接了RAK WisGate 開發(fā)者網(wǎng)關(guān)并配置了 RAK7200 Track Lite 設(shè)備。在 TTN 應(yīng)用程序設(shè)備數(shù)據(jù)選項(xiàng)卡中,我可以看到從設(shè)備接收到上行鏈路消息,并且大部分有效負(fù)載都被解碼,這是一個(gè)好的開始。

建立聯(lián)系

配置了我的 Arduino IDE,以便我可以訪問 Seeeduino、LoRaWAN 示例,然后編譯并將它們下載到我的設(shè)備。我使用本地網(wǎng)關(guān)測試了個(gè)性化激活 (ABP) 和空中激活 (OTAA)示例的修改版本,以確認(rèn)我的設(shè)備配置良好。在我記得我需要打開我的Seeeduino Grove I2C 溫度和濕度傳感器連接器電源之后,設(shè)備代碼第二次工作了。

反序列化 TTN 消息

我為我的一個(gè) TTN 應(yīng)用程序配置了TTN HTTP集成,因此它將上行鏈路消息發(fā)布到帶有 HTTP 觸發(fā)端點(diǎn)的 Azure 函數(shù)。

pYYBAGN28CKAL6AnAACHjv5xWA0856.png
TTN 應(yīng)用程序 HTTP 集成配置
?

我使用JSON2Csharp和從 TTN 網(wǎng)站下載的示例上行鏈路有效負(fù)載來生成一些C#的初始版本,以對(duì)上行鏈路消息進(jìn)行反序列化。

由于 JSON2CSharp 無法確定數(shù)字字段是整數(shù)還是無符號(hào)長整數(shù),因此生成的代碼存在一些問題。

TTN 文檔指出,在成功解碼上行鏈路消息時(shí)填充了 payload_fields 屬性。TTN 有一個(gè)內(nèi)置的Cayenne 低功耗有效負(fù)載 (LPP)消息解碼器,RAK7200 Wisnode 軌道燈部分支持該解碼器(還提供具有增強(qiáng)功能的定制解碼器/編碼器)。

我在我的Seeeduino LoRaWAN 設(shè)備上使用了第 3 方庫(來自 Electronic Cats 的 CayenneLPP 庫)來對(duì)包含溫度和濕度信息的有效載荷進(jìn)行編碼。

超越自己

解壓payload_fields 屬性讓我有些痛苦我嘗試了許多不同的方法,但都失敗了。經(jīng)過大量實(shí)驗(yàn)后,我發(fā)現(xiàn)使用C# 對(duì)象是最簡單的方法(盡管該字段的后處理更為復(fù)雜)。

public class PayloadV4
{
   public string app_id { get; set; }
   public string dev_id { get; set; }
   public string hardware_serial { get; set; }
   public int port { get; set; }
   public int counter { get; set; }
   public bool is_retry { get; set; }
   public string payload_raw { get; set; }
   //public JsonObject payload_fields { get; set; }
   //public JObject payload_fields { get; set; }
   //public JToken payload_fields { get; set; }
   //public JContainer payload_fields { get; set; }
   //public dynamic payload_fields { get; set; }
   public Object payload_fields { get; set; }
   public MetadataV4 metadata { get; set; }
   public string downlink_url { get; set; }
}

我還必須在我的 PoC 應(yīng)用程序中添加一些代碼來解壓縮具有嵌套字段的 RAK Wisnode 7200 Tracker 加速度計(jì)、陀螺儀和位置值。

然后,我使用Microsoft.Azure.Devices.Client庫連接到Azure IoT HubAzure IoT Central 使用 DPS-KeyGen 生成連接字符串)并上傳了我可以在Azure IoT explorer中看到的遙測消息

poYBAGN28CeAYJfzAABmLYgrfWI005.png
Azure IoT Explorer 顯示消息負(fù)載
?

使用 Azure 存儲(chǔ)隊(duì)列處理消息和失敗

對(duì)于我的HTTP 集成,我需要可靠地將上行鏈路消息轉(zhuǎn)發(fā)到Azure IoT 中心Azure IoT Central ,因此我使用Azure 存儲(chǔ)隊(duì)列在我的Azure Function HTTPTrigger端點(diǎn)和消息處理器之間提供彈性緩沖區(qū)。

我的解決方案需要強(qiáng)大且不會(huì)丟失任何消息,即使系統(tǒng)的某些部分由于故障或入站流量突然激增而無法使用。

用于接收物聯(lián)網(wǎng) (TTN) HTTP 集成 JSON 消息的代碼使用了 Azure 函數(shù) HTTPTrigger。(使用APIKey 保護(hù)),然后將它們放入Azure 存儲(chǔ)隊(duì)列以進(jìn)行處理。

這段代碼故意保持盡可能小和盡可能簡單,這樣就不會(huì)出錯(cuò)。經(jīng)過一些實(shí)驗(yàn),只用了不到兩打 C# 行就創(chuàng)建了一個(gè)安全端點(diǎn)來接收上行鏈路消息并將它們放入Azure 存儲(chǔ)隊(duì)列。

通過存儲(chǔ)來自 TTN 的原始上行鏈路事件 JSON,應(yīng)用程序可以在無法反序列化時(shí)恢復(fù)(消息格式已更改或生成類問題)當(dāng)隊(duì)列處理器無法處理上行鏈路事件消息時(shí)(引發(fā)異常)重試幾次后,它將最終進(jìn)入有毒消息隊(duì)列(以防故障是暫時(shí)的)。

上行鏈路消息隊(duì)列處理器使用Azure 函數(shù)隊(duì)列觸發(fā)器從隊(duì)列中提取消息,并在需要時(shí)預(yù)配設(shè)備,檢索 Azure IoT 中心/Azure IoT 中央連接字符串或使用緩存的 DeviceClient。

“自動(dòng)”供應(yīng)

對(duì)于開發(fā)和測試而言,能夠預(yù)配單個(gè)設(shè)備確實(shí)很有用,盡管對(duì)于Azure IoT Central來說這并不容易(尤其是在棄用 DPS-KeyGen 的情況下)。通過Azure IoT Hub設(shè)備連接字符串在門戶中可用,這很方便,但可擴(kuò)展性不是很好。

pYYBAGN28CmAVUDoAABseXZQrdg603.png
Azure IoT 中心設(shè)備連接配置
?

Azure IoT 中心與 Azure IoT Central集成,并且Azure IoT Central強(qiáng)制使用設(shè)備預(yù)配服務(wù) (DPS)。DPS 旨在支持管理 1000 臺(tái)設(shè)備,這些設(shè)備需要一些自定義應(yīng)用程序來進(jìn)行壓力和浸泡測試。

我的聯(lián)網(wǎng)HTTP 集成(TTN)旨在支持許多設(shè)備并與Azure IoT Central集成。DPS 支持使用可信平臺(tái)模塊 (TPM)進(jìn)行設(shè)備認(rèn)證但這種方法不適用于我的應(yīng)用程序。我的 TTN 應(yīng)用程序集成使用具有對(duì)稱密鑰證明的組注冊

poYBAGN28C-ANrOPAABQU22zAkE344.png
DPS 招生管理
?

Azure IoT 中心集成

盡管可以在Azure IoT 中心預(yù)配單個(gè)設(shè)備,Azure 設(shè)備預(yù)配服務(wù) (DPS)是首選方法。

poYBAGN28DKADtF5AABo_lIuyu8423.png
DPS 組注冊刀片
?

scopeID 和主要/次要注冊密鑰在Azure Key Vault中配置Azure QueueTrigger 函數(shù)可以安全地訪問它們。

pYYBAGN28DWAQSCdAABo3VQ0g_M511.png
?

對(duì)于更復(fù)雜的部署,可以使用基于 applicationID(或 applicationID + 端口號(hào))的不同 GroupEnrollment 密鑰來配置物聯(lián)網(wǎng) (TTN)設(shè)備。這方面的一個(gè)例子是卡車上的跟蹤設(shè)備報(bào)告位置數(shù)據(jù),其中一個(gè)端口號(hào)和另一個(gè)端口號(hào)的貨物溫度和濕度,因此可以將遙測事件路由到正確的應(yīng)用程序。

然后,在處理設(shè)備的第一條上行鏈路消息時(shí),它會(huì)在 DPS 和 Azure IoT Hub 中“自動(dòng)”創(chuàng)建。

pYYBAGN28DiAEu1cAAA9srgTDZY795.png
Azure DPS 設(shè)備配置
?

Azure IoT 中心集成

物聯(lián)網(wǎng) (TTN) HTTP 集成上行鏈路消息必須進(jìn)行配置,然后進(jìn)行后處理,以便 Azure IoT Central 顯示它們。

第一步是從 Administration\Device 連接復(fù)制 IDScope 和一個(gè)主/輔助密鑰,并將它們存儲(chǔ)在Azure Key Vault中。

poYBAGN28DyAARfhAABZTc-SBHU166.png
Azure IoT 中心設(shè)備配置
?

對(duì)于更復(fù)雜的部署,可以根據(jù)啟動(dòng)配置的第一個(gè)上行鏈路消息中的 applicationid(或 applicationID + 端口號(hào))使用不同的GroupEnrollment密鑰來配置物聯(lián)網(wǎng) (TTN)設(shè)備。

在處理來自 TTN 設(shè)備的第一條上行鏈路消息后不久,它將在“未關(guān)聯(lián)設(shè)備”選項(xiàng)卡中列出。

poYBAGN28D6Ab1yCAAA9sOJDKHw242.png
未關(guān)聯(lián)的設(shè)備刀片
?

然后可以將設(shè)備與Azure IoT Central Device Template關(guān)聯(lián)。

pYYBAGN28EGAD_6sAAA9xNW1dYA797.png
顯示最近關(guān)聯(lián)設(shè)備的未關(guān)聯(lián)設(shè)備刀片
?

設(shè)備模板提供上行消息有效載荷字段到設(shè)備屬性的映射。在此示例中,有效載荷字段已由TTN 應(yīng)用集成 Cayenne 低功耗協(xié)議 (LPP)解碼器生成。許多LoRaWAN設(shè)備使用 LPP 來最小化網(wǎng)絡(luò)負(fù)載的大小。

pYYBAGN28EOAcEajAAB3X_w_CF0721.png
Azure IoT Central 設(shè)備模板刀片
?

一旦設(shè)備與模板相關(guān)聯(lián),就可以配置用戶友好的設(shè)備名稱等。

poYBAGN28EqAE135AABWe8NhQ-o332.png
Azure IoT Central 設(shè)備屬性刀片
?

Azure IoT Central 具有映射功能,可用于顯示設(shè)備的位置。

poYBAGN28E6AUdDQAACFmyrNi_k681.png
Azure 設(shè)備信息
?

TTN LPP 解碼器生成的位置有效負(fù)載的格式與 Azure IoT Central 所需的格式不同。我添加了臨時(shí)代碼(“一種具有成本效益的加速部署修改”又名黑客)來格式化 TelemetryEvent 有效負(fù)載,以便顯示它。

if (token.First is JValue)
{
   // Temporary dirty hack for Azure IoT Central compatibility
   if (token.Parent is JObject possibleGpsProperty)
   {
      if (possibleGpsProperty.Path.StartsWith("GPS", StringComparison.OrdinalIgnoreCase))
      {
         if (string.Compare(property.Name, "Latitude", true) == 0)
         {
            jobject.Add("lat", property.Value);
         }
         if (string.Compare(property.Name, "Longitude", true) == 0)
         {
            jobject.Add("lon", property.Value);
         }
         if (string.Compare(property.Name, "Altitude", true) == 0)
         {
            jobject.Add("alt", property.Value);
         }
      }
   }
   jobject.Add(property.Name, property.Value);
}

在配置設(shè)備模板、將一些設(shè)備與模板關(guān)聯(lián)并修改每個(gè)設(shè)備的屬性后,我可以創(chuàng)建一個(gè)儀表板來查看我的Seeeduino LoRaWAN 設(shè)備返回的溫度和濕度信息。

pYYBAGN28FCAffK7AABRbn48Img646.png
Azure IoT Central 儀表板
?

保守秘密

應(yīng)用程序集成配置包含敏感信息,例如設(shè)備預(yù)配服務(wù) (DPS) 組注冊對(duì)稱密鑰Azure IoT 中心連接字符串。

Azure Key Vault旨在保護(hù)連接字符串等敏感信息,因此我在資源組中添加了一個(gè)。

pYYBAGN28FKAJaD9AACfrkSFJfo645.png
Azure Key Vault 概述和基本指標(biāo)
?

我編寫了一個(gè)包裝器,它根據(jù)上行鏈路消息有效負(fù)載中的物聯(lián)網(wǎng) (TTN)應(yīng)用程序標(biāo)識(shí)符和端口信息解析配置設(shè)置。resolve 方法首先查找 applicationId 和 port 的配置(由 – 分隔),然后是 applicationId,最后返回到默認(rèn)值。

此功能用于 AzureIoTHub 連接字符串、DPS IDScopes、DPS 注冊組對(duì)稱密鑰,也用于格式化緩存密鑰。

Azure 函數(shù)配置設(shè)置(如 Azure 存儲(chǔ)連接字符串)的被替換為對(duì) Azure Key Vault 中機(jī)密的引用。

pYYBAGN28FeARrkgAADBtkBnTp4128.png
Azure Function 配置值替換
?

在 Azure Key Vault“訪問策略”中,我配置了“應(yīng)用程序訪問策略”,因此我的 Azure TTNAzureIoTHubMessageV2Processor 函數(shù)標(biāo)識(shí)可以檢索機(jī)密。

去大或回家

在我最初的實(shí)現(xiàn)中,我使用ConcurrentDictionary來存儲(chǔ)Azure IoT Hub連接,以減少對(duì)設(shè)備預(yù)配服務(wù) (DPS) 的調(diào)用次數(shù)。經(jīng)過一些測試后,我將其替換為 a. Net ObjectCache位于System.Runtime.Caching命名空間中。

pYYBAGN28FmAXVrEAACEOxI3fcg748.png
?

我使用緩存來存儲(chǔ)Azure IoT Hub連接以減少對(duì)設(shè)備預(yù)配服務(wù) (DPS)的調(diào)用次數(shù),但連接數(shù)仍然太高。

poYBAGN28F6AUjPMAABbeDu36KY521.png
沒有池的連接數(shù)
?

因此,經(jīng)過一番研究,我決定啟用高級(jí)消息隊(duì)列協(xié)議(AMQP)連接池。

return DeviceClient.Create(result.AssignedHub,
   authentication,
   new ITransportSettings[]
   {
      new AmqpTransportSettings(TransportType.Amqp_Tcp_Only)
      {
         PrefetchCount = 0,
         AmqpConnectionPoolSettings = new AmqpConnectionPoolSettings()
         {
            Pooling = true,
         }
      }
   }
);

在此之后,連接數(shù)顯著減少

poYBAGN28G-ATmCrAABwzpUD_KE323.png
使用池的連接數(shù)
?

“市場結(jié)構(gòu)”圖

pYYBAGN28HKAHTp3AAEZCeF_t7g602.png
漂亮的 Visio 圖表中的所需架構(gòu)
?

哎呀我把自己畫到一個(gè)角落里

在對(duì)上行鏈路消息的處理進(jìn)行擴(kuò)展和浸泡測試后,我意識(shí)到我所做的一些設(shè)計(jì)和實(shí)現(xiàn)選擇意味著處理下行鏈路消息并不容易。

如果您的應(yīng)用程序只需要接收來自 LoRaWAN 設(shè)備的消息,此解決方案將是理想的。

為了支持下行消息,我很可能必須轉(zhuǎn)換到MQTT 數(shù)據(jù) API并刪除一些高級(jí)配置選項(xiàng)。

這將需要一段時(shí)間,所以如果您有興趣,請(qǐng)關(guān)注我的博客,我將在其中發(fā)布我的進(jìn)展。


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

評(píng)論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)