色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用MQTT集成來監控控制基于LoRa E5的物聯網設備

使用MQTT集成來監控控制基于LoRa E5的物聯網設備

2022-10-31 | zip | 7.82 MB | 次下載 | 2積分

資料介紹

描述

該項目的目標是使用 LoRaWAN 上的物聯網 MQTT 集成來監控和控制基于 LoRa-E5 的物聯網設備。

LoRa-E5 模塊在其 LoRa 調制解調器旁邊有一個嵌入式 MCU,但是我對 ESP32 最滿意,所以我將 LoRa-E5 用作帶有 ESP32 開發模塊的 LoRa 調制解調器。在幾款 LoRa-E5 板卡中,當您只需要 LoRa-E5 作為調制解調器時,推薦使用Grove LoRa E5模塊,因此在本項目中使用了相同的模塊。

poYBAGNY3FqAHQZLABUVz-qaDiA295.png
洛拉 E5 <> ESP32
?

最初,我只是想在兩個 LoRa-E5 模塊之間交換消息,而不需要 LoRaWAN,因此我使用了 TEST 模式并使其成功運行。如果您只想在 LoRa 模塊之間交換消息而無需設置網關(這稱為 TEST 模式),請查看此項目!

繼續實現該項目的目標,我將其分為以下里程碑

  • 設置物聯網網關 (LoRaWAN)
  • 在物聯網上設置 LoRa-E5 設備
  • 在 ESP32 上上傳固件以與 TTN 通信
  • MQTT 集成
  • 通過 Python 程序監視和控制您的 LoRa 設備

?

設置物聯網網關

為了將數據包從我的 ESP32 發送到物聯網,我需要一個支持與我的 LoRa-E5 模塊相同頻率的網關。這是我使用 Raspberry Pi + RAK2245 Pi HAT 的地方。

如果您有任何其他與您的 LoRa-E5 模塊頻率范圍相同的 LoRaWAN 網關,并且能夠通過它連接到物聯網,那就太好了!

要設置我的 Pi+RAK2245 LoRaWAN 網關,我只需要按照RAK Wireless的官方指南進行操作即可。

設置完成后,您將看到網關頁面如下

poYBAGNY3GGAc2UIAAJ9XZvkqNI239.png
?

在物聯網上設置 LoRa-E5 設備

在物聯網上配置 LoRa-E5 設備時,需要設備中的以下信息

  • 開發EUI
  • AppEUI

所有的 LoRa-E5 模塊都已經有了這些信息。我們可以選擇使用已配置的內容或生成新的 EUI 并使用它配置 LoRa-E5 模塊。我選擇使用預先配置在模塊上的 EUI。

要獲取 DevEUI 和 AppEUI,請在 ESP32 開發模塊上上傳串行直通固件,其連接如示意圖所示請注意,LoRa-E5 模塊在 9600 波特上工作,因此請相應地配置您的串行直通固件。

刷新 ESP32 開發模塊后,打開串行監視器/CoolTerm 并發送以下命令

AT+ID

這將返回類似于以下內容的內容

+ID: DevAddr, 25:1B:2E:11
+ID: DevEui, 2C:F7:F1:21:42:60:90:CE
+ID: AppEui, 80:00:00:00:00:00:00:06
poYBAGNY3GSAXHOkAADJyrR0TrA076.png
?

請注意此信息可能在記事本中的某處。我們將在接下來的步驟中需要它。

現在讓我們配置The Things Network (TTN),以便我們可以通過以下步驟在 ESP32+LoRa-E5 和 TTN 之間發送和接收數據:

  • Things Stack 控制臺上,選擇您選擇的區域并轉到 Applications 并創建一個新應用程序
pYYBAGNY3GiAetCJAAGiuwbdXGk141.png
?
  • 現在您已經創建了一個 Things Stack 應用程序。進入應用程序控制臺后(如上所示),單擊+ 添加終端設備
  • 我無法在 LoRaWAN 設備存儲庫中找到 LoRa-E5,因此我在手動部分中手動提供了信息
  • 選擇 LoRa-E5 模塊的頻率計劃、LoRaWAN 版本(取決于您的網關)、區域參數版本。我在這里找到了這個信息
  • 現在,輸入您在前面步驟中記下的 DevEUI 和 AppEUI
  • 生成一個新的 AppKey 并在某處記下它。
poYBAGNY3GuADLuZAAFAqBFPUtg799.png
?

您的 Things Stack 控制臺配置已基本完成,可以在 ESP32+LoRa-E5 設備之間交換消息

在 ESP32 上上傳固件并與 TTN 通信

此固件在配置了 AppKey(如上所述)并上傳到 ESP32 后,會連接到附近的 LoRaWAN (TTN) 網關,并每 5 秒發送一次以下 JSON 對象

