一
與Chirpstack服務器數據交互
準備:使用MQTTX軟件訂閱目標服務器,此處為自己搭建的chirpstack服務器,IP為192.168.0.84,用戶名和密碼均為admin,通過應用服務器訂閱TOPIC來接受設備服務器發布的信息。

設備信息位置如圖:

語法:
卡片的背景色需要調出布局工具欄來設置
// 設備服務器上傳的TOPIC
// display everything for the given APPLICATION_ID
application/APPLICATION_ID/#
// display only the uplink payloads for the given APPLICATION_ID
application/APPLICATION_ID/device/+/event/up
// 應用服務器下發TOPIC
application/APPLICATION_ID/device/DEV_EUI/command/down
注意:'#'和'+'為MQTT協議中的通配符
單級通配符(Single-level wildcard):用符號"+"表示。當一個主題中的某個級別使用"+"通配符時,它可以匹配一個層級的任意名稱。例如,"home/+"可以匹配"home/bedroom"、"home/livingroom"等主題,但不能匹配"home/bedroom/temperature"等超過一個層級的主題。
多級通配符(Multi-level wildcard):用符號"#"表示。當一個主題中的某個級別使用"#"通配符時,它可以匹配多個層級的任意名稱。"#"必須作為主題的最后一個級別,可以匹配當前級別以及所有更深層級的主題。例如,"home/#"可以匹配"home/bedroom"、"home/livingroom",以及"home/bedroom/temperature"等任意層級的主題。
每個卡片都可以嵌套插入圖片或其它模板。
設備推送信息:
//接收TOPIC:
//訂閱單個設備的數據上傳TOPIC
application/ded77c98-1249-44d1-9a14-c4b312f71d77/device/a1b117f518a3ba80/event/up
//訂閱當前app下的所有設備
application/ded77c98-1249-44d1-9a14-c4b312f71d77/#
/* 終端節點上傳數據的AT指令
1:需要確認幀 // 0不需要確認
2:最大重發次數2次
10:當前包的byte數量
xx:data */
AT+DTRX=1,2,10,3435363738
應用服務器接收到的信息如圖:

應用服務器下發信息:
//下發TOPIC:
application/ded77c98-1249-44d1-9a14-c4b312f71d77/device/a1b117f518a3ba80/command/down
//下發數據格式
{
"devEui": "a1b117f518a3ba80", #設備ID
"confirmed": true, #是否需要確認
"fPort": 10, #目標應用層端口
"data": "cnVub29i" #數據,注意:需要使用base64編碼格式 eg:cnVub29i == 72756E6F6F62(runoob)
}

//終端設備從接收緩沖區中讀取數據并清空緩沖區
AT+DRX?
設備接收到的信息如圖:

注意:MQTT通配符只能在訂閱時使用,無法在發送時使用。
工具網站
ASCII轉字符:https://www.asciim.cn/m/tools/convert_ascii_to_string.html
base64加解密:https://c.runoob.com/front-end/693/
二
與TTN服務器數據交互
之前的文章我們主要說明了如何在thethingsnetwork.org上面注冊網關、創建應用、創建設備等,thethingsnetwork.org(下稱TTN)只是一個網絡服務器(network server),不會保存應用數據,因此實際項目中還需要一個應用服務器(application server),thethingsnetwork.org提供了多種方式供應用平臺獲取數據以及管理設備。
主要分為3大類:
APIs:又分為數據API和應用管理API,數據API主要用MQTT方式接收和下發數據,應用管理API主要使用HTTP方式管理注冊設備。
Integrations(集成):ThingSpeak、AWS IOT等。
多數情況下只需要關注上報和下發數據,因此本文主要說明如何使用MQTT方式獲取數據和下發數據,官方說明:https://www.thethingsnetwork.org/docs/applications/mqtt/api.html
這里使用MQTT.fx這個客戶端來演示,在實際應用中可能使用其他高級語言MQTT客戶端的方式。
連接

主要是上面框圖中的四個參數,其中:
Broker Address:.thethings.network,其中是所選的地區。
這個參數也是我們注冊應用的時候選擇的Handler,就是下圖中右邊的地址:


Broker Port:1883(非加密方式)。
Client ID:隨便給一個。
User Name:應用ID,這個是注冊應用的時候自定義的,這里是ff08。

Password:應用訪問密鑰,base64格式,這個是系統生成的,當然也可以自己添加,這里使用系統生成的:

訂閱(Subscribe)節點上行數據
TTN提供了一個主題Topic:/devices//up,其中和都是注冊的時候自己定義的,進入相應的設備就可以看到,如下:


可以看到節點ID、上報的端口號、計數器、頻點、時間戳等,其中payload_raw字段就是我們上傳的數據,是以base64格式顯示的。
發布(Publish)下行數據
TTN提供了一個主題Topic:/devices//down,其中和都是注冊的時候自己定義的,進入相應的設備就可以看到。

數據是json格式,上面3個字段是必須的,payload_raw字段就是我們要下發的數據,是base64格式的。
“MTIzNDU2Nzg5”對應的明文是“123456789”。

在節點查看下發的應用數據:

節點收到的數據以hex格式打印出來,剛好對應字符串“123456789”。
-
服務器
+關注
關注
14文章
10253瀏覽量
91487 -
WAN
+關注
關注
1文章
159瀏覽量
19703 -
數據收發
+關注
關注
0文章
9瀏覽量
7906 -
LoRa
+關注
關注
355文章
1887瀏覽量
237999
發布評論請先 登錄
【服務器數據恢復】服務器raid5陣列raid模塊損壞的數據恢復案例
服務器數據恢復—一文讀懂服務器高頻故障排查+標準數據恢復流程
服務器數據恢復—供電不穩引發服務器EXT4分區掛載失敗的數據恢復案例
服務器遠程連接超時以及拒絕連接的真實緣由和解決辦法
服務器數據恢復—意外斷電!Linux服務器數據恢復大揭秘
libmodbus庫問題:TCP模式下客戶端超時斷開后無法再次重連怎么解決?
服務器數據恢復—RAIDZ多塊硬盤離線導致服務器崩潰的數據恢復案例
SSH 遠程連接內網 Linux 服務器
服務器數據恢復—服務器斷電導致raid模塊損壞的數據恢復案例
【教程】LoRaWAN節點模塊如何接入LoRaWAN網絡并實現通信?
與LoRaWAN服務器連接進行數據收發
評論