Changes for page LG01v2 -- LoRa Gateway User Manual
Last modified by Kilight Cao on 2024/10/12 08:58
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 18 added, 0 removed)
- LoRa_send_trial.ino
- Log-Temperature-Sensor-and-send-data-to-Node-red.ino
- Log-Temperature-Sensor-and-send-data-to-node-red.json
- image-20221108164337-1.png
- image-20221108164413-2.png
- image-20221108170314-3.png
- image-20221108170621-4.jpeg
- image-20221108170731-5.png
- image-20221108172149-6.png
- image-20221108172432-7.png
- image-20221108174840-8.png
- image-20221108175113-9.png
- image-20221108180334-10.png
- image-20221108180458-11.png
- image-20221112161031-1.png
- image-20221112161111-2.png
- image-20221112162733-3.png
- image-20221112163119-4.png
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. Kilight1 +XWiki.Edwin - Content
-
... ... @@ -11,23 +11,30 @@ 11 11 12 12 {{toc/}} 13 13 14 -= **1. Introduction** = 15 15 16 16 17 -== **1.1 What is LG01-V2** == 18 18 19 19 18 + 19 += **1. Introduction** = 20 + 21 +== **1.1 What is LG01v2** == 22 + 23 + 20 20 ((( 21 21 ((( 22 -The LG01-V2 is an (% style="color:green" %)**open-source single channel LoRa Gateway**(%%). It lets you bridge LoRa wireless network to an IP network via (% style="color:green" %)**WiFi , Ethernet or Cellular Network**(%%) (via Optional 4G module). The LoRa wireless allows users to send data and reach extremely long ranges at low data rates. 26 +The LG01v2 is an (% style="color:green" %)**open-source single channel LoRa Gateway**(%%). It lets you bridge LoRa wireless network to an IP network via (% style="color:green" %)**WiFi , Ethernet or Cellular Network**(%%) (via Optional 4G module). The LoRa wireless allows users to send data and reach extremely long ranges at low data rates. 27 + 28 +LG01v2 is specially design for peer to peer LoRa protocol instead of LoRaWAN protocol. The LG01v2 use single channel LoRa module to minimize the deployment cost for a private p2p LoRa wireless network. 23 23 ))) 24 24 25 25 ((( 26 -LG01-V2 supports (% style="color:green" %)**remote management**(%%). System Integrator can easy to remote monitor the gateway and maintain it. 32 +LG01v2 uses Open Source Linux system. User can modify the Linux part and develop customize software base on it. It has (% style="color:green" %)1.2Ghz Quad-Core CPU(%%) , (% style="color:green" %)4GB eMMC storage(%%) and (% style="color:green" %)512MB RAM(%%) for most application. 33 + 34 +LG01v2 supports (% style="color:green" %)**remote management**(%%). System Integrator can easy to remote monitor the gateway and maintain it. 27 27 ))) 28 28 29 29 30 - 31 31 == **1.2 Specifications** == 32 32 33 33 ... ... @@ -48,6 +48,7 @@ 48 48 * Storage Temperature: -20 ~~ 65°C 49 49 * Power Input: 5V, 2A, DC 50 50 58 + 51 51 == **1.3 Features** == 52 52 53 53 ... ... @@ -56,9 +56,9 @@ 56 56 * Remote Management 57 57 * Auto-provisioning for batch deployment and management 58 58 * LoRa Gateway 59 -* Built-in (% style="color:#037691" %)//**The Things Network**//(%%) local LoRaWAN server 60 60 * Built-in (% style="color:#037691" %)//**Node-Red**// (%%)local Application server 61 61 69 + 62 62 == **1.4 Block Diagram** == 63 63 64 64 ... ... @@ -84,7 +84,6 @@ 84 84 (% style="color:blue" %)//**➢ WIFI LED**//(%%)//: This LED shows the WIFI interface connection status.// 85 85 86 86 87 - 88 88 == **1.6 Button Intruction** == 89 89 90 90 ... ... @@ -101,7 +101,6 @@ 101 101 //**LED status: ** ETH LED will SOLID BULE Until the restore is finished.// 102 102 103 103 104 - 105 105 = **2. Quick Start** = 106 106 107 107 ... ... @@ -112,7 +112,6 @@ 112 112 113 113 == **2.1 Connects to the network and accesses the gateway Web UI** == 114 114 115 - 116 116 == **2.1.1 connect the network.** == 117 117 118 118 ... ... @@ -132,25 +132,7 @@ 132 132 133 133 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622100542-2.png?width=1256&height=369&rev=1.1||alt="image-20220622100542-2.png"]] 134 134 135 -The LG01-V2 has a fall-back IP address on its WAN port. you have to access the gateway Web-UI to configure the WiFi connection via the fallback IP address. 136 136 137 - 138 -(% style="color:#037691" %)**Steps to connect via fallback IP:** 139 - 140 -~1. Connect PC's Ethernet port to LG01-V2's WAN port 141 - 142 -2. Configure PC's Ethernet port has IP: 172.31.255.253 and Netmask: 255.255.255.252 143 - 144 - 145 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622101433-4.png?rev=1.1||alt="image-20220622101433-4.png"]] 146 - 147 - 148 -and then On the PC, use the IP address **http:~/~/172.31.255.254** to access the LG01-V2 via Web or Console. 149 - 150 - 151 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622102210-5.png?width=919&height=504&rev=1.1||alt="image-20220622102210-5.png"]] 152 - 153 - 154 154 Fill in the WiFi information by checking the box and clicking (% style="color:red" %)**Save&Apply** 155 155 156 156 ... ... @@ -162,35 +162,31 @@ 162 162 163 163 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622102847-7.png?rev=1.1||alt="image-20220622102847-7.png"]] 164 164 165 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622102901-8.png?width=938&height=476&rev=1.1||alt="image-20220622102901-8.png"]] 166 166 167 - 168 168 = **3. Web Configure Pages** = 169 169 170 170 == **3.1 Home** == 171 171 157 + 172 172 //Shows the system running status~:// 173 173 174 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220622102901-8.png?rev=1.1||alt="image-20220622102901-8.png"height="476" width="939"]]160 +[[image:image-20221104155612-1.png||height="497" width="942"]] 175 175 176 176 177 177 == **3.2 Network Settings** == 178 178 179 - 180 180 === **3.2.1 Network ~-~-> WiFi** === 181 181 182 182 183 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220616114756-4.png?width=669&height=251&rev=1.1||alt="image-20220616114756-4.png"]]168 +[[image:image-20221104155654-2.png||height="319" width="813"]] 184 184 185 185 186 - 187 187 === **3.4.2 Network ~-~-> System Status** === 188 188 189 189 190 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220820134112-2.png?width=668&height=539&rev=1.1||alt="image-20220820134112-2.png"]]174 +[[image:image-20221104155724-3.png||height="679" width="861"]] 191 191 192 192 193 - 194 194 === **3.4.3 Network ~-~-> Firewall** === 195 195 196 196 ... ... @@ -197,23 +197,20 @@ 197 197 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220616115351-6.png?width=661&height=244&rev=1.1||alt="image-20220616115351-6.png"]] 198 198 199 199 200 - 201 201 == **3.5 System** == 202 202 203 - 204 204 === **3.5.1 System ~-~-> System Overview** === 205 205 206 206 207 207 Shows the system info: 208 208 209 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220917144512-5.png?width=853&height=618&rev=1.1||alt="image-20220917144512-5.png"]]190 +[[image:image-20221104155907-4.png]] 210 210 211 211 212 - 213 213 === **3.5.2 System ~-~-> Backup/Restore** === 214 214 215 215 216 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220917144725-6.png?width=869&height=208&rev=1.1||alt="image-20220917144725-6.png"]]196 +[[image:image-20221104155928-5.png||height="334" width="880"]] 217 217 218 218 219 219 = (% id="cke_bm_1978S" style="display:none" %)** **(%%)**4. Build in Server** = ... ... @@ -222,7 +222,7 @@ 222 222 The default factory version of LG01-V2 is installed with the built-in Applicant server: (% style="color:blue" %)**Node-Red** 223 223 224 224 225 -[[image: http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220820115644-1.png?width=778&height=217&rev=1.1||alt="image-20220820115644-1.png"]]205 +[[image:image-20221104155949-6.png||height="315" width="1023"]] 226 226 227 227 228 228 (% style="color:red" %)**Note:** ... ... @@ -230,15 +230,13 @@ 230 230 **Path**: System ~-~-> Built-in Server 231 231 232 232 233 -**Troubleshooting :**213 +(% style="color:blue" %)**Troubleshooting:** 234 234 235 - 236 236 **~ 1. URL does not jump properly** 237 237 238 238 For the Node-Red, you can use the local IP address and the port is 1880 to access it. 239 239 240 240 241 - 242 242 == **4.1 Application Server ~-~- Node-Red** == 243 243 244 244 ... ... @@ -253,10 +253,9 @@ 253 253 254 254 = **5. How to configure the Lora Gateway** = 255 255 234 +== **5.1 Configure and Debug LoRa wireless of LG01v2** == 256 256 257 -== **5.1 Access the Lora configuration page** == 258 258 259 - 260 260 Users can access the Lora configuration page by running the following command, then select the option **''serial port setup"**: 261 261 262 262 (% class="box infomessage" %) ... ... @@ -277,7 +277,9 @@ 277 277 ))) 278 278 279 279 280 -(% style="color:red" %)**Note: Enter the corresponding letter to change the configuration, like A,B,C**(%%) 257 +(% style="color:red" %)**Note: Enter the corresponding letter to change the configuration, like A,B,C** 258 + 259 + 281 281 (% style="color:red" %)[[image:image-20221029174703-3.png]] 282 282 283 283 ... ... @@ -286,55 +286,180 @@ 286 286 287 287 (% class="box infomessage" %) 288 288 ((( 289 -AT+FRE=868.100,868.100 ~-~--> TX and RX frequency 290 -AT+GROUPMOD=0,0 ~-~--> TX and RX group 291 -AT+BW=0,0 ~-~--> TX and RX Bandwidth 292 -AT+SF=12,12 ~-~--> TX and RX Spreading Factor 293 -AT+POWER=14 ~-~--> TX Power Range 268 +**AT+FRE=868.100,868.100 ~-~--> TX and RX frequency 269 +AT+GROUPMOD=0,0 ~-~--> TX and RX group 270 +AT+BW=0,0 ~-~--> TX and RX Bandwidth 271 +AT+SF=12,12 ~-~--> TX and RX Spreading Factor 272 +AT+POWER=14 ~-~--> TX Power Range 273 +AT+CRC=1,1 ~-~--> TX and RX CRC Type 274 +AT+HEADER=0,0 ~-~--> TX and RX Header Type 275 +AT+CR=1,1 ~-~--> TX and RX Coding Rate 276 +AT+IQ=0,0 ~-~--> TX and RX InvertIQ 277 +AT+PREAMBLE=8,8 ~-~--> TX and RX Preamble Length 278 +AT+SYNCWORD=0 ~-~--> Syncword(0: private,1: public) 279 +AT+RXMOD=65535,0 ~-~--> Rx Timeout and Reply mode 280 +AT+RXDAFORM=1** 281 +))) 282 + 283 + 284 +== **5.2 Example: LG01v2** == 285 + 286 +=== **5.2.1 Introduce for the example:** === 287 + 288 + 289 +[[image:image-20221104102736-3.png||height="282" width="723"]] 290 + 291 + 292 +In this example, there are two devices: 293 + 294 +* **LA66 Shield + UNO + DHT11**: The UNO will get the temperature and humidity and broadcast the value via LoRa protocol. 295 +* **LG01v2** : LG01v2 is set to listening the LoRa Channel which LA66 is broadcasting. When LG01v2 get the data from LA66, LG01v2 will plot the data in built-in IoT server. 296 + 297 + 298 +=== **5.2.2 Set Up LA66 Shield + UNO** === 299 + 300 + 301 +==== **Set up LA66 Module** ==== 302 + 303 + 304 +LA66 Module is loaded with the firmware **[[LA66 Peer-to-Peer firmware>>http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LA66%20LoRaWAN%20Shield%20User%20Manual/Instruction%20for%20LA66%20Peer%20to%20Peer%20firmware/]] **and user can use AT Command to set up LA66 with below parameters: 305 + 306 +((( 307 +(% style="color:red" %)**LA66 Shield as Sender: ** 308 + 309 +(% class="box infomessage" %) 310 +((( 311 +**LA66 Shield configuration:** 312 + 313 +AT+FRE=868.100,868.100 ~-~--> TX and RX frequency set: 868100000 314 +AT+BW=0,0 ~-~--> TX and RX Bandwidth set: 125kHz 315 +AT+SF=12,12 ~-~--> TX and RX Spreading Factor set: SF12 316 +AT+POWER=14 ~-~--> TX Power Range set: 14dBm 294 294 AT+CRC=1,1 ~-~--> TX and RX CRC Type 295 295 AT+HEADER=0,0 ~-~--> TX and RX Header Type 296 296 AT+CR=1,1 ~-~--> TX and RX Coding Rate 297 297 AT+IQ=0,0 ~-~--> TX and RX InvertIQ 298 -AT+PREAMBLE=8,8 ~-~--> TX and RX Preamble Length 321 +AT+PREAMBLE=8,8 ~-~--> TX and RX Preamble Length set: 8 299 299 AT+SYNCWORD=0 ~-~--> Syncword**(0: private,1: public)** 300 -AT+RXMOD=65535,0 ~-~--> Rx Timeout and Reply mode 301 -AT+RXDAFORM=1 323 +AT+RXMOD=6,0 ~-~--> Rx Timeout and Reply mode 302 302 ))) 325 +))) 303 303 304 304 305 -== **5.2 Example: LG01**-**V2 Peer-to-Peer** == 306 306 329 +==== **Set up Arduino UNO** ==== 307 307 308 - [[image:image-20221104102736-3.png||height="282"width="723"]]331 +(% id="cke_bm_1033249S" style="display:none" %)** ** 309 309 333 +**Hardware Connection** 310 310 311 -The user can run the AT command to set the LG01-V2 RX window always open as a Receiver, the LA66 Shield uses **AT+SEND=1,hello world,2,3** to simulate sending data, 335 +(% class="box infomessage" %) 336 +((( 337 +**The DHT11 sensor connects to the LA66 Shield:** 312 312 313 -**Prerequisites: **The configuration of LG01-V2 and LA66 Shield must match, users can use **AT+CFG** to check all configurations. 339 +**VCC <~-~--> 3.3V (Red line)** 340 +**DATA <~-~--> PIN8 (Purple line)** 341 +**GND <~-~--> GND (White line)** 342 +))) 314 314 344 +[[image:image-20221108170731-5.png||height="588" width="441"]] 315 315 316 -(% style="color:red; font-weight:bold" %)**LG01-V**(% style="color:red" %)**2 as Receiver: (configured as AT+RXMOD=65535,2)** 317 317 318 -[[image:image-20221102140053-4.png]] 319 319 348 +===== **1. Open Arduino IDE** ===== 320 320 321 -(% style="color:red" %)**LA66 Shield as Sender: (AT+SEND=1,hello world,2,3)** 322 322 323 -[[image:1 667456058832-484.png||height="291" width="353"]]351 +[[image:image-20221108172149-6.png||height="650" width="542"]] 324 324 325 325 326 -Instruction for Peer-to-Peer firmware:[[ **Instruction **>>url:http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LA66%20LoRaWAN%20Shield%20User%20Manual/Instruction%20for%20LA66%20Peer%20to%20Peer%20firmware/]] 354 + 355 +===== **2. Open project** ===== 356 + 357 + 358 +Users can download Arduino files from this link: [[attach:Log-Temperature-Sensor-and-send-data-to-Node-red.ino||target="_blank"]] 359 + 360 +Then click Compile and Upload to LA66 Shield, 361 + 362 +[[image:image-20221108172432-7.png]] 363 + 364 + 365 + 366 +===== **3. Open the Serial Monitor to check the LA66 Shield data** ===== 367 + 368 + 369 +The UNO will now reads the temperature and humidity data from the sensor and broadcast it via LoRa wireless, 370 + 371 +[[image:image-20221108174840-8.png||height="731" width="671"]] 372 + 373 + 374 + 375 +Sending out data as below. 376 + 377 +[[image:image-20221108175113-9.png||height="556" width="998"]] 378 + 379 + 380 +=== **5.2.3 Set Up LG01v2** === 381 + 382 + 383 +Configure LG01v2 LoRa channel parameters so it can get data from LA66 Shield 384 + 385 +(% style="color:red; font-weight:bold" %)**LG01v**(% style="color:red" %)**2 as Receiver: (configured as AT+RXMOD=65535,2)** 386 + 387 +(% class="box infomessage" %) 388 +((( 389 +**LG01-V2 configuration:** 390 + 391 +AT+FRE=868.100,868.100 ~-~--> TX and RX frequency set: 868100000 392 +AT+BW=0,0 ~-~--> TX and RX Bandwidth set: 125kHz 393 +AT+SF=12,12 ~-~--> TX and RX Spreading Factor set: SF12 394 +AT+POWER=14 ~-~--> TX Power Range set: 14dBm 395 +AT+CRC=1,1 ~-~--> TX and RX CRC Type 396 +AT+HEADER=0,0 ~-~--> TX and RX Header Type 397 +AT+CR=1,1 ~-~--> TX and RX Coding Rate 398 +AT+IQ=0,0 ~-~--> TX and RX InvertIQ 399 +AT+PREAMBLE=8,8 ~-~--> TX and RX Preamble Length set: 8 400 +AT+SYNCWORD=0 ~-~--> Syncword**(0: private,1: public)** 401 +AT+RXMOD=65535,0 ~-~--> Rx Timeout and Reply mode, RX window always open 327 327 ))) 328 328 329 329 330 - Userscan import this example in node-red:**[[attach:serial USB.json||target="_blank"]]**405 +=== **5.2.4 Test result** === 331 331 332 -[[image:image-20221104100520-2.png||height="605" width="1150"]] 333 333 408 +After the above configuration is complete, users can send test simulation data to check whether the configuration is correct, In LA66 sheild serial console send:(% style="color:red" %)**(AT+SEND=1,hello world,2,3).** 409 +))) 334 334 335 - =(%style="color:inherit;font-family:inherit;font-size:29px" %)**6. How userscanaccessLG01**(%%)**-V(%style="color:inherit;font-family:inherit;font-size:29px"%)2 using serialUSB(%%)** =411 +When LG01v2 replies with ACK when it receives a packet sent by LA66 sheild. 336 336 413 +[[image:image-20221108164413-2.png]] 337 337 415 + 416 + 417 +In the real-time log of LG01v2: 418 + 419 +[[image:image-20221108170314-3.png]] 420 + 421 + 422 +=== **5.2.5 Plot data chart in LG01v2** === 423 + 424 + 425 +User can plot the temperature and humidity chat via LG01v2 built-in IoT server. 426 + 427 +User can import this example in Node-Red: [[attach:Log-Temperature-Sensor-and-send-data-to-node-red.json||target="_blank"]] 428 + 429 +[[image:image-20221108180334-10.png||height="651" width="1141"]] 430 + 431 + 432 +The temperature and humidity chart is displayed in the built-in node-red UI 433 + 434 +**Browser input: (% style="background-color:yellow" %)__//http:~/~/<local-IPV4-address>//__(%%)** 435 + 436 +[[image:image-20221108180458-11.png||height="402" width="1137"]] 437 + 438 + 439 += (% style="color:inherit; font-family:inherit; font-size:29px" %)**6. How users can access LG01**(%%)**v(% style="color:inherit; font-family:inherit; font-size:29px" %)2 using serial USB(%%)** = 440 + 441 + 338 338 (% style="color:blue" %)**USB TTL to LG01-V2 Connection:** 339 339 340 340 ... ... @@ -361,16 +361,16 @@ 361 361 362 362 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220804164928-3.png?width=332&height=320&rev=1.1||alt="image-20220804164928-3.png"]] 363 363 468 + 364 364 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20All%20Gateway%20models/HP0C/WebHome/image-20220804164747-2.png?width=594&height=622&rev=1.1||alt="image-20220804164747-2.png"]] 365 365 366 366 367 367 = **7. FAQ** = 368 368 369 - 370 370 == **7.1 How does LG01-V2 communicate with Lora shield (LoRa.h)** == 371 371 372 372 373 -This example describes how to use LG01-V2, LoRa Shield to set up a LoRa network 477 +This example describes how to use LG01-V2, LoRa Shield to set up a LoRa network, 374 374 375 375 [[image:image-20221103152238-8.png||height="251" width="654"]] 376 376 ... ... @@ -395,6 +395,8 @@ 395 395 AT+RXDAFORM=1 396 396 ))) 397 397 502 + 503 + 398 398 **Lora shield configuration:** 399 399 400 400 Lora Shield example: [[attach:LoRa_Shield_Sketch_For_MQTT.ino||target="_blank"]] , [[attach:arduino-LoRa-master.zip||target="_blank"]] ... ... @@ -402,16 +402,59 @@ 402 402 [[image:image-20221101161318-2.png]] 403 403 404 404 511 + 405 405 **Test LG01-V2 to receive Lora Shield data:** 406 406 407 407 [[image:image-20221101161951-3.png]] 408 408 409 409 410 -**Test the LG01-V2 to send data:** 411 411 518 +**Test the LG01-V2 to send data:** 519 + 412 412 [[image:image-20221101162527-4.png]] 413 413 414 414 523 +== **7.2 How does LG01-V2 communicate with Heltec LoRa Node** == 524 + 525 + 526 +This example describes how to use LG01-V2 and Heltec LoRa Node to set up a LoRa network, 527 + 528 +[[image:image-20221112161111-2.png||height="258" width="692"]] 529 + 530 +(% style="color:red" %)**Prerequisites: The configurations of LG01-V2 and Lora shield must match** 531 + 532 + 533 +**LG01-V2 configuration:** 534 + 535 +(% class="box infomessage" %) 536 +((( 537 +AT+FRE=868.100,868.100 ~-~--> TX and RX frequency set: 868100000 538 +AT+BW=0,0 ~-~--> TX and RX Bandwidth set: 125kHz 539 +AT+SF=12,12 ~-~--> TX and RX Spreading Factor set: SF12 540 +AT+POWER=14 ~-~--> TX Power Range 541 +AT+CRC=1,1 ~-~--> TX and RX CRC Type 542 +AT+HEADER=0,0 ~-~--> TX and RX Header Type 543 +AT+CR=1,1 ~-~--> TX and RX Coding Rate 544 +AT+IQ=0,0 ~-~--> TX and RX InvertIQ 545 +AT+PREAMBLE=8,8 ~-~--> TX and RX Preamble Length set: 8 546 +AT+SYNCWORD=0 ~-~--> Syncword**(0: private,1: public), **the corresponding Lora shield syncword is 0x12 547 +AT+RXMOD=65535,0 ~-~--> Rx Timeout and Reply mode,RX window always open 548 +AT+RXDAFORM=1 ~-~--> RX data format**(0: Hex ,1: String)** 549 +))) 550 + 551 + 552 +After we upload the sketch to Heltec LoRa Node, we can see below output from Arduino. 553 + 554 +Lora Shield example: [[attach:LoRa_send_trial.ino||target="_blank"]] 555 + 556 +[[image:image-20221112162733-3.png||height="524" width="927"]] 557 + 558 + 559 +And we can see the logread of gateway as below, means the packet arrive gateway: 560 + 561 +[[image:image-20221112163119-4.png||height="808" width="560"]] 562 + 563 + 415 415 = (% style="color:inherit; font-family:inherit; font-size:29px" %)**8. Supports**(%%) = 416 416 417 417 ... ... @@ -423,7 +423,6 @@ 423 423 **//With your question as detailed as possible. We will reply and help you in the shortest.//** 424 424 425 425 426 - 427 427 = **9. Reference** = 428 428 429 429 ... ... @@ -457,7 +457,6 @@ 457 457 More info about valid bands, please see [[EC25-E product page>>url:https://www.quectel.com/product/ec25.htm]]. 458 458 459 459 460 - 461 461 = **10. Manufacturer Info** = 462 462 463 463 ... ... @@ -468,7 +468,6 @@ 468 468 LongCheng Street, LongGang District ; Shenzhen 518116,China 469 469 470 470 471 - 472 472 = **11. FCC Warning** = 473 473 474 474 ... ... @@ -501,7 +501,6 @@ 501 501 ((( 502 502 The antenna(s) used for this transmitter must be installed to provide a separation distance of at least 20 cm from all persons and must not be co-located or operating in conjunction with any other antenna or transmitter. 503 503 650 + 504 504 505 505 ))) 506 - 507 -~)~)~)
- LoRa_send_trial.ino
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +3.4 KB - Content
-
... ... @@ -1,0 +1,124 @@ 1 +#include "LoRaWan_APP.h" 2 +#include "Arduino.h" 3 + 4 + 5 +#define RF_FREQUENCY 868100000 // Hz 6 + 7 +#define TX_OUTPUT_POWER 5 // dBm 8 + 9 +#define LORA_BANDWIDTH 0 // [0: 125 kHz, 10 + // 1: 250 kHz, 11 + // 2: 500 kHz, 12 + // 3: Reserved] 13 +#define LORA_SPREADING_FACTOR 12 // [SF7..SF12] 14 +#define LORA_CODINGRATE 1 // [1: 4/5, 15 + // 2: 4/6, 16 + // 3: 4/7, 17 + // 4: 4/8] 18 +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx 19 +#define LORA_SYMBOL_TIMEOUT 0 // Symbols 20 +#define LORA_FIX_LENGTH_PAYLOAD_ON false 21 +#define LORA_IQ_INVERSION_ON false 22 + 23 + 24 +#define RX_TIMEOUT_VALUE 1000 25 +#define BUFFER_SIZE 30 // Define the payload size here 26 + 27 +float tem,hum; 28 +char tem_1[8]={"\0"},hum_1[8]={"\0"}; 29 +char *node_id = "<GW01>"; //From LG01 via web Local Channel settings on MQTT.Please refer <> dataformat in here. 30 + 31 +char txpacket[BUFFER_SIZE]; 32 +char rxpacket[BUFFER_SIZE]; 33 + 34 +double txNumber; 35 + 36 +bool lora_idle=true; 37 + 38 +static RadioEvents_t RadioEvents; 39 +void OnTxDone( void ); 40 +void OnTxTimeout( void ); 41 + 42 +void dhtTem() 43 +{ 44 + tem = random(15,40); 45 + hum = random(40,80); 46 + Serial.println(F("The temperature and humidity:")); 47 + Serial.print("["); 48 + Serial.print(tem); 49 + Serial.print("℃"); 50 + Serial.print(","); 51 + Serial.print(hum); 52 + Serial.print("%"); 53 + Serial.print("]"); 54 + Serial.println(""); 55 +} 56 + 57 +void dhtWrite() 58 +{ 59 + char data[50] = "\0"; 60 + for(int i = 0; i < 50; i++) 61 + { 62 + data[i] = node_id[i]; 63 + } 64 + 65 + dtostrf(tem,0,1,tem_1); 66 + dtostrf(hum,0,1,hum_1); 67 + 68 + strcat(data,"tem_a="); 69 + strcat(data,tem_1); 70 + strcat(data,"&hum_a="); 71 + strcat(data,hum_1); 72 + strcpy((char *)txpacket,data); 73 + 74 + Serial.println((char *)txpacket); 75 +} 76 + 77 +void setup() { 78 + Serial.begin(115200); 79 + Mcu.begin(); 80 + 81 + txNumber=0; 82 + 83 + RadioEvents.TxDone = OnTxDone; 84 + RadioEvents.TxTimeout = OnTxTimeout; 85 + 86 + Radio.Init( &RadioEvents ); 87 + Radio.SetChannel( RF_FREQUENCY ); 88 + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, 89 + LORA_SPREADING_FACTOR, LORA_CODINGRATE, 90 + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, 91 + true, 0, 0, LORA_IQ_INVERSION_ON, 3000 ); 92 + } 93 + 94 + 95 + 96 +void loop() 97 +{ 98 + if(lora_idle == true) 99 + { 100 + delay(5000); 101 + txNumber += 0.01; 102 + Serial.println(txNumber); 103 + 104 + dhtTem(); 105 + dhtWrite(); 106 + Radio.Send( (uint8_t *)txpacket, strlen(txpacket) ); //send the package out 107 + lora_idle = false; 108 + } 109 + Radio.IrqProcess( ); 110 +} 111 + 112 +void OnTxDone( void ) 113 +{ 114 + Serial.println("TX done......"); 115 + lora_idle = true; 116 +} 117 + 118 +void OnTxTimeout( void ) 119 +{ 120 + Radio.Sleep( ); 121 + Serial.println("TX Timeout......"); 122 + lora_idle = true; 123 +} 124 +
- Log-Temperature-Sensor-and-send-data-to-Node-red.ino
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +3.6 KB - Content
-
... ... @@ -1,0 +1,150 @@ 1 +#include <SoftwareSerial.h> 2 +#include <Adafruit_Sensor.h> 3 +#include <DHT.h> 4 +#include <DHT_U.h> 5 +/* 6 + 7 +*/ 8 +#define DHTPIN 8 // Digital pin connected to the DHT sensor 9 +#define DHTTYPE DHT11 // DHT 11 10 +DHT_Unified dht(DHTPIN, DHTTYPE); 11 + 12 +String inputString = ""; // a String to hold incoming data 13 +bool stringComplete = false; // whether the string is complete 14 + 15 +long old_time=millis(); 16 +long new_time; 17 + 18 +long uplink_interval=30000; //ms 19 + 20 +float DHT11_temp; 21 +float DHT11_hum; 22 + 23 +SoftwareSerial ss(10, 11); // Arduino RX, TX , 24 + 25 +char rxbuff[128]; 26 +uint8_t rxbuff_index=0; 27 + 28 +void setup() { 29 + // initialize serial 30 + Serial.begin(9600); 31 + 32 + ss.begin(9600); 33 + ss.listen(); 34 + 35 + // reserve 200 bytes for the inputString: 36 + inputString.reserve(200); 37 + 38 + dht.begin(); 39 + sensor_t sensor; 40 + dht.temperature().getSensor(&sensor); 41 + dht.humidity().getSensor(&sensor); 42 + 43 + ss.println("ATZ");//reset LA66 44 +} 45 + 46 +void loop() { 47 + 48 + while ( ss.available()) { 49 + // get the new byte: 50 + char inChar = (char) ss.read(); 51 + // add it to the inputString: 52 + inputString += inChar; 53 + 54 + rxbuff[rxbuff_index++]=inChar; 55 + 56 + if(rxbuff_index>128) 57 + { 58 + rxbuff[rxbuff_index]='\0'; 59 + rxbuff_index=0; 60 + break; 61 + } 62 + 63 + // if the incoming character is a newline, set a flag so the main loop can 64 + // do something about it: 65 + if (inChar == '\n' || inChar == '\r') { 66 + stringComplete = true; 67 + rxbuff[rxbuff_index]='\0'; 68 + rxbuff_index=0; 69 + } 70 + } 71 + 72 + while ( Serial.available()) { 73 + // get the new byte: 74 + char inChar = (char) Serial.read(); 75 + // add it to the inputString: 76 + inputString += inChar; 77 + // if the incoming character is a newline, set a flag so the main loop can 78 + // do something about it: 79 + if (inChar == '\n' || inChar == '\r') { 80 + ss.print(inputString); 81 + inputString = "\0"; 82 + } 83 + } 84 + 85 + // print the string when a newline arrives: 86 + if (stringComplete) { 87 + Serial.print(inputString); 88 + 89 + // clear the string: 90 + inputString = "\0"; 91 + stringComplete = false; 92 + } 93 + 94 + new_time = millis(); 95 + 96 + if(new_time-old_time>=uplink_interval){ 97 + old_time = new_time; 98 + 99 + Serial.print(F("\r\n")); 100 + // Get temperature event and print its value. 101 + sensors_event_t event; 102 + dht.temperature().getEvent(&event); 103 + if (isnan(event.temperature)) { 104 + Serial.println(F("Error reading temperature!")); 105 + DHT11_temp=327.67; 106 + } 107 + else { 108 + DHT11_temp=event.temperature; 109 + 110 + if(DHT11_temp>60){ 111 + DHT11_temp=60; 112 + } 113 + else if(DHT11_temp<-20){ 114 + DHT11_temp=-20; 115 + } 116 + } 117 + // Get humidity event and print its value. 118 + dht.humidity().getEvent(&event); 119 + if (isnan(event.relative_humidity)) { 120 + DHT11_hum=327.67; 121 + Serial.println(F("Error reading humidity!")); 122 + } 123 + else { 124 + DHT11_hum=event.relative_humidity; 125 + 126 + if(DHT11_hum>100){ 127 + DHT11_hum=100; 128 + } 129 + else if(DHT11_hum<0){ 130 + DHT11_hum=0; 131 + } 132 + } 133 + 134 + Serial.print(F("Temperature: ")); 135 + Serial.print(DHT11_temp); 136 + Serial.println(F("°C")); 137 + Serial.print(F("Humidity: ")); 138 + Serial.print(DHT11_hum); 139 + Serial.println(F("%")); 140 + Serial.print(F("\r\n")); 141 + 142 + char sensor_data_buff[128]="\0"; 143 + 144 + //confirm status,Fport,payload length,payload(HEX) 145 + snprintf(sensor_data_buff,128,"AT+SEND=0,%02X%02X%02X%02X,0,0",(short)(DHT11_temp*100)>>8 & 0xFF,(short)(DHT11_temp*100) & 0xFF,(short)(DHT11_hum*10)>>8 & 0xFF,(short)(DHT11_hum*10) & 0xFF); 146 + ss.print(sensor_data_buff); 147 + ss.print('\r'); 148 + } 149 +} 150 +
- Log-Temperature-Sensor-and-send-data-to-node-red.json
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +10.1 KB - Content
-
... ... @@ -1,0 +1,443 @@ 1 +[ 2 + { 3 + "id": "5f10779accc05655", 4 + "type": "tab", 5 + "label": "serial USB", 6 + "disabled": false, 7 + "info": "", 8 + "env": [] 9 + }, 10 + { 11 + "id": "4ea60ce4df40717c", 12 + "type": "serial in", 13 + "z": "5f10779accc05655", 14 + "name": "", 15 + "serial": "bb1c0e81fd51fa9e", 16 + "x": 210, 17 + "y": 60, 18 + "wires": [ 19 + [ 20 + "40eac96a52733f7a", 21 + "79722a224bb22c96" 22 + ] 23 + ] 24 + }, 25 + { 26 + "id": "fe5a93a52b6adcf1", 27 + "type": "inject", 28 + "z": "5f10779accc05655", 29 + "name": "AT+SEND=1,hello world,0,3", 30 + "props": [ 31 + { 32 + "p": "payload" 33 + } 34 + ], 35 + "repeat": "", 36 + "crontab": "", 37 + "once": false, 38 + "onceDelay": 0.1, 39 + "topic": "", 40 + "payload": "AT+SEND=1,hello world,0,3", 41 + "payloadType": "str", 42 + "x": 220, 43 + "y": 260, 44 + "wires": [ 45 + [ 46 + "3f8add7e2e1d1d17" 47 + ] 48 + ] 49 + }, 50 + { 51 + "id": "3f8add7e2e1d1d17", 52 + "type": "serial out", 53 + "z": "5f10779accc05655", 54 + "name": "", 55 + "serial": "bb1c0e81fd51fa9e", 56 + "x": 540, 57 + "y": 260, 58 + "wires": [] 59 + }, 60 + { 61 + "id": "16e7d3d83d9e9415", 62 + "type": "inject", 63 + "z": "5f10779accc05655", 64 + "name": "", 65 + "props": [ 66 + { 67 + "p": "payload" 68 + } 69 + ], 70 + "repeat": "", 71 + "crontab": "", 72 + "once": false, 73 + "onceDelay": 0.1, 74 + "topic": "", 75 + "payload": "ATZ", 76 + "payloadType": "str", 77 + "x": 290, 78 + "y": 320, 79 + "wires": [ 80 + [ 81 + "3f8add7e2e1d1d17" 82 + ] 83 + ] 84 + }, 85 + { 86 + "id": "09ea381519629dae", 87 + "type": "inject", 88 + "z": "5f10779accc05655", 89 + "name": "AT+FRE", 90 + "props": [ 91 + { 92 + "p": "payload" 93 + } 94 + ], 95 + "repeat": "", 96 + "crontab": "", 97 + "once": false, 98 + "onceDelay": 0.1, 99 + "topic": "", 100 + "payload": "AT+FRE=868.100,868.100", 101 + "payloadType": "str", 102 + "x": 280, 103 + "y": 380, 104 + "wires": [ 105 + [ 106 + "3f8add7e2e1d1d17" 107 + ] 108 + ] 109 + }, 110 + { 111 + "id": "5167a7f904013ffd", 112 + "type": "inject", 113 + "z": "5f10779accc05655", 114 + "name": "AT+BW", 115 + "props": [ 116 + { 117 + "p": "payload" 118 + } 119 + ], 120 + "repeat": "", 121 + "crontab": "", 122 + "once": false, 123 + "onceDelay": 0.1, 124 + "topic": "", 125 + "payload": "AT+BW=0,0", 126 + "payloadType": "str", 127 + "x": 290, 128 + "y": 440, 129 + "wires": [ 130 + [ 131 + "3f8add7e2e1d1d17" 132 + ] 133 + ] 134 + }, 135 + { 136 + "id": "dbe4abbc730c76e6", 137 + "type": "inject", 138 + "z": "5f10779accc05655", 139 + "name": "AT+SF", 140 + "props": [ 141 + { 142 + "p": "payload" 143 + } 144 + ], 145 + "repeat": "", 146 + "crontab": "", 147 + "once": false, 148 + "onceDelay": 0.1, 149 + "topic": "", 150 + "payload": "AT+SF=12,12", 151 + "payloadType": "str", 152 + "x": 290, 153 + "y": 500, 154 + "wires": [ 155 + [ 156 + "3f8add7e2e1d1d17" 157 + ] 158 + ] 159 + }, 160 + { 161 + "id": "3be3ab296a75d512", 162 + "type": "inject", 163 + "z": "5f10779accc05655", 164 + "name": "AT+RXMOD", 165 + "props": [ 166 + { 167 + "p": "payload" 168 + } 169 + ], 170 + "repeat": "", 171 + "crontab": "", 172 + "once": false, 173 + "onceDelay": 0.1, 174 + "topic": "", 175 + "payload": "AT+RXMOD=65535,2", 176 + "payloadType": "str", 177 + "x": 270, 178 + "y": 560, 179 + "wires": [ 180 + [ 181 + "3f8add7e2e1d1d17" 182 + ] 183 + ] 184 + }, 185 + { 186 + "id": "7a03d1413c60ea1c", 187 + "type": "inject", 188 + "z": "5f10779accc05655", 189 + "name": "AT+SYNCWORD", 190 + "props": [ 191 + { 192 + "p": "payload" 193 + } 194 + ], 195 + "repeat": "", 196 + "crontab": "", 197 + "once": false, 198 + "onceDelay": 0.1, 199 + "topic": "", 200 + "payload": "AT+SYNCWORD=0", 201 + "payloadType": "str", 202 + "x": 260, 203 + "y": 620, 204 + "wires": [ 205 + [ 206 + "3f8add7e2e1d1d17" 207 + ] 208 + ] 209 + }, 210 + { 211 + "id": "40eac96a52733f7a", 212 + "type": "function", 213 + "z": "5f10779accc05655", 214 + "name": "function 1", 215 + "func": "var data = msg.payload\nif (data.substring(0, 4) == \"Data\")\n{\n if (data.substring(6, 12) == \"(HEX:)\")\n {\n var temp = data.substring(13, 15) + data.substring(16, 18)\n var hum = data.substring(19, 21) + data.substring(22, 24)\n var temp1 = parseInt(temp, 16)/100\n var hum1 = parseInt(hum, 16)/10\n var a1 = { payload: temp1 }, a2 = { payload: hum1 }\n }\n}\nif (data.substring(0, 4) == \"Rssi\")\n{\n var rssi = data.substring(6)\n var a3 = { payload: rssi }\n}\nreturn [a1,a2,a3];\n \n\n", 216 + "outputs": 3, 217 + "noerr": 0, 218 + "initialize": "", 219 + "finalize": "", 220 + "libs": [], 221 + "x": 420, 222 + "y": 60, 223 + "wires": [ 224 + [ 225 + "81edb003937f1a92" 226 + ], 227 + [ 228 + "c63593404a60d9dc" 229 + ], 230 + [ 231 + "61ca71032888887b" 232 + ] 233 + ] 234 + }, 235 + { 236 + "id": "61ca71032888887b", 237 + "type": "ui_chart", 238 + "z": "5f10779accc05655", 239 + "name": "", 240 + "group": "ef41b39771110fa5", 241 + "order": 1, 242 + "width": 0, 243 + "height": 0, 244 + "label": "RSSI", 245 + "chartType": "line", 246 + "legend": "false", 247 + "xformat": "dd HH:mm", 248 + "interpolate": "linear", 249 + "nodata": "", 250 + "dot": true, 251 + "ymin": "", 252 + "ymax": "", 253 + "removeOlder": 1, 254 + "removeOlderPoints": "", 255 + "removeOlderUnit": "3600", 256 + "cutout": 0, 257 + "useOneColor": false, 258 + "useUTC": false, 259 + "colors": [ 260 + "#1f77b4", 261 + "#aec7e8", 262 + "#ff7f0e", 263 + "#2ca02c", 264 + "#98df8a", 265 + "#d62728", 266 + "#ff9896", 267 + "#9467bd", 268 + "#c5b0d5" 269 + ], 270 + "outputs": 1, 271 + "useDifferentColor": false, 272 + "className": "", 273 + "x": 670, 274 + "y": 180, 275 + "wires": [ 276 + [] 277 + ] 278 + }, 279 + { 280 + "id": "81edb003937f1a92", 281 + "type": "ui_chart", 282 + "z": "5f10779accc05655", 283 + "name": "", 284 + "group": "7e1d1c102cf74e6b", 285 + "order": 1, 286 + "width": 0, 287 + "height": 0, 288 + "label": "Temperature", 289 + "chartType": "line", 290 + "legend": "false", 291 + "xformat": "HH:mm:ss", 292 + "interpolate": "linear", 293 + "nodata": "", 294 + "dot": true, 295 + "ymin": "", 296 + "ymax": "", 297 + "removeOlder": 1, 298 + "removeOlderPoints": "", 299 + "removeOlderUnit": "3600", 300 + "cutout": 0, 301 + "useOneColor": false, 302 + "useUTC": false, 303 + "colors": [ 304 + "#1f77b4", 305 + "#aec7e8", 306 + "#ff7f0e", 307 + "#2ca02c", 308 + "#98df8a", 309 + "#d62728", 310 + "#ff9896", 311 + "#9467bd", 312 + "#c5b0d5" 313 + ], 314 + "outputs": 1, 315 + "useDifferentColor": false, 316 + "className": "", 317 + "x": 690, 318 + "y": 100, 319 + "wires": [ 320 + [] 321 + ] 322 + }, 323 + { 324 + "id": "c63593404a60d9dc", 325 + "type": "ui_chart", 326 + "z": "5f10779accc05655", 327 + "name": "", 328 + "group": "3f5d139f158d7c1c", 329 + "order": 2, 330 + "width": 0, 331 + "height": 0, 332 + "label": "Humidity", 333 + "chartType": "line", 334 + "legend": "false", 335 + "xformat": "HH:mm:ss", 336 + "interpolate": "linear", 337 + "nodata": "", 338 + "dot": true, 339 + "ymin": "", 340 + "ymax": "", 341 + "removeOlder": 1, 342 + "removeOlderPoints": "", 343 + "removeOlderUnit": "3600", 344 + "cutout": 0, 345 + "useOneColor": false, 346 + "useUTC": false, 347 + "colors": [ 348 + "#1f77b4", 349 + "#aec7e8", 350 + "#ff7f0e", 351 + "#2ca02c", 352 + "#98df8a", 353 + "#d62728", 354 + "#ff9896", 355 + "#9467bd", 356 + "#c5b0d5" 357 + ], 358 + "outputs": 1, 359 + "useDifferentColor": false, 360 + "className": "", 361 + "x": 680, 362 + "y": 140, 363 + "wires": [ 364 + [] 365 + ] 366 + }, 367 + { 368 + "id": "79722a224bb22c96", 369 + "type": "debug", 370 + "z": "5f10779accc05655", 371 + "name": "debug 1", 372 + "active": true, 373 + "tosidebar": true, 374 + "console": false, 375 + "tostatus": false, 376 + "complete": "false", 377 + "statusVal": "", 378 + "statusType": "auto", 379 + "x": 420, 380 + "y": 180, 381 + "wires": [] 382 + }, 383 + { 384 + "id": "bb1c0e81fd51fa9e", 385 + "type": "serial-port", 386 + "serialport": "/dev/ttyUSB0", 387 + "serialbaud": "9600", 388 + "databits": "8", 389 + "parity": "none", 390 + "stopbits": "1", 391 + "waitfor": "", 392 + "dtr": "none", 393 + "rts": "none", 394 + "cts": "none", 395 + "dsr": "none", 396 + "newline": "\\n", 397 + "bin": "false", 398 + "out": "char", 399 + "addchar": "\\r\\n", 400 + "responsetimeout": "10000" 401 + }, 402 + { 403 + "id": "ef41b39771110fa5", 404 + "type": "ui_group", 405 + "name": "rssi", 406 + "tab": "abb98f80600a5448", 407 + "order": 3, 408 + "disp": true, 409 + "width": "6", 410 + "collapse": false, 411 + "className": "" 412 + }, 413 + { 414 + "id": "7e1d1c102cf74e6b", 415 + "type": "ui_group", 416 + "name": "TEM", 417 + "tab": "abb98f80600a5448", 418 + "order": 4, 419 + "disp": true, 420 + "width": "6", 421 + "collapse": false, 422 + "className": "" 423 + }, 424 + { 425 + "id": "3f5d139f158d7c1c", 426 + "type": "ui_group", 427 + "name": "HUM", 428 + "tab": "abb98f80600a5448", 429 + "order": 2, 430 + "disp": true, 431 + "width": "6", 432 + "collapse": false, 433 + "className": "" 434 + }, 435 + { 436 + "id": "abb98f80600a5448", 437 + "type": "ui_tab", 438 + "name": "LG01v2", 439 + "icon": "LG01v2", 440 + "disabled": false, 441 + "hidden": false 442 + } 443 +]
- image-20221108164337-1.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +17.5 KB - Content
- image-20221108164413-2.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +27.1 KB - Content
- image-20221108170314-3.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +34.6 KB - Content
- image-20221108170621-4.jpeg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +544.6 KB - Content
- image-20221108170731-5.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +2.5 MB - Content
- image-20221108172149-6.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +17.5 KB - Content
- image-20221108172432-7.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +45.9 KB - Content
- image-20221108174840-8.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +52.1 KB - Content
- image-20221108175113-9.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +72.6 KB - Content
- image-20221108180334-10.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +159.3 KB - Content
- image-20221108180458-11.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +52.4 KB - Content
- image-20221112161031-1.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +35.1 KB - Content
- image-20221112161111-2.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +34.8 KB - Content
- image-20221112162733-3.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +78.7 KB - Content
- image-20221112163119-4.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Kilight - Size
-
... ... @@ -1,0 +1,1 @@ 1 +32.6 KB - Content