... |
... |
@@ -81,8 +81,10 @@ |
81 |
81 |
[[image:https://wiki.dragino.com/images/thumb/e/e8/Beacon11.jpg/600px-Beacon11.jpg||alt="Beacon11.jpg" height="324" width="600"]] |
82 |
82 |
|
83 |
83 |
((( |
|
84 |
+((( |
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. |
85 |
85 |
))) |
|
87 |
+))) |
86 |
86 |
|
87 |
87 |
4. Upload Floor plan. |
88 |
88 |
|
... |
... |
@@ -96,7 +96,9 @@ |
96 |
96 |
|
97 |
97 |
create layer |
98 |
98 |
|
|
101 |
+((( |
99 |
99 |
6. Add iBeacon position info. Drag the iBeacon to match position and input the UUID, MAJOR and MINOR of this iBeacon. |
|
103 |
+))) |
100 |
100 |
|
101 |
101 |
[[image:https://wiki.dragino.com/images/thumb/1/1d/Beacon14.png/600px-Beacon14.png||height="261" width="600"]] |
102 |
102 |
|
... |
... |
@@ -192,40 +192,53 @@ |
192 |
192 |
|
193 |
193 |
= 4. Set Up Converter Server = |
194 |
194 |
|
195 |
|
-* How to install and run this service on Linux? |
|
199 |
+* ((( |
|
200 |
+How to install and run this service on Linux? |
|
201 |
+))) |
196 |
196 |
|
|
203 |
+((( |
197 |
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). |
|
205 |
+))) |
198 |
198 |
|
|
207 |
+((( |
199 |
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. |
|
209 |
+))) |
200 |
200 |
|
|
211 |
+((( |
201 |
201 |
|
202 |
202 |
System: Debian / Ubuntu |
|
214 |
+))) |
203 |
203 |
|
204 |
|
-{{{step: |
205 |
|
- |
206 |
|
-1. sudo apt install libcurl4-dev |
207 |
|
- |
|
216 |
+(% class="box" %) |
|
217 |
+((( |
|
218 |
+step: |
|
219 |
+ |
|
220 |
+~1. sudo apt install libcurl4-dev |
|
221 |
+ |
208 |
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 |
|
- |
|
223 |
+ |
|
224 |
+3. git clone -b master https:~/~/github.com/mikayong/location.git |
|
225 |
+ |
212 |
212 |
4. cd location/libmqtt |
213 |
|
- |
|
227 |
+ |
214 |
214 |
5. mkdir build |
215 |
|
- |
|
229 |
+ |
216 |
216 |
6. cd build && cmake ../ |
217 |
|
- |
|
231 |
+ |
218 |
218 |
7. make && sudo make install |
219 |
|
- |
|
233 |
+ |
220 |
220 |
8. cd ../ |
221 |
|
- |
|
235 |
+ |
222 |
222 |
9. make |
223 |
|
- |
|
237 |
+ |
224 |
224 |
10. sudo cp location_conf.json /etc/ |
225 |
|
- |
226 |
|
-11. Edit the configuration file, and run the location service in the background: ./location &}}} |
|
239 |
+ |
|
240 |
+~11. Edit the configuration file, and run the location service in the background: ./location & |
|
241 |
+))) |
227 |
227 |
|
|
243 |
+((( |
228 |
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 |
|
245 |
+))) |
229 |
229 |
|
230 |
230 |
= 5. Configuration file: location_conf.json = |
231 |
231 |
|
... |
... |
@@ -233,79 +233,97 @@ |
233 |
233 |
|
234 |
234 |
{ "location_conf": { |
235 |
235 |
|
236 |
|
-{{{ "loctype": "indoor", // indoor/outdoor |
237 |
|
- "locmap": "mapwize" // Map interface: mapwize, traccar |
238 |
|
-}}} |
|
253 |
+(% class="box" %) |
|
254 |
+((( |
|
255 |
+ "loctype": "indoor", ~/~/ indoor/outdoor |
|
256 |
+ "locmap": "mapwize" ~/~/ Map interface: mapwize, traccar |
|
257 |
+))) |
239 |
239 |
|
240 |
240 |
}, "mqtt_conf": { |
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 |
|
261 |
+(% class="box" %) |
|
262 |
+((( |
|
263 |
+ "servaddr": "[str]", ~/~/ Lorawan server address: Refer to TTN app handler:eu.thethings.network |
|
264 |
+ "servport": [int], ~/~/ Lorawan server port: 1883 |
|
265 |
+ "clientid": "[str]", ~/~/ MQTT client identity: Custom |
|
266 |
+ "qos":[int], ~/~/ (Optional) MQTT service quality: 0 |
|
267 |
+ "username":"[str]", ~/~/ Agent name of mqtt: application ID of TTN |
|
268 |
+ "password":"[str]", ~/~/ The proxy password of mqtt: application access key of TTN |
|
269 |
+ "topic":"[str]", ~/~/ The topic of mqtt subscription: TTN is + / devices / + / up |
|
270 |
+ "connection":"[str]" }, ~/~/(Optional) mqtt is a string used for direct connection, composed of serveraddr and port |
|
271 |
+"mapwize_conf":{ ~/~/Map settings |
|
272 |
+ "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 |
|
273 |
+ "venueid":"[str]", ~/~/ (Optional)Indoor map area identification |
|
274 |
+ "orgid":"[str]", ~/~/ The identity of the user organizer |
|
275 |
+ "universesid":"[str]", ~/~/The range indicator of the indoor map, find it on the universes page |
|
276 |
+ "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 |
|
-}}} |
|
279 |
+ "token": "[str]" ~/~/The password string of loracloud location service, the outdoor map must fill in the account token of loracloud |
|
280 |
+))) |
260 |
260 |
|
261 |
261 |
} |
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 |
|
-}}} |
|
284 |
+(% class="box" %) |
|
285 |
+((( |
|
286 |
+"rssi_conf": { |
|
287 |
+ "rssirate": [int], ~/~/ (Optional) A basis for rssi calculation distance, the rssi value (absolute value) when the beacon is 1 meter apart |
|
288 |
+ "rssidiv": [float] } ~/~/ (Optional) rssi measures an attenuation value of distance. As the distance to the beacon is farther, the value changes speed |
|
289 |
+))) |
267 |
267 |
|
268 |
268 |
} |
269 |
269 |
|
270 |
270 |
* Parameter acquisition method of configuration file: |
271 |
271 |
|
272 |
|
-{{{"username":"[str]" |
273 |
|
-}}} |
|
295 |
+(% class="box" %) |
|
296 |
+((( |
|
297 |
+"username":"[str]" |
|
298 |
+))) |
274 |
274 |
|
275 |
275 |
[[image:https://wiki.dragino.com/images/thumb/d/da/Beacon50.png/600px-Beacon50.png||height="185" width="600"]] |
276 |
276 |
|
277 |
277 |
username |
278 |
278 |
|
279 |
|
-{{{"password":"[str]" |
280 |
|
-}}} |
|
304 |
+(% class="box" %) |
|
305 |
+((( |
|
306 |
+"password":"[str]" |
|
307 |
+))) |
281 |
281 |
|
282 |
282 |
[[image:https://wiki.dragino.com/images/thumb/b/bd/Beacon51.png/600px-Beacon51.png||height="260" width="600"]] |
283 |
283 |
|
284 |
284 |
password |
285 |
285 |
|
286 |
|
-{{{"apikey": "[str]" |
287 |
|
-}}} |
|
313 |
+(% class="box" %) |
|
314 |
+((( |
|
315 |
+"apikey": "[str]" |
|
316 |
+))) |
288 |
288 |
|
289 |
289 |
[[image:https://wiki.dragino.com/images/thumb/5/53/Qwe3.png/600px-Qwe3.png||height="321" width="600"]] |
290 |
290 |
|
291 |
291 |
apikey |
292 |
292 |
|
293 |
|
-{{{"orgid":"[str]" |
294 |
|
-}}} |
|
322 |
+(% class="box" %) |
|
323 |
+((( |
|
324 |
+"orgid":"[str]" |
|
325 |
+))) |
295 |
295 |
|
296 |
296 |
[[image:https://wiki.dragino.com/images/thumb/f/f4/Qwe4.png/600px-Qwe4.png||height="293" width="600"]] |
297 |
297 |
|
298 |
298 |
orgid |
299 |
299 |
|
300 |
|
-{{{"universesid":"[str]" |
301 |
|
-}}} |
|
331 |
+(% class="box" %) |
|
332 |
+((( |
|
333 |
+"universesid":"[str]" |
|
334 |
+))) |
302 |
302 |
|
303 |
303 |
[[image:https://wiki.dragino.com/images/thumb/9/9a/Qwe5.jpg/600px-Qwe5.jpg||height="424" width="600"]] |
304 |
304 |
|
305 |
305 |
universesid |
306 |
306 |
|
307 |
|
-{{{"placetype": "[str]" |
308 |
|
-}}} |
|
340 |
+(% class="box" %) |
|
341 |
+((( |
|
342 |
+"placetype": "[str]" |
|
343 |
+))) |
309 |
309 |
|
310 |
310 |
[[image:https://wiki.dragino.com/images/thumb/9/93/Qwe6.png/600px-Qwe6.png||height="318" width="600"]] |
311 |
311 |
|
... |
... |
@@ -312,9 +312,10 @@ |
312 |
312 |
placetype |
313 |
313 |
|
314 |
314 |
|
315 |
|
-* Here are two ways to enter the server |
316 |
|
-* WinSCP |
|
350 |
+**Here are two ways to enter the server:** |
317 |
317 |
|
|
352 |
+**~1. WinSCP** |
|
353 |
+ |
318 |
318 |
[[image:https://wiki.dragino.com/images/thumb/6/6b/Ibeacon4.jpg/600px-Ibeacon4.jpg||height="385" width="600"]] |
319 |
319 |
|
320 |
320 |
[[image:https://wiki.dragino.com/images/thumb/7/78/Ibeacon5.jpg/600px-Ibeacon5.jpg||height="385" width="600"]] |
... |
... |
@@ -323,7 +323,7 @@ |
323 |
323 |
|
324 |
324 |
way1 |
325 |
325 |
|
326 |
|
-* secureCRT |
|
362 |
+**2. secureCRT** |
327 |
327 |
|
328 |
328 |
[[image:https://wiki.dragino.com/images/thumb/7/7b/Ibeacon7.jpg/600px-Ibeacon7.jpg||height="326" width="600"]] |
329 |
329 |
|