Changes for page Notes for ChirpStack
Last modified by Edwin Chen on 2025/01/30 09:53
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -6,9 +6,7 @@ 6 6 7 7 The ChirpStack open-source LoRaWAN Network Server stack provides open-source components for LoRaWAN networks And the Chirpstack supports the users in building a private LoRaWAN Server. For more info please refer to this [[link>>url:https://www.chirpstack.io/]] 8 8 9 -((( 10 10 The dragino gateway can connect the ChirpStack server via Semtech UDP or Semtech Basic Station. 11 -))) 12 12 13 13 **Prerequisite** 14 14 ... ... @@ -22,12 +22,10 @@ 22 22 23 23 (% class="box" %) 24 24 ((( 25 -((( 26 26 Semtech UDP : **All Model** 27 27 Basic Station : , , 28 28 **Note** : the firmware needs > if use the Bais station 29 29 ))) 30 -))) 31 31 32 32 = 2. Semtech UDP = 33 33 ... ... @@ -61,7 +61,7 @@ 61 61 62 62 In Step 3. Create Service-profiles, the above parameters can be set. If necessary, you can set them by yourself. This is only an example. 63 63 64 - (% style="color:red" %)**Note : Before add the gateway, the user needs to complete the preceding three steps.**60 +Note : Before add the gateway, the user needs to complete the preceding three steps. 65 65 66 66 If the user has completed the preceding steps, proceed to the next step. 67 67 ... ... @@ -69,9 +69,7 @@ 69 69 70 70 The example gateway id is: a840411e96744150 71 71 72 -((( 73 -(% style="color:red" %)**Note : The Gateway EUI and server addresses must match the ChirpStack configuration.** 74 -))) 68 +Note : The Gateway EUI and server addresses must match the ChirpStack configuration. 75 75 76 76 [[image:https://wiki.dragino.com/images/thumb/c/c6/Add_the_gateway.png/600px-Add_the_gateway.png||height="363" width="600"]] 77 77 ... ... @@ -113,51 +113,37 @@ 113 113 114 114 User can use MQTT to send downlink payload to ChirpStack to perform downstream to LoRaWAN End 115 115 116 -((( 117 117 Below is examples: 118 -))) 119 119 120 -(% class="box" %) 121 -((( 122 -Connect to your server via MQTT: 123 -MQTT Client ID: Any 124 -Protocol:mqtt/tcp Server IP:loraserver_ip:1883 112 +{{{Connect to your server via MQTT: 113 +MQTT Client ID: Any 114 +Protocol:mqtt/tcp Server IP:loraserver_ip:1883 125 125 User name: User name Password: password 126 - )))116 +}}} 127 127 128 128 [[image:https://wiki.dragino.com/images/thumb/0/06/ChirpStack_Down_1.png/600px-ChirpStack_Down_1.png||height="578" width="600"]] 129 129 130 -((( 131 131 MQTT Connect to ChirpStack 132 -))) 133 133 134 -((( 135 135 After connect 136 -))) 137 137 138 -(% class="box" %) 139 -((( 140 -Subscribe : Format:application/ID/device/ Device EUI/rx 124 +{{{Subscribe : Format:application/ID/device/ Device EUI/rx 141 141 Example: application/7/device/00aedb3da649cb23/rx 142 -))) 143 143 144 -(% class="box" %) 145 -((( 146 -Publish: 127 +Publish: 147 147 Format: Top: application/ID/device/ Device EUI/tx 148 148 Payload: {"confirmed":true or false,"fPort":XX,"data":"xxxx"} 149 149 Example: Top: application/7/device/00aedb3da649cb23/tx 150 150 Payload: {"confirmed":true,"fPort":2,"data":"AwEB"} 151 - )))132 +}}} 152 152 153 153 [[image:https://wiki.dragino.com/images/thumb/c/c8/ChirpStack_Down_2.png/600px-ChirpStack_Down_2.png||height="342" width="600"]] 154 154 155 155 MQTT Connect to ChirpStack 156 156 157 -((( 158 -(% style="color:red" %)Note: Chirpstack use base64 to downlink, so need to convert the downlink payload from HEX to base64 [[https:~~/~~/base64.us/>>url:https://base64.us/]] 159 -))) 160 160 139 +Note: Chirpstack use base64 to downlink, so need to convert the downlink payload from HEX to base64 [[https:~~/~~/base64.us/>>url:https://base64.us/]] 140 + 161 161 [[image:https://wiki.dragino.com/images/thumb/f/f8/ChirpStack_Down_3.png/600px-ChirpStack_Down_3.png||height="309" width="600"]] 162 162 163 163 Choose to Use Hex for Encode ... ... @@ -166,13 +166,9 @@ 166 166 167 167 [[image:https://wiki.dragino.com/images/thumb/d/d2/ChirpStack_Down_4.png/600px-ChirpStack_Down_4.png||alt="ChirpStack Down 4.png" height="344" width="600"]] 168 168 169 -((( 170 170 Downlink payload encode javescript code: 可以在网站上运行以下Javsscript代码: 171 -))) 172 172 173 -(% class="box" %) 174 -((( 175 -function sha1_to_base64(sha1) 151 +{{{function sha1_to_base64(sha1) 176 176 { 177 177 var digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 178 178 var base64_rep = ""; ... ... @@ -179,7 +179,8 @@ 179 179 var cnt = 0; 180 180 var bit_arr = 0; 181 181 var bit_num = 0; 182 -\\ for(var n = 0; n < sha1.length; ++n) 158 + 159 + for(var n = 0; n < sha1.length; ++n) 183 183 { 184 184 if(sha1[n] >= 'A' && sha1[n] <= 'Z') 185 185 { ... ... @@ -193,22 +193,26 @@ 193 193 { 194 194 ascv = sha1.charCodeAt(n) - 48; 195 195 } 196 -\\ bit_arr = (bit_arr << 4) | ascv; 173 + 174 + bit_arr = (bit_arr << 4) | ascv; 197 197 bit_num += 4; 198 198 if(bit_num >= 6) 199 199 { 200 - bit_num -= 6; 178 + bit_num -= 6; 201 201 base64_rep += digits[bit_arr >>> bit_num]; 202 - bit_arr &= ~ ~(-1 << bit_num);180 + bit_arr &= ~(-1 << bit_num); 203 203 } 204 204 } 205 -\\ if(bit_num > 0) 183 + 184 + if(bit_num > 0) 206 206 { 207 207 bit_arr <<= 6 - bit_num; 208 208 base64_rep += digits[bit_arr]; 209 209 } 210 -\\ var padding = base64_rep.length % 4; 211 -\\ if(padding > 0) 189 + 190 + var padding = base64_rep.length % 4; 191 + 192 + if(padding > 0) 212 212 { 213 213 for(var n = 0; n < 4 - padding; ++n) 214 214 { ... ... @@ -217,15 +217,17 @@ 217 217 } 218 218 return base64_rep; 219 219 } 220 -\\console.log(sha1_to_base64("data")); 221 -\\data is downlink payload required by end node. 222 -e.g console.log(sha1_to_base64("030101")); 223 - result: AwEB 201 + 202 +console.log(sha1_to_base64("data")); 203 + 204 +data is downlink payload required by end node. 205 + e.g console.log(sha1_to_base64("030101")); 206 + result: AwEB 224 224 AwEB is the 0x030101's base 64 Encode. 225 - \\e.g console.log(sha1_to_base64("030000"));226 - result: AwAA227 - AwAA is0x030000'sbase64Encode.228 - )))208 + 209 + e.g console.log(sha1_to_base64("030000")); 210 + result: AwAA 211 + AwAA is 0x030000's base 64 Encode.}}} 229 229 230 230 == 4.3 Add the decode function in Chirpstack for the payload == 231 231 ... ... @@ -241,29 +241,21 @@ 241 241 242 242 = 5. Multiply Uplink in ChirpStack = 243 243 244 -((( 245 245 nbtrans field is the value to determine the re-transmission time for unconfirmed uplink data. 246 -))) 247 247 248 - (((229 + 249 249 ChirpStack will auto adjust nbtrans according to uplink rssi. [[link to source>>url:https://github.com/brocaar/chirpstack-network-server/blob/master/internal/adr/adr.go]] 250 -))) 251 251 252 252 [[image:https://wiki.dragino.com/images/thumb/6/63/Nbtrans_1.png/600px-Nbtrans_1.png||alt="Nbtrans 1.png" height="103" width="600"]] 253 253 254 -((( 255 255 nbtrans is a field of ADR message, in unconfirm mode, it tells end node how many time it needs to transmit for every frame. 256 -))) 257 257 258 258 [[image:https://wiki.dragino.com/images/thumb/1/17/Nbtrans_2.png/300px-Nbtrans_2.png||alt="Nbtrans 2.png" height="462" width="300"]] 259 259 260 - (((238 + 261 261 Above behaviour will cause the platform shows below two cases of error: 262 -))) 263 263 264 -((( 265 265 Error of duplicate Frame Counter 266 -))) 267 267 268 268 [[image:https://wiki.dragino.com/images/7/7e/Nbtrans_3.png||alt="Nbtrans 3.png" height="677" width="600"]] 269 269 ... ... @@ -275,9 +275,7 @@ 275 275 276 276 This example uses the Windows version as a template, other versions can refer to this. Similiar reference: [[https:~~/~~/confluence.alitecs.de/plugins/servlet/mobile?contentId=79790102#content/view/79790102>>url:https://confluence.alitecs.de/plugins/servlet/mobile?contentId=79790102#content/view/79790102]] 277 277 278 -((( 279 279 ~1. Install the GO compilation environment: Download the corresponding version of the Go compiler at [[https:~~/~~/go.dev/dl/>>url:https://go.dev/dl/]] and install it. 280 -))) 281 281 282 282 [[image:https://wiki.dragino.com/images/3/37/Chirpstacksolution-1.png||alt="Chirpstacksolution-1.png" height="199" width="554"]] 283 283 ... ... @@ -285,17 +285,11 @@ 285 285 286 286 [[image:https://wiki.dragino.com/images/c/ca/Chirpstacksolution-2.png||alt="Chirpstacksolution-2.png" height="283" width="361"]] 287 287 288 -((( 289 289 2. Environment variable settings:. 290 -))) 291 291 292 -((( 293 293 1) Open Computer -> Properties -> Advanced System Settings -> Environment Variables and add a "new" system variable: 294 -))) 295 295 296 -((( 297 297 2)Set the variable name GOROOT and the variable value C:\Go\ (installation directory) 298 -))) 299 299 300 300 [[image:https://wiki.dragino.com/images/f/f9/Chirpstacksolution-3.png||alt="Chirpstacksolution-3.png" height="152" width="554"]] 301 301 ... ... @@ -343,35 +343,17 @@ 343 343 344 344 5. Add the plugin and run the plugin. 345 345 346 -((( 347 347 The exe file generated in the previous step is placed in the same root directory as chirpstack-network-server.toml, and the ADR plugin is added to the toml file. The location of the addition is as follows: 348 -))) 349 349 350 350 [[image:https://wiki.dragino.com/images/8/82/Chirpstacksolution-9.png||alt="Chirpstacksolution-9.png" height="73" width="554"]] 351 351 352 -((( 353 -((( 354 354 For example: adr_plugins=[“adr-setting”] 355 -))) 356 -))) 357 357 358 -* ((( 359 -((( 360 -Adding a single plugin format is adr_plugins=["filename"] 361 -))) 362 -))) 319 +* Adding a single plugin format is adr_plugins=["filename"] 363 363 364 -* ((( 365 -((( 366 -Adding multiple plugins The format is adr_plugins=["file name 1", "file name 2",...] 367 -))) 368 -))) 321 +* Adding multiple plugins The format is adr_plugins=["file name 1", "file name 2",...] 369 369 370 -((( 371 -((( 372 372 Finally, re-run chirpstack-network-server.exe, and then select the plugin you just compiled in Device-profiles, 373 -))) 374 -))) 375 375 376 376 [[image:https://wiki.dragino.com/images/3/39/Chirpstacksolution-10.png||alt="Chirpstacksolution-10.png" height="275" width="554"]] 377 377 ... ... @@ -381,10 +381,6 @@ 381 381 382 382 == 6.1 MIC Mismatch or MIC Failed == 383 383 384 -((( 385 385 When the device is registered or the device is working normally, the problem of MIC mismatch and MIC failed occurs. 386 -))) 387 387 388 -((( 389 389 Under normal circumstances, users need to change the APPKEY to solve this problem. 390 -)))