{
    "state":  {
                "temp": 27.4,
                "humi": 89
              }
}

目前,固件會向 TTN 發送恒定的溫度濕度值,但是您可以修改固件以滿足您集成任何傳感器的要求,并改為發送這些值。

確保替換固件代碼第 101 行中先前步驟中記下的 AppKey。成功上傳代碼后,我在串行端口中看到以下內容

poYBAGNY3G6AQ_ftAAGC8V5Zce4726.png
?

JSON 被轉換為字節數組(即7B 22 73 74... )并發送到 TTN。您可以通過選擇終端設備的實時數據選項卡在 TTN 控制臺上查看此數據

pYYBAGNY3HOAHUhEAAN_IWBx1RU154.png
?

如果您想以 JSON 格式查看字節數組中的數據,請轉到 Payload formatters 選項卡并選擇 Formatter type as Javascript 并將 formatter 參數更改為以下

function decodeUplink(input) {
  return {
    data: JSON.parse(String.fromCharCode(...input.bytes)),
    warnings: [],
    errors: []
  };
}
pYYBAGNY3HiAN5_PAACNi3cp7TE051.png
?

保存

返回實時數據選項卡,選擇“轉發上行鏈路數據消息”類型的條目,您現在應該能夠以 JSON 格式查看發送的 LoRa 數據

pYYBAGNY3HyAWmCSAASM5rf47l4085.png
?

就像固件允許您將數據從 ESP32 發送到 TTN 一樣,它也允許您從 TTN 接收 ESP32 中的數據。

要將數據從 TTN 發送到 ESP32,請轉到消息選項卡并選擇下行鏈路選項卡。我將以下 JSON 從 TTN 發送到 ESP32

{
    "name": "Sufian",
    "id": "sufiankaki"
}

TTN 控制臺具有以 JSON 和字節數組形式發送數據的選項。要發送 JSON 數據,我們需要像之前所做的那樣修改 Payload 格式化程序(用于下行鏈路)。將現有腳本更改為

function encodeDownlink(input) {
  return {
    bytes: JSON.stringify(input),
    fPort: 1,
    warnings: [],
    errors: []
  };
}

function decodeDownlink(input) {
  return {
    data: {
      bytes: input.bytes
    },
    warnings: [],
    errors: []
  }
}
pYYBAGNY3H-ABareAAIa71IMHa0638.png
?

完成后,保存并轉到消息選項卡并選擇下行鏈路。選擇 JSON 并在 Payload 文本框中輸入數據并點擊 Schedule Downlink

poYBAGNY3IKASYT3AADObF7q5Uw417.png
?

在您的 Coolterm/Serial Monitor 上,您應該會看到現在收到一條消息

pYYBAGNY3I2AQ25KAABVN5SUb2U239.png
?

現在您知道如何從 LoRa 模塊向 TTN 發送(上行鏈路)和接收(下行鏈路)數據,修改固件并相應地開發您的項目

MQTT 集成

雖然從 TTN 監視和控制 LoRa 設備很簡單,但我更喜歡從我的定制應用程序中控制它。一旦這樣做的方法是使用 TTN 提供的 MQTT 集成。這允許使用 MQTT 客戶端與 LoRa 設備進行交互

獲取 MQTT 客戶端的最簡單方法之一是使用安裝在計算機中的Mosquitto (CLI)。或者,您可以嘗試任何MQTT Explorer與 GUI 交互。

要為 LoRa 終端設備啟用 MQTT 集成,請在 TTN 終端設備控制臺的菜單(左側)上選擇集成選項,然后選擇 MQTT

您將看到主機名、端口號和用戶名。單擊生成新的 API 密鑰,以便您也擁有密碼

poYBAGNY3JSAQoqbAADUde1ZDzo337.png
?

除了您在 MQTT 集成頁面上看到的 4 個字段(主機名、端口、用戶名和密碼)之外,您還需要訂閱或發布到 TTN 的主題,具體取決于您是要從 LoRa 設備接收消息還是發送分別向 LoRa 設備發送消息。

要接收從 LoRa 設備發送到 TTN 的消息,您需要訂閱的主題是v3//devices//up。 替換為各自的值。因此,您從 LoRa 設備接收消息的 CLI 命令將是

mosquitto_sub -h eu1.cloud.thethings.network -p 1883 -u test-app-868@ttn -P NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJTFUUY.BZSNJY6HJ2KRF36XOPLXZF45AGFZSR2AYTT4L3HF45BBSGH4RG6Q -t 'v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up'

訂閱后,您將收到如下消息(JSON)

pYYBAGNY3JiAGunxAARjnGEtKL8006.png
?

