Last modified by Mengting Qiu on 2023/12/14 11:15

From version 120.1
edited by Xiaoling
on 2023/11/28 14:29
Change comment: Uploaded new attachment "1701152946067-561.png", version {1}
To version 125.10
edited by Xiaoling
on 2023/11/29 09:52
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -47,6 +47,8 @@
47 47  * Firmware upgradable via program port or LoRa protocol
48 48  * Built-in 2400mAh battery or power by external power source
49 49  
50 +
51 +
50 50  == 1.3 Specification ==
51 51  
52 52  
... ... @@ -60,6 +60,8 @@
60 60  * ToF FoV: ±9°, Total 18°
61 61  * Light source: VCSEL
62 62  
65 +
66 +
63 63  == 1.4 Power Consumption ==
64 64  
65 65  
... ... @@ -73,6 +73,8 @@
73 73  * Idle: 21 mA @ 3.3v
74 74  * Max : 360 mA
75 75  
80 +
81 +
76 76  = 2. Configure DS20L to connect to LoRaWAN network =
77 77  
78 78  == 2.1 How it works ==
... ... @@ -206,219 +206,120 @@
206 206  === 2.3.2 Uplink Payload, FPORT~=2 ===
207 207  
208 208  
209 -(((
210 -DS20L will send this uplink **after** Device Status once join the LoRaWAN network successfully. And DS20L will:
215 +==== (% style="color:red" %)**MOD~=1**(%%) ====
211 211  
212 -periodically send this uplink every 20 minutes, this interval [[can be changed>>||anchor="H3.3.1SetTransmitIntervalTime"]].
217 +Regularly detect distance and report. When the distance exceeds the limit, the alarm flag is set to 1, and the report can be triggered by external interrupts.
213 213  
214 -Uplink Payload totals 11 bytes.
215 -)))
219 +Uplink Payload totals 10 bytes.
216 216  
217 217  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
218 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
219 -**Size(bytes)**
220 -)))|=(% style="width: 30px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD;color:white; width: 80px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**
221 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)[[BAT>>||anchor="HBatteryInfo"]]|(% style="width:62.5px" %)(((
222 -[[Temperature DS18B20>>||anchor="HDS18B20Temperaturesensor"]]
223 -)))|[[Distance>>||anchor="HDistance"]]|[[Distance signal strength>>||anchor="HDistancesignalstrength"]]|(% style="width:122px" %)(((
224 -[[Interrupt flag & Interrupt_level>>||anchor="HInterruptPin26A0InterruptLevel"]]
225 -)))|(% style="width:54px" %)[[LiDAR temp>>||anchor="HLiDARtemp"]]|(% style="width:96px" %)(((
226 -[[Message Type>>||anchor="HMessageType"]]
227 -)))
222 +|(% style="background-color:#4f81bd; color:white; width:60px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:30px" %)**2**|(% style="background-color:#4f81bd; color:white; width:130px" %)**1**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:100px" %)**1**|(% style="background-color:#4f81bd; color:white; width:120px" %)**4**
223 +|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:176px" %)MOD+ Alarm+Interrupt|(% style="width:74px" %)Distance|(% style="width:100px" %)Sensor State|(% style="width:119px" %)Interrupt Count
228 228  
229 -[[image:image-20230805104104-2.png||height="136" width="754"]]
225 +[[image:1701155076393-719.png]]
230 230  
227 +(% style="color:blue" %)**Battery Info:**
231 231  
232 -==== (% style="color:blue" %)**Battery Info**(%%) ====
229 +Check the battery voltage for DS20L
233 233  
231 +Ex1: 0x0E10 = 3600mV
234 234  
235 -Check the battery voltage for DS20L.
236 236  
237 -Ex1: 0x0B45 = 2885mV
234 +(% style="color:blue" %)**MOD & Alarm & Interrupt:**
238 238  
239 -Ex2: 0x0B49 = 2889mV
236 +(% style="color:red" %)**MOD:**
240 240  
238 +**Example: ** (0x60>>6) & 0x3f =1
241 241  
242 -==== (% style="color:blue" %)**DS18B20 Temperature sensor**(%%) ====
240 +**0x01:**  Regularly detect distance and report.
241 +**0x02: ** Uninterrupted measurement (external power supply).
243 243  
243 +(% style="color:red" %)**Alarm:**
244 244  
245 -This is optional, user can connect external DS18B20 sensor to the +3.3v, 1-wire and GND pin . and this field will report temperature.
245 +When the detection distance exceeds the limit, the alarm flag is set to 1.
246 246  
247 +(% style="color:red" %)**Interrupt:**
247 247  
248 -**Example**:
249 +Whether it is an external interrupt.
249 249  
250 -If payload is: 0105H:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
251 251  
252 -If payload is: FF3FH :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
252 +(% style="color:blue" %)**Distance info:**
253 253  
254 -
255 -==== (% style="color:blue" %)**Distance**(%%) ====
256 -
257 -
258 -Represents the distance value of the measurement output, the default unit is cm, and the value range parsed as a decimal number is 0-1200. In actual use, when the signal strength value Strength.
259 -
260 -
261 261  **Example**:
262 262  
263 -If the data you get from the register is 0x0B 0xEA, the distance between the sensor and the measured object is 0BEA(H) = 3050 (D)/10 = 305cm.
256 +If payload is: 0708H: distance = 0708H = 1800 mm
264 264  
265 265  
266 -==== (% style="color:blue" %)**Distance signal strength**(%%) ====
259 +(% style="color:blue" %)**Sensor State:**
267 267  
261 +Ex1: 0x00: Normal collection distance
268 268  
269 -Refers to the signal strength, the default output value will be between 0-65535. When the distance measurement gear is fixed, the farther the distance measurement is, the lower the signal strength; the lower the target reflectivity, the lower the signal strength. When Strength is greater than 100 and not equal to 65535, the measured value of Dist is considered credible.
263 +Ex2 0x0x: Distance collection is wrong
270 270  
271 271  
272 -**Example**:
266 +(% style="color:blue" %)**Interript Count:**
273 273  
274 -If payload is: 01D7(H)=471(D), distance signal strength=471, 471>100,471≠65535, the measured value of Dist is considered credible.
268 +If payload is:000007D0H: count = 07D0H =2000
275 275  
276 -Customers can judge whether they need to adjust the environment based on the signal strength.
277 277  
278 278  
279 -**1) When the sensor detects valid data:**
272 +==== (% style="color:red" %)**MOD~=2**(%%)** ** ====
280 280  
281 -[[image:image-20230805155335-1.png||height="145" width="724"]]
274 +Uninterrupted measurement. When the distance exceeds the limit, the output IO is set high and reports are reported every five minutes. The time can be set and powered by an external power supply.Uplink Payload totals 11bytes.
282 282  
283 -
284 -**2) When the sensor detects invalid data:**
285 -
286 -[[image:image-20230805155428-2.png||height="139" width="726"]]
287 -
288 -
289 -**3) When the sensor is not connected:**
290 -
291 -[[image:image-20230805155515-3.png||height="143" width="725"]]
292 -
293 -
294 -==== (% style="color:blue" %)**Interrupt Pin & Interrupt Level**(%%) ====
295 -
296 -
297 -This data field shows if this packet is generated by interrupt or not. [[Click here>>||anchor="H3.3.2SetInterruptMode"]] for the hardware and software set up.
298 -
299 -Note: The Internet Pin is a separate pin in the screw terminal. See pin mapping of GPIO_EXTI .
300 -
301 -**Example:**
302 -
303 -If byte[0]&0x01=0x00 : Normal uplink packet.
304 -
305 -If byte[0]&0x01=0x01 : Interrupt Uplink Packet.
306 -
307 -
308 -==== (% style="color:blue" %)**LiDAR temp**(%%) ====
309 -
310 -
311 -Characterize the internal temperature value of the sensor.
312 -
313 -**Example: **
314 -If payload is: 1C(H) <<24>>24=28(D),LiDAR temp=28℃.
315 -If payload is: F2(H) <<24>>24=-14(D),LiDAR temp=-14℃.
316 -
317 -
318 -==== (% style="color:blue" %)**Message Type**(%%) ====
319 -
320 -
321 -(((
322 -For a normal uplink payload, the message type is always 0x01.
323 -)))
324 -
325 -(((
326 -Valid Message Type:
327 -)))
328 -
329 -(% border="1" cellspacing="5" style="background-color:#f2f2f2; width:499px" %)
330 -|=(% style="width: 161px;background-color:#4F81BD;color:white" %)**Message Type Code**|=(% style="width: 164px;background-color:#4F81BD;color:white" %)**Description**|=(% style="width: 174px;background-color:#4F81BD;color:white" %)**Payload**
331 -|(% style="width:160px" %)0x01|(% style="width:163px" %)Normal Uplink|(% style="width:173px" %)Normal Uplink Payload
332 -|(% style="width:160px" %)0x02|(% style="width:163px" %)Reply configures info|(% style="width:173px" %)Configure Info Payload
333 -
334 -[[image:image-20230805150315-4.png||height="233" width="723"]]
335 -
336 -
337 -=== 2.3.3 Historical measuring distance, FPORT~=3 ===
338 -
339 -
340 -DS20L stores sensor values and users can retrieve these history values via the [[downlink command>>||anchor="H2.5.4Pollsensorvalue"]].
341 -
342 -The historical payload includes one or multiplies entries and every entry has the same payload as Real-Time measuring distance.
343 -
344 344  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
345 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
346 -**Size(bytes)**
347 -)))|=(% style="width: 80px;background-color:#4F81BD;color:white" %)1|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD; color: white; width: 85px;" %)**1**|=(% style="background-color: #4F81BD; color: white; width: 85px;" %)4
348 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)Interrupt flag & Interrupt_level|(% style="width:62.5px" %)(((
349 -Reserve(0xFF)
350 -)))|Distance|Distance signal strength|(% style="width:88px" %)(((
351 -LiDAR temp
352 -)))|(% style="width:85px" %)Unix TimeStamp
277 +|(% style="background-color:#4f81bd; color:white; width:70px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:40px" %)**2**|(% style="background-color:#4f81bd; color:white; width:130px" %)**1**|(% style="background-color:#4f81bd; color:white; width:130px" %)**4**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**
278 +|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:176px" %)MOD+Alarm+Do+Limit flag|(% style="width:74px" %)Distance Limit Alarm count|(% style="width:100px" %)Upper limit|(% style="width:119px" %)Lower limit
353 353  
354 -**Interrupt flag & Interrupt level:**
280 +[[image:1701155150328-206.png]]
355 355  
356 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
357 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
358 -**Size(bit)**
359 -)))|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit7**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit6**|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**[bit5:bit2]**|=(% style="width: 90px; background-color: #4F81BD; color: white;" %)**bit1**|=(% style="background-color: #4F81BD; color: white; width: 90px;" %)**bit0**
360 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)No ACK message|(% style="width:62.5px" %)Poll Message Flag|Reserve|(% style="width:91px" %)Interrupt level|(% style="width:88px" %)(((
361 -Interrupt flag
362 -)))
282 +(% style="color:blue" %)**MOD & Alarm & Do & Limit flag:**
363 363  
364 -* (((
365 -Each data entry is 11 bytes and has the same structure as [[Uplink Payload>>||anchor="H2.3.2UplinkPayload2CFPORT3D2"]], to save airtime and battery, DS20L will send max bytes according to the current DR and Frequency bands.
366 -)))
284 +(% style="color:red" %)**MOD:**
367 367  
368 -For example, in the US915 band, the max payload for different DR is:
286 +**Example: ** (0x60>>6) & 0x3f =1
369 369  
370 -**a) DR0:** max is 11 bytes so one entry of data
288 +**0x01:**  Regularly detect distance and report.
289 +**0x02: ** Uninterrupted measurement (external power supply).
371 371  
372 -**b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
291 +(% style="color:red" %)**Alarm:**
373 373  
374 -**c) DR2:** total payload includes 11 entries of data
293 +When the detection distance exceeds the limit, the alarm flag is set to 1.
375 375  
376 -**d) DR3:** total payload includes 22 entries of data.
295 +(% style="color:red" %)**Do:**
377 377  
378 -If DS20L doesn't have any data in the polling time. It will uplink 11 bytes of 0
297 +When the distance exceeds the set threshold, pull the Do pin high.
379 379  
299 +(% style="color:red" %)**Limit flag:**
380 380  
381 -**Downlink:**
301 +Mode for setting threshold: **0~~5**
382 382  
383 -0x31 64 CC 68 0C 64 CC 69 74 05
303 +**0:** does not use upper and lower limits
384 384  
385 -[[image:image-20230805144936-2.png||height="113" width="746"]]
305 +**1:** Use upper and lower limits
386 386  
387 -**Uplink:**
307 +**2:** is less than the lower limit value
388 388  
389 -43 FF 0E 10 00 B0 1E 64 CC 68 0C 40 FF 0D DE 00 A8 1E 64 CC 68 29 40 FF 09 92 00 D3 1E 64 CC 68 65 40 FF 02 3A 02 BC 1E 64 CC 68 A1 41 FF 0E 1A 00 A4 1E 64 CC 68 C0 40 FF 0D 2A 00 B8 1E 64 CC 68 E8 40 FF 00 C8 11 6A 1E 64 CC 69 24 40 FF 0E 24 00 AD 1E 64 CC 69 6D
309 +**3:** is greater than the lower limit value
390 390  
311 +**4:** is less than the upper limit
391 391  
392 -**Parsed Value:**
313 +**5:** is greater than the upper limit
393 393  
394 -[DISTANCE , DISTANCE_SIGNAL_STRENGTH,LIDAR_TEMP,EXTI_STATUS , EXTI_FLAG , TIME]
395 395  
316 +(% style="color:blue" %)**Upper limit:**
396 396  
397 -[360,176,30,High,True,2023-08-04 02:53:00],
318 +The upper limit of the threshold cannot exceed 2000mm.
398 398  
399 -[355,168,30,Low,False,2023-08-04 02:53:29],
400 400  
401 -[245,211,30,Low,False,2023-08-04 02:54:29],
321 +(% style="color:blue" %)**Lower limit:**
402 402  
403 -[57,700,30,Low,False,2023-08-04 02:55:29],
323 +The lower limit of the threshold cannot be less than 3mm.
404 404  
405 -[361,164,30,Low,True,2023-08-04 02:56:00],
406 406  
407 -[337,184,30,Low,False,2023-08-04 02:56:40],
326 +== 2.4 Decode payload in The Things Network ==
408 408  
409 -[20,4458,30,Low,False,2023-08-04 02:57:40],
410 410  
411 -[362,173,30,Low,False,2023-08-04 02:58:53],
412 -
413 -
414 -**History read from serial port:**
415 -
416 -[[image:image-20230805145056-3.png]]
417 -
418 -
419 -=== 2.3.4 Decode payload in The Things Network ===
420 -
421 -
422 422  While using TTN network, you can add the payload format to decode the payload.
423 423  
424 424  [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LLDS12-LoRaWAN%20LiDAR%20ToF%20Distance%20Sensor%20User%20Manual/WebHome/1654592762713-715.png?rev=1.1||alt="1654592762713-715.png"]]
... ... @@ -433,7 +433,7 @@
433 433  )))
434 434  
435 435  
436 -== 2.4 ​Show Data in DataCake IoT Server ==
343 +== 2.5 ​Show Data in DataCake IoT Server ==
437 437  
438 438  
439 439  (((
... ... @@ -465,10 +465,10 @@
465 465  
466 466  After added, the sensor data arrive TTN V3, it will also arrive and show in Datacake.
467 467  
468 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDDS75%20-%20LoRaWAN%20Distance%20Detection%20Sensor%20User%20Manual/WebHome/image-20220610165129-11.png?width=1088&height=595&rev=1.1||alt="image-20220610165129-11.png"]]
375 +[[image:image-20231129085201-1.png||height="515" width="961"]]
469 469  
470 470  
471 -== 2.5 Frequency Plans ==
378 +== 2.6 Frequency Plans ==
472 472  
473 473  
474 474  The DS20L uses OTAA mode and below frequency plans by default. If user want to use it with different frequency plan, please refer the AT command sets.
... ... @@ -489,6 +489,8 @@
489 489  
490 490  * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
491 491  
399 +
400 +
492 492  == 3.2 General Commands ==
493 493  
494 494  
... ... @@ -549,6 +549,9 @@
549 549  )))
550 550  * (((
551 551  Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
461 +
462 +
463 +
552 552  )))
553 553  
554 554  === 3.3.2 Set Interrupt Mode ===
... ... @@ -590,9 +590,10 @@
590 590  * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
591 591  
592 592  
593 -== 3.3.3 Set work mode ==
594 594  
506 +=== 3.3.3 Set work mode ===
595 595  
508 +
596 596  Feature: Switch working mode
597 597  
598 598  (% style="color:blue" %)**AT Command: AT+MOD**
... ... @@ -611,6 +611,8 @@
611 611  
612 612  * **Example:** 0x0A01  ~/~/  Same as AT+MOD=1
613 613  
527 +
528 +
614 614  === 3.3.4 Set threshold and threshold mode ===
615 615  
616 616  
... ... @@ -631,7 +631,23 @@
631 631  
632 632  
633 633  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
634 -|(% rowspan="11" style="color:blue; width:120px" %)**AT+DOL=5,1800,0,0,400**|(% rowspan="6" style="width:240px" %)The first bit sets the limit mode|(% style="width:150px" %)0: Do not use upper and lower limits
549 +|(% rowspan="11" style="color:blue; width:120px" %)(((
550 +
551 +
552 +
553 +
554 +
555 +
556 +
557 +
558 +
559 +
560 +
561 +
562 +
563 +
564 +**AT+DOL=5,1800,0,0,400**
565 +)))|(% rowspan="6" style="width:240px" %)The first bit sets the limit mode|(% style="width:150px" %)0: Do not use upper and lower limits
635 635  |(% style="width:251px" %)1: Use upper and lower limits
636 636  |(% style="width:251px" %)2: Less than the lower limit
637 637  |(% style="width:251px" %)3: Greater than the lower limit
... ... @@ -647,6 +647,8 @@
647 647  
648 648  )))
649 649  
581 +
582 +
650 650  (% style="color:blue" %)**Downlink Command: 0x07**
651 651  
652 652  Format: Command Code (0x07) followed by 9bytes.
... ... @@ -655,8 +655,16 @@
655 655  
656 656  * Example 1: Downlink Payload: 070107080064000190  **~-~-->**  AT+MOD=1,1800,100,0,400
657 657  
591 +* Example 2: Downlink Payload: 070200000064000190  **~-~-->**  AT+MOD=2,0,100,0,400
658 658  
593 +* Example 3: Downlink Payload: 070300000064000190  **~-~-->**  AT+MOD=3,1800,100,0,400
659 659  
595 +* Example 4: Downlink Payload: 070407080000000190  **~-~-->**  AT+MOD=4,0,100,0,400
596 +
597 +* Example 5: Downlink Payload: 070507080000000190  **~-~-->**  AT+MOD=5,1800,100,0,400
598 +
599 +
600 +
660 660  = 4. Battery & Power Consumption =
661 661  
662 662  
... ... @@ -685,6 +685,8 @@
685 685  
686 686  * Update through UART TTL interface: **[[Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]]**.
687 687  
629 +
630 +
688 688  = 6. FAQ =
689 689  
690 690  == 6.1 What is the frequency plan for DS20L? ==
... ... @@ -693,6 +693,33 @@
693 693  DS20L use the same frequency as other Dragino products. User can see the detail from this link:  [[Introduction>>doc:Main.End Device Frequency Band.WebHome||anchor="H1.Introduction"]]
694 694  
695 695  
639 +== 6.2 DS20L programming line ==
640 +
641 +
642 +缺图 后续补上
643 +
644 +feature:
645 +
646 +for AT commands
647 +
648 +Update the firmware of DS20L
649 +
650 +Support interrupt mode
651 +
652 +
653 +== 6.3 LiDAR probe position ==
654 +
655 +
656 +[[image:1701155390576-216.png||height="285" width="307"]]
657 +
658 +The black oval hole in the picture is the LiDAR probe.
659 +
660 +
661 +== 6.4 Interface definition ==
662 +
663 +[[image:image-20231128151132-2.png||height="305" width="557"]]
664 +
665 +
696 696  = 7. Trouble Shooting =
697 697  
698 698  == 7.1 AT Command input doesn't work ==
... ... @@ -745,6 +745,8 @@
745 745  
746 746  * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
747 747  
718 +
719 +
748 748  = 9. ​Packing Info =
749 749  
750 750  
... ... @@ -762,6 +762,8 @@
762 762  
763 763  * Weight / pcs : g
764 764  
737 +
738 +
765 765  = 10. Support =
766 766  
767 767  
1701155076393-719.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +54.6 KB
Content
1701155150328-206.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +54.6 KB
Content
1701155390576-216.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +293.9 KB
Content
image-20231128151132-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +281.2 KB
Content
image-20231129085201-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +70.6 KB
Content