簡體   English   中英

對於牆上供電的物聯網設備,讀取數據和發送命令的最佳方法是什么

[英]For wall powered IoT device what are the best ways to read data and send commands

我有一個互聯網連接的物聯網設備(讓我們說先進的互聯網連接天氣傳感器,它可以發送傳感器數據並執行一些高級操作,如旋轉,開啟,打開閥門/和其他一些操作)。

編輯:

該設備是牆上電源(電插座),並具有 移動互聯網連接 標准有線以太網連接(只需插入Cat5電纜)

我需要能夠獲得設備的狀態(大約500字節的數據),並希望能夠發送簡單的命令,

  • rotate-180-deg
  • turn-lights-on
  • turn-lights-off
  • open-valve-1
  • switch-sensor-X-on
  • switch-sensor-X-off

目前,我的設備每隔(2分鍾)向我的中央服務器發送一個HTTP請求及其狀態。 這非常適合獲取設備傳感器的讀數。 但是,當我想向設備發送命令時,這種方法會變得更成問題。 例如。 如果我想發送命令rotate-180-degrees ,我的中央服務器必須等到設備聯系它並在HTTP請求的響應中 - 我可以輸入一些命令,所以當設備收到響應時,它會實際上執行命令。

然而,這種方法有缺陷:

  • 這不是實時(在我有機會發送命令之前我必須等待2-3分鍾)
  • 我不知道設備是否收到命令(例如網絡錯誤)
  • 我不知道設備是否已經確認或執行了命令(狀態均未)

這個問題的解決方案可能是什么?

更新:正如@mhopeng建議的那樣,最靈活的解決方案似乎是將設備轉變為“服務器”,以便它可以接受傳入的連接。 但是,由於安全性,防火牆和復雜性的考慮,我們不能這樣做。 設備也需要易於安裝:第三方維護的東西應該能夠簡單地將設備插入牆壁和以太網,它應該工作。 (無需配置端口轉發,防火牆等)。

僅供參考我們還在此設備中使用PIC微控制器。

本文詳細介紹了從服務器向設備發送數據的三個選項。

根據您的描述,聽起來您正在使用短輪詢

解決此通信問題的最基本方法稱為短輪詢 - 一種方法,客戶端會定期詢問服務器是否有可用的新數據。 這是最簡單的代碼解決方案,但如果您需要實時通知設備,則不建議這樣做。

然后,文章繼續描述選項2, 長輪詢

下一個選項是長輪詢。 在這種情況下,客戶端執行請求,服務器將不會響應,直到它有要發送的內容。 這實現了從雲到設備的實時推送通知,但是只要需要監聽服務器,它就要求設備保持連接打開狀態。 使用這種技術會消耗更多能量,並且還可能導致連接丟失。 考慮設備遠程控制卡車門的情況。 如果已經進行了長輪詢請求,然后卡車進入隧道,則移動連接將丟失。 然后,設備將需要額外的邏輯來終止掛起的連接並打開一個新連接。

最后,它使用不同的協議詳細說明選項3:

第三種選擇是使用較新的協議,例如CoAp或MQTT,它們旨在提供低延遲,小數據包大小和弱網絡上的穩定通信。 這些較新的協議提供雙向通信通道,進而支持推送通知。 這使得它們成為需要能夠實時控制連接設備的物聯網項目的良好選擇。 唯一的缺點可能是缺少固件庫和嵌入式設備的示例,這對於基於HTTP的連接而言要大得多。 選擇正確的協議取決於您的應用程序以及您需要與設備通信的頻率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM