Changes for page Mapwize

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

From version 1.3
edited by Xiaoling
on 2022/05/17 10:15
Change comment: There is no comment for this version
To version 28.6
edited by Xiaoling
on 2022/07/25 11:39
Change comment: There is no comment for this version

Summary

Details

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