Changes for page Mapwize

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

From version 28.11
edited by Xiaoling
on 2023/04/23 15:31
Change comment: There is no comment for this version
To version 1.2
edited by Xiaoling
on 2022/05/17 10:13
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,154 +1,101 @@
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  
19 -= 2.  Prepare Map =
16 +== 2.1 Prepare iBeacons ==
20 20  
21 -== 2.1  Prepare iBeacons ==
22 -
23 -
24 24  (((
25 -(((
26 26  Any BLE iBeacons should work in this solution, each iBeacon stands for a fix position in the map. Here is an iBeacon for example.
27 27  )))
28 -)))
29 29  
30 30  (((
31 -(((
32 32  First of all, user needs to accurately place the beacon at each location, which is the reference for positioning.
33 33  )))
34 -)))
35 35  
36 36  (((
37 -(((
38 38  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]]
39 -
40 -
41 41  )))
42 -)))
43 43  
44 -[[image:image-20220526150651-4.png]]
30 +[[image:https://wiki.dragino.com/images/thumb/8/88/Ibeacon1.png/300px-Ibeacon1.png||height="169" width="300"]]
45 45  
46 46  BCN01 iBeacon
47 47  
48 -
49 -
50 50  (((
51 -(((
52 52  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".
53 53  )))
54 -)))
55 55  
56 -[[image:image-20220526150743-5.png]]
38 +[[image:https://wiki.dragino.com/images/thumb/f/fa/Ibeacon2.jpg/400px-Ibeacon2.jpg||height="867" width="400"]]
57 57  
58 58  beacon software
59 59  
60 60  
43 +[[image:https://wiki.dragino.com/images/thumb/f/f2/Ibeacon3.jpg/400px-Ibeacon3.jpg||height="867" width="400"]]
61 61  
62 -[[image:image-20220526150824-6.png]]
63 -
64 64  beacon software
65 65  
47 +== 2.2 Create Map ==
66 66  
67 -== 2.2  Create Map ==
68 -
69 -
70 70  (((
71 -(((
72 72  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.
73 -
74 -
75 75  )))
76 -)))
77 77  
78 78  (((
79 -(((
80 -**~1. Register an account at [[https:~~/~~/studio.mapwize.io/>>url:https://studio.mapwize.io/]] to create an indoor map.**
54 +~1. Register an account at [[https:~~/~~/studio.mapwize.io/>>url:https://studio.mapwize.io/]] to create an indoor map.
81 81  )))
82 -)))
83 83  
84 84  (((
85 -(((
86 -**2. Create Place Types.**
87 -
88 -
58 +2. Create Place Types.
89 89  )))
90 -)))
91 91  
92 -[[image:image-20220526150915-7.png]]
61 +[[image:https://wiki.dragino.com/images/thumb/4/4d/Beacon10.png/600px-Beacon10.png||height="274" width="600"]]
93 93  
94 94  Create place types
95 95  
65 +3. Search Venues. (Indoor map area identification)
96 96  
67 +[[image:https://wiki.dragino.com/images/thumb/e/e8/Beacon11.jpg/600px-Beacon11.jpg||alt="Beacon11.jpg" height="324" width="600"]]
97 97  
98 -**3. Search Venues. (Indoor map area identification)**
99 -
100 -
101 -[[image:image-20220526151046-8.png]]
102 -
103 -
104 104  (((
105 -(((
106 106  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.
107 -
108 -
109 -
110 110  )))
111 -)))
112 112  
113 -**4. Upload Floor plan.**
73 +4. Upload Floor plan.
114 114  
75 +[[image:https://wiki.dragino.com/images/thumb/d/d1/Beacon12.png/600px-Beacon12.png||height="197" width="600"]]
115 115  
116 -[[image:image-20220526151223-9.png]]
117 -
118 118  add images
119 119  
79 +5. Create Layer
120 120  
81 +[[image:https://wiki.dragino.com/images/thumb/0/0e/Beacon13.png/600px-Beacon13.png||height="208" width="600"]]
121 121  
122 -**5. Create Layer**
123 -
124 -
125 -[[image:image-20220526151305-10.png]]
126 -
127 127  create layer
128 128  
85 +6. Add iBeacon position info. Drag the iBeacon to match position and input the UUID, MAJOR and MINOR of this iBeacon.
129 129  
130 -(((
131 -**6. Add iBeacon position info. Drag the iBeacon to match position and input the UUID, MAJOR and MINOR of this iBeacon.**
87 +[[image:https://wiki.dragino.com/images/thumb/1/1d/Beacon14.png/600px-Beacon14.png||height="261" width="600"]]
132 132  
133 -
134 -)))
135 -
136 -[[image:image-20220526151519-11.png]]
137 -
138 138  create iBeacon
139 139  
91 += 3. Configure TTN =
140 140  
141 -= 3.  Configure TTN =
93 +== 3.1 Configure LBT1 to Upload data to TTN ==
142 142  
143 -== 3.1  Configure LBT1 to Upload data to TTN ==
95 +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.
144 144  
97 +== 3.2 Decoder in TTN ==
145 145  
146 -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.
147 -
148 -
149 -== 3.2  Decoder in TTN ==
150 -
151 -
152 152  (% class="box" %)
153 153  (((
154 154  function Decoder(bytes, port) {
... ... @@ -229,219 +229,151 @@
229 229  
230 230  )))
231 231  
179 += 4. Set Up Converter Server =
232 232  
233 -= 4.  Set Up Converter Server =
181 +* How to install and run this service on Linux?
234 234  
183 +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).
235 235  
236 -* (((
237 -(% style="color:blue" %)**How to install and run this service on Linux?**
238 -)))
185 +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.
239 239  
240 -(((
241 -(% 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).
242 -)))
243 243  
244 -(((
245 -(% 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.
188 +System: Debian / Ubuntu
246 246  
247 -
248 -)))
190 +{{{step:
191
192 +1. sudo apt install libcurl4-dev 
193
194 +2. sudo apt install  gcc automake autoconf libtool make cmake
195
196 +3. git clone -b master https://github.com/mikayong/location.git
197
198 +4. cd location/libmqtt
199
200 +5. mkdir build
201
202 +6. cd build && cmake ../
203
204 +7. make && sudo make install 
205
206 +8. cd ../
207
208 +9. make 
209
210 +10. sudo cp location_conf.json  /etc/
211
212 +11. Edit the configuration file, and run the location service in the background: ./location &}}}
249 249  
250 -(((
251 -**System:  Debian / Ubuntu**
252 -)))
214 +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
253 253  
254 -(% class="box" %)
255 -(((
256 -(% style="color:blue" %)**step:**(%%)
257 -\\1. **sudo** apt install libcurl4-dev 
258 -\\2. **sudo** apt **install  gcc automake autoconf** libtool **make** cmake
259 -\\3. git clone -b master https:~/~/github.com/mikayong/location.git
260 -\\4. cd location/libmqtt
261 -\\5. mkdir build
262 -\\6. cd build && cmake ../
263 -\\7. make && sudo make install 
264 -\\8. cd ../
265 -\\9. make 
266 -\\10. sudo cp location_conf.json  /etc/
267 -\\11. Edit the configuration file, and run the location service in the background: ./location &
268 -)))
216 += 5. Configuration file: location_conf.json =
269 269  
270 -(((
271 -(% 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
218 +* 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.
272 272  
273 -
274 -)))
275 -
276 -= 5.  Configuration file: location_conf.json =
277 -
278 -
279 -* (((
280 -(% 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.**
281 -
282 -
283 -)))
284 -
285 -(((
286 286  { "location_conf": {
287 -)))
288 288  
289 -(% class="box" %)
290 -(((
291 -(((
292 - "loctype": "indoor",       ~/~/ indoor/outdoor
293 - "locmap": "mapwize"    ~/~/   Map interface: mapwize, traccar
294 -)))
295 -)))
222 +{{{ "loctype": "indoor", // indoor/outdoor
223 + "locmap": "mapwize" // Map interface: mapwize, traccar
224 +}}}
296 296  
297 -(((
298 298  }, "mqtt_conf": {
299 -)))
300 300  
301 -(% class="box" %)
302 -(((
303 -(((
304 - "servaddr": "[str]",    ~/~/     Lorawan server address: Refer to TTN app handler:eu.thethings.network
305 - "servport": [int],       ~/~/   Lorawan server port: 1883
306 - "clientid": "[str]",       ~/~/   MQTT client identity: Custom
307 - "qos":[int],                 ~/~/  (Optional) MQTT service quality: 0
308 - "username":"[str]",     ~/~/   Agent name of mqtt: application ID of TTN
309 - "password":"[str]",      ~/~/  The proxy password of mqtt: application access key of TTN
310 - "topic":"[str]",              ~/~/ The topic of mqtt subscription: TTN is + / devices / + / up
311 - "connection":"[str]" },   ~/~/(Optional) mqtt is a string used for direct connection, composed of serveraddr and port
312 - "mapwize_conf":{          ~/~/Map settings
313 - "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
314 - "venueid":"[str]",        ~/~/ (Optional)Indoor map area identification
315 - "orgid":"[str]",           ~/~/  The identity of the user organizer
316 - "universesid":"[str]",   ~/~/The range indicator of the indoor map, find it on the universes page
317 - "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
228 +{{{ "servaddr": "[str]", // Lorawan server address: Refer to TTN app handler:eu.thethings.network
229 + "servport": [int], // Lorawan server port: 1883
230 + "clientid": "[str]", // MQTT client identity: Custom
231 + "qos":[int], // (Optional) MQTT service quality: 0
232 + "username":"[str]", // Agent name of mqtt: application ID of TTN
233 + "password":"[str]", // The proxy password of mqtt: application access key of TTN
234 + "topic":"[str]", // The topic of mqtt subscription: TTN is + / devices / + / up
235 + "connection":"[str]" }, //(Optional) mqtt is a string used for direct connection, composed of serveraddr and port
236 +"mapwize_conf":{ //Map settings
237 + "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
238 + "venueid":"[str]", // (Optional)Indoor map area identification
239 + "orgid":"[str]", // The identity of the user organizer
240 + "universesid":"[str]", //The range indicator of the indoor map, find it on the universes page
241 + "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
318 318   },
319 319  "loracloud":{
320 - "token":  "[str]"          ~/~/The password string of loracloud location service, the outdoor map must fill in the account token of loracloud
321 -)))
322 -)))
244 + "token": "[str]" //The password string of loracloud location service, the outdoor map must fill in the account token of loracloud
245 +}}}
323 323  
324 -(((
325 325  }
326 -)))
327 327  
328 -(% class="box" %)
329 -(((
330 -(((
331 -"rssi_conf": {
332 - "rssirate": [int],          ~/~/ (Optional) A basis for rssi calculation distance, the rssi value (absolute value) when the beacon is 1 meter apart 
333 - "rssidiv": [float] }        ~/~/ (Optional) rssi measures an attenuation value of distance. As the distance to the beacon is farther, the value changes speed
334 -)))
335 -)))
249 +{{{"rssi_conf": {
250 + "rssirate": [int], // (Optional) A basis for rssi calculation distance, the rssi value (absolute value) when the beacon is 1 meter apart
251 + "rssidiv": [float] } // (Optional) rssi measures an attenuation value of distance. As the distance to the beacon is farther, the value changes speed
252 +}}}
336 336  
337 -(((
338 338  }
339 339  
256 +* Parameter acquisition method of configuration file:
340 340  
341 -
342 -)))
258 +{{{"username":"[str]"
259 +}}}
343 343  
344 -* (% style="color:blue" %)**Parameter acquisition method of configuration file:**
261 +[[image:https://wiki.dragino.com/images/thumb/d/da/Beacon50.png/600px-Beacon50.png||height="185" width="600"]]
345 345  
346 -
347 -(% class="box" %)
348 -(((
349 -**"username":"[str]" **
350 -)))
351 -
352 -
353 -[[image:image-20220526151707-12.png]]
354 -
355 355  username
356 356  
265 +{{{"password":"[str]"
266 +}}}
357 357  
268 +[[image:https://wiki.dragino.com/images/thumb/b/bd/Beacon51.png/600px-Beacon51.png||height="260" width="600"]]
358 358  
359 -(% class="box" %)
360 -(((
361 -**"password":"[str]" **
362 -)))
363 -
364 -[[image:image-20220526151736-13.png]]
365 -
366 366  password
367 367  
272 +{{{"apikey": "[str]"
273 +}}}
368 368  
275 +[[image:https://wiki.dragino.com/images/thumb/5/53/Qwe3.png/600px-Qwe3.png||height="321" width="600"]]
369 369  
370 -(% class="box" %)
371 -(((
372 -**"apikey": "[str]" **
373 -)))
374 -
375 -[[image:image-20220526151819-14.png||height="588" width="1203"]]
376 -
377 377  apikey
378 378  
279 +{{{"orgid":"[str]"
280 +}}}
379 379  
282 +[[image:https://wiki.dragino.com/images/thumb/f/f4/Qwe4.png/600px-Qwe4.png||height="293" width="600"]]
380 380  
381 -(% class="box" %)
382 -(((
383 -**"orgid":"[str]"**
384 -)))
385 -
386 -[[image:image-20220526152014-15.png]]
387 -
388 388  orgid
389 389  
286 +{{{"universesid":"[str]"
287 +}}}
390 390  
289 +[[image:https://wiki.dragino.com/images/thumb/9/9a/Qwe5.jpg/600px-Qwe5.jpg||height="424" width="600"]]
391 391  
392 -(% class="box" %)
393 -(((
394 -**"universesid":"[str]"**
395 -)))
396 -
397 -[[image:image-20220526152115-16.png]]
398 -
399 399  universesid
400 400  
293 +{{{"placetype": "[str]"
294 +}}}
401 401  
296 +[[image:https://wiki.dragino.com/images/thumb/9/93/Qwe6.png/600px-Qwe6.png||height="318" width="600"]]
402 402  
403 -(% class="box" %)
404 -(((
405 -**"placetype": "[str]"**
406 -)))
407 -
408 -[[image:image-20220526152150-17.png]]
409 -
410 410  placetype
411 411  
412 412  
301 +* Here are two ways to enter the server
302 +* WinSCP
413 413  
414 -(% style="color:blue" %)**Here are two ways to enter the server:**
304 +[[image:https://wiki.dragino.com/images/thumb/6/6b/Ibeacon4.jpg/600px-Ibeacon4.jpg||height="385" width="600"]]
415 415  
416 -(% style="color:red" %)**1. WinSCP**
306 +[[image:https://wiki.dragino.com/images/thumb/7/78/Ibeacon5.jpg/600px-Ibeacon5.jpg||height="385" width="600"]]
417 417  
418 -[[image:image-20220526152303-18.png]]
308 +[[image:https://wiki.dragino.com/images/thumb/c/cd/Ibeacon6.jpg/600px-Ibeacon6.jpg||height="363" width="600"]]
419 419  
420 -
421 -[[image:image-20220526152355-19.png]]
422 -
423 -
424 -[[image:image-20220526152912-20.png]]
425 -
426 426  way1
427 427  
312 +* secureCRT
428 428  
314 +[[image:https://wiki.dragino.com/images/thumb/7/7b/Ibeacon7.jpg/600px-Ibeacon7.jpg||height="326" width="600"]]
429 429  
430 -(% style="color:red" %)**2. secureCRT**
316 +[[image:https://wiki.dragino.com/images/thumb/6/64/Ibeacon8.jpg/600px-Ibeacon8.jpg||height="326" width="600"]]
431 431  
432 -[[image:image-20220526153145-22.png]]
318 +[[image:https://wiki.dragino.com/images/thumb/d/de/Ibeacon9.jpg/600px-Ibeacon9.jpg||height="326" width="600"]]
433 433  
434 -[[image:image-20220526153236-23.png]]
435 -
436 -[[image:image-20220526153304-24.png]]
437 -
438 438  way2
439 439  
322 += 6. Test Result =
440 440  
441 -= 6.  Test Result =
442 -
443 -
444 444  The real-time position on the map is obtained according to the moving change of LBT1.
445 445  
446 -
447 -[[image:image-20220526153424-25.png||height="693" width="1414"]]
326 +[[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