這包含與從 LoRa 設備到 TTN 的上行鏈路消息有關的終端設備、網關、元數據等的所有信息。

要從 MQTT 客戶端向 LoRa 設備發送數據,您需要發布消息的主題是v3//devices//down/push。此外,消息需要采用以下格式

{
    "downlinks":
        [
        {  "f_port": 1, 
            "frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9", 
            "priority":"NORMAL"
        }
        ]
}

您需要發送的消息應該是 base64 編碼的。假設您要發送以下消息

{
    "name": "Sufian",
    "id": "sufiankaki"
}

你首先需要對它進行base64編碼。我使用這個在線工具來轉換我的信息。對于上面的消息,我得到了ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9我的 base64 編碼字符串

因此我的 MQTT 發布消息看起來像

mosquitto_pub -h eu1.cloud.thethings.network -p 1883 -u test-app-868@ttn -P NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJTFUUY.BZSNJY6HJ2KRF36XOPLXZF45AGFZSR2AYTT4L3HF45BBSGH4RG6Q -t 'v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/down/push' -m "{"downlinks":[{"f_port": 1, "frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9", "priority":"NORMAL"}]}"

確保您轉義了消息中的雙引號。

有關 MQTT 集成的更多信息,請查看官方文檔我上面的解釋是針對 Eclipse Mosquitto 的。

通過 Python 程序監視和控制您的 LoRa 設備

使用 MQTT 集成,LoRa 設備也可以通過 python 程序進行監視和控制。我將使用 Eclipse Paho 庫從我的 Python 程序向 LoRa 設備發送和接收消息

從 LoRa 設備接收和打印消息的程序

import paho.mqtt.client as mqtt
import json

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up")

def on_message(client, userdata, msg):
    messg = json.loads(msg.payload)
    print(messg['uplink_message']['decoded_payload'])

client = mqtt.Client()
client.username_pw_set("test-app-868@ttn", "NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJT..")
client.on_connect = on_connect
client.on_message = on_message

client.connect("eu1.cloud.thethings.network", 1883, 60)
client.loop_forever()

?

向 LoRa 設備發送消息的程序

import paho.mqtt.client as mqtt
import json
import base64
from time import sleep

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up")

def on_message(client, userdata, msg):
    messg = json.loads(msg.payload)
    print('Received: ' + str(messg['uplink_message']['decoded_payload']))

client = mqtt.Client()
client.username_pw_set("test-app-868@ttn", "NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJT...")
client.on_connect = on_connect
client.on_message = on_message

client.connect("eu1.cloud.thethings.network", 1883, 60)
client.loop_start()

try:
    while True:
        topic = "v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/down/push"
        js = {'name': 'Sufian', 'id': 'sufiankaki'}
        str_js = json.dumps(js)

        x = {}
        x["f_port"] = 1
        x["frm_payload"] = base64.b64encode(str.encode(str_js)).decode()
        x["priority"] = "NORMAL"
        
        message = {}
        message["downlinks"] = []
        message["downlinks"].append(x)

        client.publish(topic, json.dumps(message))
        print('Published: ' + json.dumps(message))
        sleep(5)
except KeyboardInterrupt:
    client.loop_stop()
    print("Stopped the client!")

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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  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開發指南
  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開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  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次下載  |  免費
主站蜘蛛池模板: 国产东北男同志videos网站| 国内精品久久久久久久试看| 久久偷拍vs国产在线播放| 亚洲日韩视频免费观看| 美女扒开腿让男人桶个爽| caoporn免费视频在线| 四虎免费影院| 精品福利一区| yin荡体育课羞耻play双性| 無码一区中文字幕少妇熟女网站| 精品国产乱码久久久久久上海公司 | 成年黄网站免费大全毛片| 午夜特级毛片| 曼谷av女郎| 国产精品俺来也在线观看| 一一本之道高清手机在线观看 | 欧美最猛12teevideos| 国产精品久免费的黄网站| 一色狗影院| 日本乱hd高清videos| 精品欧美18videosex欧美| xxx军人3p大gay| 亚洲精品在线免费| 漂亮的av女演员| 含羞草影院AE在线观看| a免费视频| 曰本xxⅹ孕妇性xxx| 天天躁日日躁狠狠躁中文字幕老牛 | beeg日本老师按摩| 亚洲国产欧美国产综合在线 | 日韩精品真人荷官无码| 久久偷拍国2017的| 国产精品久久久久久久久LI无码 | 暖暖视频免费观看社区| 国语自产一区第二页| xxx日本黄色| 在线亚洲97se| 亚洲h视频在线观看| 日日夜夜狠狠干| 棉签和冰块怎么弄出牛奶视频 | 久久人妻AV一区二区软件|