Last modified by Xiaoling on 2023/04/20 18:14
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -12,7 +12,7 @@ 12 12 13 13 ((( 14 14 15 -The basic of this feature is the decoding of **LoRaWAN ABP End Node**. Requirements:15 +The basic of this feature is the decoding of LoRaWAN ABP End Node. Requirements: 16 16 ))) 17 17 18 18 1. LoRaWAN End Node in ABP mode. Make sure your end node works in this mode. End node most are default set to OTAA mode ... ... @@ -23,20 +23,16 @@ 23 23 = 2. How it works = 24 24 25 25 26 - **Video Instruction**: [[https:~~/~~/youtu.be/ZBjXwmp7rwM>>url:https://youtu.be/ZBjXwmp7rwM]]26 +Video Instruction: [[https:~~/~~/youtu.be/ZBjXwmp7rwM>>url:https://youtu.be/ZBjXwmp7rwM]] 27 27 28 28 Assume we have the LoRaWAN tracker LGT92 which works in ABP mode and US915 band. It has below keys: 29 29 30 -(% class="box infomessage" %) 31 -((( 32 -AT+NWKSKEY=72 32 63 95 dd 8f e2 b2 13 66 e4 35 93 8f 55 df 30 +{{{AT+NWKSKEY=72 32 63 95 dd 8f e2 b2 13 66 e4 35 93 8f 55 df 33 33 AT+APPSKEY=b3 17 f8 14 7a 43 27 8a 6a 31 c4 47 3d 55 5d 33 34 34 AT+DADDR=2602111D 35 - )))33 +}}} 36 36 37 -((( 38 38 and we have the LG308 works and US915 band and support ABP decryption. User can input these keys in LG308 so the LG308 can communicate with LGT92. 39 -))) 40 40 41 41 We need to input above keys in LG308 and enable ABP decryption. 42 42 ... ... @@ -49,9 +49,7 @@ 49 49 50 50 Now when this End Node (Dev Addr=2602111D) send a uplink packet. When this packet arrive LG308, LG308 will decode it and put the decode data on the file /var/iot/channels/2602111D . So we have this data for further process with other applications in LG308. 51 51 52 -((( 53 53 We can see the log of LG308 to know this packet arrive 54 -))) 55 55 56 56 [[image:https://wiki.dragino.com/images/thumb/1/16/ABP_DECODE_2.png/600px-ABP_DECODE_2.png||height="205" width="600"]] 57 57 ... ... @@ -60,65 +60,54 @@ 60 60 61 61 The data of End Node is stored in the file /var/iot/channels/2602111D. We can use hexdump command to check it. 62 62 63 -(% class="box" %) 64 -((( 65 -root@dragino-1d25dc:~~# hexdump /var/iot/channels/2602111D 66 -0000000 (% class="mark" %)**4646 4646 4646 3946 3030 3030 3030 3546**(%%) ~-~-> Got RSSI and SNR 67 -0000010 (% class="mark" %)**cc0c 0b63 0266 017f ff7f ff00 **(%%) ~-~-> Payload 57 +{{{root@dragino-1d25dc:~# hexdump /var/iot/channels/2602111D 58 +0000000 4646 4646 4646 3946 3030 3030 3030 3546 --> Got RSSI and SNR 59 +0000010 cc0c 0b63 0266 017f ff7f ff00 --> Payload 68 68 000001c 69 - )))61 +}}} 70 70 71 71 * RSSI: 4646 4646 4646 3946 = 0xFFFF FF9F : So RSSI = (0xFFFF FF9F - 0x100000000) = -97 72 72 * SNR: 3030 3030 3030 3546 = 0x0000 005F = 95, need to divide 10 so SNR is 9.5 73 73 * Payload: 0xcc0c 0b63 0266 017f ff7f ff00 74 74 75 -(% class="box" %) 76 -((( 77 -(% class="mark" %)**Notice 1**(%%): The data file stored in LG308 for the end node is bin file. If the end node sends ASCII string to gateway, the output will as below: 78 -in LGT92, use **AT+SEND=12**:hello world to send ASCII string 79 -root@dragino-1d25dc:~~# hexdump /var/iot/channels/2602111D 67 + 68 +{{{Notice 1: The data file stored in LG308 for the end node is bin file. If the end node sends ASCII string to gateway, the output will as below: 69 +in LGT92, use AT+SEND=12:hello world to send ASCII string 70 +root@dragino-1d25dc:~# hexdump /var/iot/channels/2602111D 80 80 0000000 4646 4646 4646 3946 3030 3030 3030 3546 81 -0000010 6865 6c6c 6f20 776f 726c 6400 ~-~-> Got ASCII code "hello world"72 +0000010 6865 6c6c 6f20 776f 726c 6400 --> Got ASCII code "hello world" 82 82 000001c 83 - )))74 +}}} 84 84 85 -(% class="box" %) 86 -((( 87 -(% class="mark" %)**Notice 2**(%%): The upstream payload length should match the LoRaWAN length requirement (max length depends on Frequency and DR), otherwise the gateway can't decode the payload. 88 -))) 76 +{{{Notice 2: The upstream payload length should match the LoRaWAN length requirement (max length depends on Frequency and DR), otherwise the gateway can't decode the payload. 77 +}}} 89 89 90 90 === 2.2.1 Decode Method === 91 91 92 -The decode methods: **ASCII String, Decode_LHT65**doesn't affect how the sensor data is stored, they are to define how should the sensor data to be sent.81 +The decode methods: ASCII String, Decode_LHT65 doesn't affect how the sensor data is stored, they are to define how should the sensor data to be sent. 93 93 94 94 For example we have a LHT65 , works in ABP mode and gateway successful get the data, which are: 95 95 96 -(% class="box" %) 97 -((( 98 -root@dragino-1baf44:~~# hexdump /var/iot/channels/01826108 85 +{{{root@dragino-1baf44:~# hexdump /var/iot/channels/01826108 99 99 0000000 4646 4646 4646 4537 3030 3030 3030 3438 100 -0000010 ccd1 7fff 7fff 017f ff7f ff00 87 +0000010 ccd1 7fff 7fff 017f ff7f ff00 101 101 000001c 102 - )))89 +}}} 103 103 104 104 If we choose ASCII decoder, the MQTT process will send out with mqtt-data: 105 105 106 -(% class="box" %) 107 -((( 108 -Sun Sep 27 04:33:16 2020 user.notice root: [IoT.MQTT]:pub_topic[-t]: dragino-1baf44/01826108/data 93 +{{{Sun Sep 27 04:33:16 2020 user.notice root: [IoT.MQTT]:pub_topic[-t]: dragino-1baf44/01826108/data 109 109 Sun Sep 27 04:33:16 2020 user.notice root: [IoT.MQTT]:decoder: ASCII 110 110 Sun Sep 27 04:33:16 2020 user.notice root: [IoT.MQTT]:mqtt_data[-m]: ffffffe700000048ccd17fff7fff017fff7fff00 111 - )))96 +}}} 112 112 113 113 If we choose Decode_LHT65, the MQTT process will send out with mqtt-data 114 114 115 -(% class="box" %) 116 -((( 117 -Sun Sep 27 04:36:45 2020 user.notice root: [IoT.MQTT]:pub_topic[-t]: dragino-1baf44/01826108/data 100 +{{{Sun Sep 27 04:36:45 2020 user.notice root: [IoT.MQTT]:pub_topic[-t]: dragino-1baf44/01826108/data 118 118 Sun Sep 27 04:36:45 2020 user.notice root: [IoT.MQTT]:decoder: Dragino_LHT65 119 119 Sun Sep 27 04:36:45 2020 user.notice root: [IoT.MQTT]:mqtt_data[-m]: {"Hum_SHT":32.7,"BatV":3.281,"TempC_DS":32.9, 120 120 "EXT":"Temperature Sensor","RSSI":-24,"TempC_SHT":85.0,"SNR":8.2,"ext_sensor":0} 121 - )))104 +}}} 122 122 123 123 Above scripts are store in /etc/lora/decoder/. User can put their scripts here and select it in the UI. 124 124