Changes for page Mapwize

Last modified by Xiaoling on 2023/04/23 15:31

From version 28.10
edited by Xiaoling
on 2022/07/25 13:58
Change comment: There is no comment for this version
To version 1.4
edited by Xiaoling
on 2022/05/17 10:16
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,28 +1,20 @@
1 -**~ Table of Contents:**
1 +**Contents:**
2 2  
3 3  {{toc/}}
4 4  
5 5  
6 += 1. Introduction =
6 6  
7 -
8 -= 1.  Introduction =
9 -
10 -
11 11  This article shows how to use [[LBT1>>url:http://www.dragino.com/products/lora-lorawan-end-node/item/165-lbt1.html]] to build an Indoor Positioning Solution.
12 12  
10 +[[image:https://wiki.dragino.com/images/thumb/1/1a/LBT1_Mapwize_1.png/600px-LBT1_Mapwize_1.png||height="511" width="600"]]
13 13  
14 -[[image:image-20220526150521-2.png]]
15 -
16 16  LBT1 Indoor Positioning Network Structure
17 17  
14 += 2. Prepare Map =
18 18  
16 +== 2.1 Prepare iBeacons ==
19 19  
20 -= 2.  Prepare Map =
21 -
22 -
23 -== 2.1  Prepare iBeacons ==
24 -
25 -
26 26  (((
27 27  (((
28 28  Any BLE iBeacons should work in this solution, each iBeacon stands for a fix position in the map. Here is an iBeacon for example.
... ... @@ -38,17 +38,13 @@
38 38  (((
39 39  (((
40 40  BCN01 iBeacon from Dragino: [[http:~~/~~/www.dragino.com/products/accessories/item/166-bcn01.html>>url:http://www.dragino.com/products/accessories/item/166-bcn01.html]]
41 -
42 -
43 43  )))
44 44  )))
45 45  
46 -[[image:image-20220526150651-4.png]]
36 +[[image:https://wiki.dragino.com/images/thumb/8/88/Ibeacon1.png/300px-Ibeacon1.png||height="169" width="300"]]
47 47  
48 48  BCN01 iBeacon
49 49  
50 -
51 -
52 52  (((
53 53  (((
54 54  We need to get the UUID, MAJOR, MINOR, TXPOWER where each iBeacon is placed. We can get it with the iBeacon software, such as "EW-beacon".
... ... @@ -55,106 +55,77 @@
55 55  )))
56 56  )))
57 57  
58 -[[image:image-20220526150743-5.png]]
46 +[[image:https://wiki.dragino.com/images/thumb/f/fa/Ibeacon2.jpg/400px-Ibeacon2.jpg||height="867" width="400"]]
59 59  
60 60  beacon software
61 61  
62 62  
51 +[[image:https://wiki.dragino.com/images/thumb/f/f2/Ibeacon3.jpg/400px-Ibeacon3.jpg||height="867" width="400"]]
63 63  
64 -[[image:image-20220526150824-6.png]]
65 -
66 66  beacon software
67 67  
55 +== 2.2 Create Map ==
68 68  
69 -
70 -== 2.2  Create Map ==
71 -
72 -
73 73  (((
74 74  (((
75 75  Here we use the indoor map at [[https:~~/~~/studio.mapwize.io/>>url:https://studio.mapwize.io/]]. Below shows the steps for create a map and put the iBeacon on a fix position.
76 -
77 -
78 78  )))
79 79  )))
80 80  
81 81  (((
82 82  (((
83 -**~1. Register an account at [[https:~~/~~/studio.mapwize.io/>>url:https://studio.mapwize.io/]] to create an indoor map.**
65 +~1. Register an account at [[https:~~/~~/studio.mapwize.io/>>url:https://studio.mapwize.io/]] to create an indoor map.
84 84  )))
85 85  )))
86 86  
87 87  (((
88 88  (((
89 -**2. Create Place Types.**
90 -
91 -
71 +2. Create Place Types.
92 92  )))
93 93  )))
94 94  
95 -[[image:image-20220526150915-7.png]]
75 +[[image:https://wiki.dragino.com/images/thumb/4/4d/Beacon10.png/600px-Beacon10.png||height="274" width="600"]]
96 96  
97 97  Create place types
98 98  
79 +3. Search Venues. (Indoor map area identification)
99 99  
81 +[[image:https://wiki.dragino.com/images/thumb/e/e8/Beacon11.jpg/600px-Beacon11.jpg||alt="Beacon11.jpg" height="324" width="600"]]
100 100  
101 -**3. Search Venues. (Indoor map area identification)**
102 -
103 -
104 -[[image:image-20220526151046-8.png]]
105 -
106 -
107 107  (((
108 108  (((
109 109  The map accurately places the beacon of ibeacon, which is the reference for positioning. At this time, UUID, MAJOR and MINOR must be filled in correctly.
110 -
111 -
112 -
113 113  )))
114 114  )))
115 115  
116 -**4. Upload Floor plan.**
89 +4. Upload Floor plan.
117 117  
91 +[[image:https://wiki.dragino.com/images/thumb/d/d1/Beacon12.png/600px-Beacon12.png||height="197" width="600"]]
118 118  
119 -[[image:image-20220526151223-9.png]]
120 -
121 121  add images
122 122  
95 +5. Create Layer
123 123  
97 +[[image:https://wiki.dragino.com/images/thumb/0/0e/Beacon13.png/600px-Beacon13.png||height="208" width="600"]]
124 124  
125 -**5. Create Layer**
126 -
127 -
128 -[[image:image-20220526151305-10.png]]
129 -
130 130  create layer
131 131  
132 -
133 133  (((
134 -**6. Add iBeacon position info. Drag the iBeacon to match position and input the UUID, MAJOR and MINOR of this iBeacon.**
135 -
136 -
102 +6. Add iBeacon position info. Drag the iBeacon to match position and input the UUID, MAJOR and MINOR of this iBeacon.
137 137  )))
138 138  
139 -[[image:image-20220526151519-11.png]]
105 +[[image:https://wiki.dragino.com/images/thumb/1/1d/Beacon14.png/600px-Beacon14.png||height="261" width="600"]]
140 140  
141 141  create iBeacon
142 142  
109 += 3. Configure TTN =
143 143  
111 +== 3.1 Configure LBT1 to Upload data to TTN ==
144 144  
145 -= 3.  Configure TTN =
113 +Please refer the instruction in the [[User Manual>>url:http://www.dragino.com/downloads/index.php?dir=accessories/Bluetooth/BCN01]]. Note the LBT1 need to set to MOD=3 here.
146 146  
115 +== 3.2 Decoder in TTN ==
147 147  
148 -== 3.1  Configure LBT1 to Upload data to TTN ==
149 -
150 -
151 -Please refer the instruction in the [[User Manual>>url:http://www.dragino.com/downloads/index.php?dir=accessories/Bluetooth/BCN01]]. Note the (% style="color:#4f81bd" %)**LBT1 need to set to MOD=3**(%%) here.
152 -
153 -
154 -
155 -== 3.2  Decoder in TTN ==
156 -
157 -
158 158  (% class="box" %)
159 159  (((
160 160  function Decoder(bytes, port) {
... ... @@ -235,223 +235,164 @@
235 235  
236 236  )))
237 237  
197 += 4. Set Up Converter Server =
238 238  
239 -
240 -= 4.  Set Up Converter Server =
241 -
242 -
243 243  * (((
244 -(% style="color:blue" %)**How to install and run this service on Linux?**
200 +How to install and run this service on Linux?
245 245  )))
246 246  
247 247  (((
248 -(% style="color:red" %)**Step1.**(%%)  Rent a Linux on Amazon cloud or alicloud to the host, and pre install the Linux system (Debian, Ubuntu, CentOS are available for distribution).
204 +Step1.Rent a Linux on Amazon cloud or alicloud to the host, and pre install the Linux system (Debian, Ubuntu, CentOS are available for distribution).
249 249  )))
250 250  
251 251  (((
252 -(% style="color:red" %)**Step2.**(%%)  Run the code on the server after compiling. Compilation requires the support of libcurl. First, compile libmqtt in the code, and then compile location.
253 -
254 -
208 +Step2.Run the code on the server after compiling. Compilation requires the support of libcurl. First, compile libmqtt in the code, and then compile location.
255 255  )))
256 256  
257 257  (((
258 -**System:  Debian / Ubuntu**
212 +
213 +System: Debian / Ubuntu
259 259  )))
260 260  
261 261  (% class="box" %)
262 262  (((
263 -(% style="color:blue" %)**step:**(%%)
264 -\\1. **sudo** apt install libcurl4-dev 
265 -\\2. **sudo** apt **install  gcc automake autoconf** libtool **make** cmake
266 -\\3. git clone -b master https:~/~/github.com/mikayong/location.git
267 -\\4. cd location/libmqtt
268 -\\5. mkdir build
269 -\\6. cd build && cmake ../
270 -\\7. make && sudo make install 
271 -\\8. cd ../
272 -\\9. make 
273 -\\10. sudo cp location_conf.json  /etc/
274 -\\11. Edit the configuration file, and run the location service in the background: ./location &
218 +step:
219 +
220 +~1. sudo apt install libcurl4-dev 
221 +
222 +2. sudo apt install  gcc automake autoconf libtool make cmake
223 +
224 +3. git clone -b master https:~/~/github.com/mikayong/location.git
225 +
226 +4. cd location/libmqtt
227 +
228 +5. mkdir build
229 +
230 +6. cd build && cmake ../
231 +
232 +7. make && sudo make install 
233 +
234 +8. cd ../
235 +
236 +9. make 
237 +
238 +10. sudo cp location_conf.json  /etc/
239 +
240 +~11. Edit the configuration file, and run the location service in the background: ./location &
275 275  )))
276 276  
277 277  (((
278 -(% style="color:red" %)**Step3.**(%%)** **The location service subscribes to the lora information stream on TTN through the mqtt protocol, parses the information to generate a geographic location, and finally creates a geographic location on the mapwize map. The following is the configuration of the location service, the configuration file is in json format, the file is /etc/location_conf.json
279 -
280 -
281 -
244 +Step3.The location service subscribes to the lora information stream on TTN through the mqtt protocol, parses the information to generate a geographic location, and finally creates a geographic location on the mapwize map. The following is the configuration of the location service, the configuration file is in json format, the file is /etc/location_conf.json
282 282  )))
283 283  
284 -= 5.  Configuration file: location_conf.json =
247 += 5. Configuration file: location_conf.json =
285 285  
249 +* We use the 120.78.138.177 server as an example. The location service is currently installed on the 120.78.138.177 server, the code is in /root/location, and the configuration file for running location pre-read directly is /etc/location_conf.json.
286 286  
287 -* (((
288 -(% style="color:blue" %)**We use the 120.78.138.177 server as an example. The location service is currently installed on the 120.78.138.177 server, the code is in /root/location, and the configuration file for running location pre-read directly is /etc/location_conf.json.**
289 -
290 -
291 -)))
292 -
293 -(((
294 294  { "location_conf": {
295 -)))
296 296  
297 -(% class="box" %)
298 -(((
299 -(((
300 - "loctype": "indoor",       ~/~/ indoor/outdoor
301 - "locmap": "mapwize"    ~/~/   Map interface: mapwize, traccar
302 -)))
303 -)))
253 +{{{ "loctype": "indoor", // indoor/outdoor
254 + "locmap": "mapwize" // Map interface: mapwize, traccar
255 +}}}
304 304  
305 -(((
306 306  }, "mqtt_conf": {
307 -)))
308 308  
309 -(% class="box" %)
310 -(((
311 -(((
312 - "servaddr": "[str]",    ~/~/     Lorawan server address: Refer to TTN app handler:eu.thethings.network
313 - "servport": [int],       ~/~/   Lorawan server port: 1883
314 - "clientid": "[str]",       ~/~/   MQTT client identity: Custom
315 - "qos":[int],                 ~/~/  (Optional) MQTT service quality: 0
316 - "username":"[str]",     ~/~/   Agent name of mqtt: application ID of TTN
317 - "password":"[str]",      ~/~/  The proxy password of mqtt: application access key of TTN
318 - "topic":"[str]",              ~/~/ The topic of mqtt subscription: TTN is + / devices / + / up
319 - "connection":"[str]" },   ~/~/(Optional) mqtt is a string used for direct connection, composed of serveraddr and port
320 - "mapwize_conf":{          ~/~/Map settings
321 - "apikey": "[str]",        ~/~/ The apikey of the map user can be found on the Api keys page of wapwize, and read and write permissions need to be set
322 - "venueid":"[str]",        ~/~/ (Optional)Indoor map area identification
323 - "orgid":"[str]",           ~/~/  The identity of the user organizer
324 - "universesid":"[str]",   ~/~/The range indicator of the indoor map, find it on the universes page
325 - "placetype": "[str]"     ~/~/The type of place used to identify the creation must be created on the placetypes page in the map, where the placetype name is filled in
259 +{{{ "servaddr": "[str]", // Lorawan server address: Refer to TTN app handler:eu.thethings.network
260 + "servport": [int], // Lorawan server port: 1883
261 + "clientid": "[str]", // MQTT client identity: Custom
262 + "qos":[int], // (Optional) MQTT service quality: 0
263 + "username":"[str]", // Agent name of mqtt: application ID of TTN
264 + "password":"[str]", // The proxy password of mqtt: application access key of TTN
265 + "topic":"[str]", // The topic of mqtt subscription: TTN is + / devices / + / up
266 + "connection":"[str]" }, //(Optional) mqtt is a string used for direct connection, composed of serveraddr and port
267 +"mapwize_conf":{ //Map settings
268 + "apikey": "[str]", // The apikey of the map user can be found on the Api keys page of wapwize, and read and write permissions need to be set
269 + "venueid":"[str]", // (Optional)Indoor map area identification
270 + "orgid":"[str]", // The identity of the user organizer
271 + "universesid":"[str]", //The range indicator of the indoor map, find it on the universes page
272 + "placetype": "[str]" //The type of place used to identify the creation must be created on the placetypes page in the map, where the placetype name is filled in
326 326   },
327 327  "loracloud":{
328 - "token":  "[str]"          ~/~/The password string of loracloud location service, the outdoor map must fill in the account token of loracloud
329 -)))
330 -)))
275 + "token": "[str]" //The password string of loracloud location service, the outdoor map must fill in the account token of loracloud
276 +}}}
331 331  
332 -(((
333 333  }
334 -)))
335 335  
336 -(% class="box" %)
337 -(((
338 -(((
339 -"rssi_conf": {
340 - "rssirate": [int],          ~/~/ (Optional) A basis for rssi calculation distance, the rssi value (absolute value) when the beacon is 1 meter apart 
341 - "rssidiv": [float] }        ~/~/ (Optional) rssi measures an attenuation value of distance. As the distance to the beacon is farther, the value changes speed
342 -)))
343 -)))
280 +{{{"rssi_conf": {
281 + "rssirate": [int], // (Optional) A basis for rssi calculation distance, the rssi value (absolute value) when the beacon is 1 meter apart
282 + "rssidiv": [float] } // (Optional) rssi measures an attenuation value of distance. As the distance to the beacon is farther, the value changes speed
283 +}}}
344 344  
345 -(((
346 346  }
347 347  
287 +* Parameter acquisition method of configuration file:
348 348  
349 -
350 -)))
289 +{{{"username":"[str]"
290 +}}}
351 351  
352 -* (% style="color:blue" %)**Parameter acquisition method of configuration file:**
292 +[[image:https://wiki.dragino.com/images/thumb/d/da/Beacon50.png/600px-Beacon50.png||height="185" width="600"]]
353 353  
354 -
355 -
356 -(% class="box" %)
357 -(((
358 -**"username":"[str]" **
359 -)))
360 -
361 -
362 -[[image:image-20220526151707-12.png]]
363 -
364 364  username
365 365  
296 +{{{"password":"[str]"
297 +}}}
366 366  
299 +[[image:https://wiki.dragino.com/images/thumb/b/bd/Beacon51.png/600px-Beacon51.png||height="260" width="600"]]
367 367  
368 -(% class="box" %)
369 -(((
370 -**"password":"[str]" **
371 -)))
372 -
373 -[[image:image-20220526151736-13.png]]
374 -
375 375  password
376 376  
303 +{{{"apikey": "[str]"
304 +}}}
377 377  
306 +[[image:https://wiki.dragino.com/images/thumb/5/53/Qwe3.png/600px-Qwe3.png||height="321" width="600"]]
378 378  
379 -(% class="box" %)
380 -(((
381 -**"apikey": "[str]" **
382 -)))
383 -
384 -[[image:image-20220526151819-14.png||height="588" width="1203"]]
385 -
386 386  apikey
387 387  
310 +{{{"orgid":"[str]"
311 +}}}
388 388  
313 +[[image:https://wiki.dragino.com/images/thumb/f/f4/Qwe4.png/600px-Qwe4.png||height="293" width="600"]]
389 389  
390 -(% class="box" %)
391 -(((
392 -**"orgid":"[str]"**
393 -)))
394 -
395 -[[image:image-20220526152014-15.png]]
396 -
397 397  orgid
398 398  
317 +{{{"universesid":"[str]"
318 +}}}
399 399  
320 +[[image:https://wiki.dragino.com/images/thumb/9/9a/Qwe5.jpg/600px-Qwe5.jpg||height="424" width="600"]]
400 400  
401 -(% class="box" %)
402 -(((
403 -**"universesid":"[str]"**
404 -)))
405 -
406 -[[image:image-20220526152115-16.png]]
407 -
408 408  universesid
409 409  
324 +{{{"placetype": "[str]"
325 +}}}
410 410  
327 +[[image:https://wiki.dragino.com/images/thumb/9/93/Qwe6.png/600px-Qwe6.png||height="318" width="600"]]
411 411  
412 -(% class="box" %)
413 -(((
414 -**"placetype": "[str]"**
415 -)))
416 -
417 -[[image:image-20220526152150-17.png]]
418 -
419 419  placetype
420 420  
421 421  
332 +* Here are two ways to enter the server
333 +* WinSCP
422 422  
423 -(% style="color:blue" %)**Here are two ways to enter the server:**
335 +[[image:https://wiki.dragino.com/images/thumb/6/6b/Ibeacon4.jpg/600px-Ibeacon4.jpg||height="385" width="600"]]
424 424  
425 -(% style="color:red" %)**1. WinSCP**
337 +[[image:https://wiki.dragino.com/images/thumb/7/78/Ibeacon5.jpg/600px-Ibeacon5.jpg||height="385" width="600"]]
426 426  
427 -[[image:image-20220526152303-18.png]]
339 +[[image:https://wiki.dragino.com/images/thumb/c/cd/Ibeacon6.jpg/600px-Ibeacon6.jpg||height="363" width="600"]]
428 428  
429 -
430 -[[image:image-20220526152355-19.png]]
431 -
432 -
433 -[[image:image-20220526152912-20.png]]
434 -
435 435  way1
436 436  
343 +* secureCRT
437 437  
345 +[[image:https://wiki.dragino.com/images/thumb/7/7b/Ibeacon7.jpg/600px-Ibeacon7.jpg||height="326" width="600"]]
438 438  
439 -(% style="color:red" %)**2. secureCRT**
347 +[[image:https://wiki.dragino.com/images/thumb/6/64/Ibeacon8.jpg/600px-Ibeacon8.jpg||height="326" width="600"]]
440 440  
441 -[[image:image-20220526153145-22.png]]
349 +[[image:https://wiki.dragino.com/images/thumb/d/de/Ibeacon9.jpg/600px-Ibeacon9.jpg||height="326" width="600"]]
442 442  
443 -[[image:image-20220526153236-23.png]]
444 -
445 -[[image:image-20220526153304-24.png]]
446 -
447 447  way2
448 448  
353 += 6. Test Result =
449 449  
450 -
451 -= 6.  Test Result =
452 -
453 -
454 454  The real-time position on the map is obtained according to the moving change of LBT1.
455 455  
456 -
457 -[[image:image-20220526153424-25.png||height="693" width="1414"]]
357 +[[image:https://wiki.dragino.com/images/thumb/7/70/Beacon15.png/600px-Beacon15.png||alt="Beacon15.png" height="294" width="600"]]
image-20220526150442-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -299.8 KB
Content
image-20220526150521-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -213.8 KB
Content
image-20220526150629-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -22.9 KB
Content
image-20220526150651-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -36.9 KB
Content
image-20220526150743-5.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -121.1 KB
Content
image-20220526150824-6.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -114.2 KB
Content
image-20220526150915-7.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -62.1 KB
Content
image-20220526151046-8.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -187.2 KB
Content
image-20220526151223-9.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -43.4 KB
Content
image-20220526151305-10.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -56.8 KB
Content
image-20220526151519-11.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -220.3 KB
Content
image-20220526151707-12.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -16.3 KB
Content
image-20220526151736-13.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -45.8 KB
Content
image-20220526151819-14.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -53.9 KB
Content
image-20220526152014-15.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -258.0 KB
Content
image-20220526152115-16.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -88.0 KB
Content
image-20220526152150-17.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -57.2 KB
Content
image-20220526152303-18.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -361.6 KB
Content
image-20220526152355-19.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -662.7 KB
Content
image-20220526152912-20.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -299.3 KB
Content
image-20220526153123-21.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -209.6 KB
Content
image-20220526153145-22.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -146.1 KB
Content
image-20220526153236-23.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -106.9 KB
Content
image-20220526153304-24.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -267.9 KB
Content
image-20220526153424-25.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -370.0 KB
Content