Wiki source code of Outdoor & Indoor signal measuring Solution End User Guide
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{toc/}} | ||
2 | |||
3 | = **1. Introduction** = | ||
4 | |||
5 | == **1.1 What is Outdoor & Indoor signal measuring Solution? ** == | ||
6 | |||
7 | To help customers identify optimal sensor placement locations, we have designed a one-click signal strength measurement solution. All you need is one **LA66 device** and a **Dragino account**. | ||
8 | |||
9 | The **outdoor signal measurement solution** supports simultaneous testing with multiple gateways. It allows for both individual gateway signal map display and combined signal overlay from multiple gateways. | ||
10 | |||
11 | For **indoor signal measurement**, due to the complex layout and numerous obstacles, the user needs to walk to a suitable location before starting the measurement. Measurement points can then be marked on an indoor map, with flexible options to add or remove markers. | ||
12 | |||
13 | Both dashboards support **data export**. | ||
14 | |||
15 | |||
16 | ---- | ||
17 | |||
18 | |||
19 | == **1.2 Features ** == | ||
20 | |||
21 | * Extensive support | ||
22 | ** Only one LA66 and one Dragino account are needed, and the gateway and LNS can be freely matched **High Precision Measurement** | ||
23 | ** High-accuracy sensors | ||
24 | ** Reliable data readings | ||
25 | * **Real-Time measuring** | ||
26 | ** Button to switch receiving data or stop | ||
27 | ** Continuous measuring | ||
28 | * **User-Friendly Interface** | ||
29 | ** Intuitive dashboard design | ||
30 | |||
31 | ---- | ||
32 | |||
33 | == **1.3 Specifications ** == | ||
34 | |||
35 | * **Mobile Support: [[Dedicated mobile app for on-the-go monitoring>>https://www.dropbox.com/scl/fo/qdiwkpcxc03qu2r2w0g46/AKqR2FByUdkoWZPZh-diYfQ?rlkey=t1a1kwlvr93c1459mz9jifers&e=1&st=kji4rdg0&dl=0]]** | ||
36 | * **Device Manual: [[LA66 USB LoRaWAN Adapter User Manual>>https://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LA66%20USB%20LoRaWAN%20Adapter%20User%20Manual/]]** | ||
37 | |||
38 | ---- | ||
39 | |||
40 | |||
41 | = **2. How to Build?** = | ||
42 | |||
43 | == **2.1 Network Structure** == | ||
44 | |||
45 | [[image:结构.png]] | ||
46 | |||
47 | The network structure consists of end nodes and gateways, which work together to measuring signal strength. You can replace gateway and Network Server with which you using.(It should be supported LoRaWAN) | ||
48 | |||
49 | |||
50 | ---- | ||
51 | |||
52 | == **2.1 Get Account** == | ||
53 | |||
54 | To begin, contact your local representative to obtain a customer account or send mail to [[support@dragino.cc>>mailto:support@dragino.cc]] | ||
55 | |||
56 | |||
57 | ---- | ||
58 | |||
59 | == **2.2 Get Devices** == | ||
60 | |||
61 | |||
62 | Reach out to your local representative to acquire the necessary devices for your signal measuring solution. These devices include: | ||
63 | |||
64 | * **End Nodes**: LA66 | ||
65 | * **Gateway(If you want):**For data transmission. | ||
66 | |||
67 | Ensure that all devices are pre-registered on **Dragino** before use. | ||
68 | |||
69 | |||
70 | ---- | ||
71 | |||
72 | == **2.3 Register Devices & Gateways on LNS** == | ||
73 | |||
74 | === **2.3.1 Register Device** === | ||
75 | |||
76 | 1.Have a check of package box to get DEVEUI/ APPEUI/ APPKEY(OTTAKEY) | ||
77 | |||
78 | [[image:1747970430695-168.jpg||height="510" width="852"]] | ||
79 | |||
80 | |||
81 | 2.Register on LNS and replace decoding | ||
82 | |||
83 | * **Decoding for ChirpStack:** | ||
84 | |||
85 | {{code language="none"}} | ||
86 | function decodeUplink(input) { | ||
87 | return { | ||
88 | data: Decode(input.fPort, input.bytes, input.variables) | ||
89 | }; | ||
90 | } | ||
91 | |||
92 | function bytesToString(bytes) { | ||
93 | return decodeURIComponent(bytes.map(b => '%' + b.toString(16).padStart(2, '0')).join('')); | ||
94 | } | ||
95 | |||
96 | function Decode(fPort, bytes, variables) { | ||
97 | var data = {}; | ||
98 | if (bytes.length >= 9) { | ||
99 | data.flag = bytes[0]; | ||
100 | data.Node_type = "LA66"; | ||
101 | data.latitude = parseFloat(((bytes[1] << 24 >>> 0 | bytes[2] << 16 | bytes[3] << 8 | bytes[4]) / 1e6).toFixed(6)); | ||
102 | data.longitude = parseFloat(((bytes[5] << 24 >>> 0 | bytes[6] << 16 | bytes[7] << 8 | bytes[8]) / 1e6).toFixed(6)); | ||
103 | |||
104 | // 剩余字节为 title(如果存在) | ||
105 | if (bytes.length > 9) { | ||
106 | const titleBytes = bytes.slice(9); | ||
107 | data.title = bytesToString(titleBytes); | ||
108 | } | ||
109 | } | ||
110 | return data; | ||
111 | } | ||
112 | {{/code}} | ||
113 | |||
114 | |||
115 | |||
116 | * **Decoding for TTN:** | ||
117 | |||
118 | {{code language="none"}} | ||
119 | function add0(m){return m<10?'0'+m:m } | ||
120 | function format(shijianchuo){ | ||
121 | //shijianchuo是整数,否则要parseInt转换 | ||
122 | var time = new Date(shijianchuo); | ||
123 | var y = time.getFullYear(); | ||
124 | var m = time.getMonth()+1; | ||
125 | var d = time.getDate(); | ||
126 | var h = time.getHours(); | ||
127 | var mm = time.getMinutes(); | ||
128 | var s = time.getSeconds(); | ||
129 | return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s); | ||
130 | } | ||
131 | |||
132 | function Decoder(bytes) { | ||
133 | var data={}; | ||
134 | var doorflg | ||
135 | if (bytes[0]===1){ | ||
136 | doorflg = "indoor" | ||
137 | } | ||
138 | else{ | ||
139 | doorflg = "outdoor" | ||
140 | } | ||
141 | if (bytes.length==13){ | ||
142 | data.doorflg = doorflg | ||
143 | data.latitude=parseFloat(((bytes[1]<<24|bytes[2]<<16|bytes[3]<<8|bytes[4])/1000000).toFixed(6)); | ||
144 | data.longitude=parseFloat(((bytes[5]<<24|bytes[6]<<16|bytes[7]<<8|bytes[8])/1000000).toFixed(6)); | ||
145 | timestamp1=bytes[9]<<24|bytes[10]<<16|bytes[11]<<8|bytes[12]; | ||
146 | data.timestamp=timestamp1; | ||
147 | data.beijintime=format((timestamp1+28800)*1000); | ||
148 | return data; | ||
149 | } | ||
150 | else if(bytes.length==9){ | ||
151 | data.doorflg = doorflg | ||
152 | data.Node_type = "LA66" | ||
153 | data.latitude=parseFloat(((bytes[1]<<24|bytes[2]<<16|bytes[3]<<8|bytes[4])/1000000).toFixed(6)); | ||
154 | data.longitude=parseFloat(((bytes[5]<<24|bytes[6]<<16|bytes[7]<<8|bytes[8])/1000000).toFixed(6)); | ||
155 | return data; | ||
156 | } | ||
157 | } | ||
158 | {{/code}} | ||
159 | |||
160 | * If you using other LNS, you can code yourself(The first nine bits of the uploaded data are the flag bit + position, and the rest are the title) or send mail to [[support@dragino.cc>>mailto:support@dragino.cc]] | ||
161 | |||
162 | ---- | ||
163 | |||
164 | |||
165 | === **2.2.2 Register Gateway(If you use Dragino's gateway)** === | ||
166 | |||
167 | When you receive the gateway, you need to register the gateway to the server for it to work properly, here are the instructions for registering the gateway to the server:[[How to register gateway to server - ThingsEye Wiki>>url:https://wiki.thingseye.io/xwiki/bin/view/Main/How%20to%20register%20gateway%20to%20server/]] | ||
168 | |||
169 | |||
170 | ---- | ||
171 | |||
172 | == **2.4 Import device to Dragino map** == | ||
173 | |||
174 | 1. After log in Dragino platform, click the button "Import-Dragino-map"an choose the LNS you using.[[image:1747971716633-666.png]] | ||
175 | 1. ((( | ||
176 | Example of TTN: Imput your TTN account and password (It's will be hashed and we cannot see it.)[[image:1747984882996-168.png]] | ||
177 | ))) | ||
178 | 1. Example of ChirpStack[[image:1747972538335-599.png]] | ||
179 | |||
180 | ---- | ||
181 | |||
182 | |||
183 | = **3. How To Use?** = | ||
184 | |||
185 | == **3.1 Outdoor_signal dashboard** == | ||
186 | |||
187 | Outdoors_signal supports viewing both the signal coverage of a single gateway and the combined coverage of all gateways. | ||
188 | |||
189 | |||
190 | === **3.1.1 Create the gateway layer.** === | ||
191 | |||
192 | (% class="wikigeneratedid" id="HClickthecenterbuttonontherighttoaddagatewaylayer.28PleasecreatealldevicesthatcanacceptthecurrentLA66frequencyband3Botherwise2Cthereceiveddatawillnotbedisplayed.29" %) | ||
193 | Click the center button on the right to add a gateway layer. (Please create all devices that can accept the current LA66 frequency band; otherwise, the received data will not be displayed.) | ||
194 | |||
195 | For example, here we created a gateway with the ID a84041fdfe27e8fa | ||
196 | |||
197 | You can click here to modify the gateway layer ID (it must correspond one-to-one with the gateway ID that will receive the data). | ||
198 | |||
199 | [[image:1747986037475-165.png||height="263" width="202"]][[image:1747986042208-121.png||height="240" width="698"]] | ||
200 | |||
201 | ---- | ||
202 | |||
203 | Click here to delete the gateway layer. | ||
204 | |||
205 | [[image:1747987031250-278.png]] | ||
206 | |||
207 | ---- | ||
208 | |||
209 | Click row of gateway layer will turn to the detail page, this page will be blank before gateway upload data. | ||
210 | |||
211 | [[image:1747987048124-685.png]] | ||
212 | |||
213 | [[image:1747986100902-572.png]] | ||
214 | |||
215 | ---- | ||
216 | |||
217 | Click the top-left corner to return. | ||
218 | |||
219 | [[image:1747986126468-649.png]] | ||
220 | |||
221 | ---- | ||
222 | |||
223 | === **3.1.2 Measuring** === | ||
224 | |||
225 | Insert the LA66 into phone or tablet, press the button to switch to ON and start detection. Click the button in the top-right corner of the main page to start receiving data. Data will be uploaded every 6 seconds based on the tablet's location. Simply move the tablet to measure signal strength from different places. | ||
226 | |||
227 | [[image:1747986749464-319.png]] | ||
228 | |||
229 | [[image:1747986749481-994.png]] | ||
230 | |||
231 | ---- | ||
232 | |||
233 | When the gateway received the first set of data, the current gateway will appear in the left-side list of the gateway interface. When received the second set of data, the current signal strength will be displayed on the right-side map. | ||
234 | |||
235 | The measured data will be displayed in translucent dots of different colors, green represents a good signal, and red represents a poor signal. | ||
236 | |||
237 | [[image:1747986767106-937.png]] | ||
238 | |||
239 | ---- | ||
240 | |||
241 | You can click here to edit the device remarks. | ||
242 | |||
243 | [[image:1747986767111-752.png]] | ||
244 | |||
245 | ---- | ||
246 | |||
247 | You can click here to delete the device (deletion is irreversible, please proceed with caution). | ||
248 | |||
249 | [[image:1747986795269-205.png]] | ||
250 | |||
251 | ---- | ||
252 | |||
253 | All data collected by the gateways will also be displayed in All_signal simultaneously. | ||
254 | |||
255 | [[image:1747986804422-604.png]] | ||
256 | |||
257 | ---- | ||
258 | |||
259 | === **3.1.3 Turn OFF to stop measuring** === | ||
260 | |||
261 | Once the current location's detection is complete, press the button again to switch to OFF and pause detection. | ||
262 | |||
263 | [[image:1747986837136-535.png]] | ||
264 | |||
265 | [[image:1747986837140-142.png]] | ||
266 | |||
267 | |||
268 | ---- | ||
269 | |||
270 | |||
271 | == **3.2 Indoors_signal dashboard** == | ||
272 | |||
273 | Indoors_signal supports measuring and marking the signal strength of all locations on the indoor floor plan. | ||
274 | |||
275 | |||
276 | === **3.2.1 Import the map** === | ||
277 | |||
278 | Drag the map image here and click √ to import. | ||
279 | |||
280 | [[image:1747988839599-466.png]] | ||
281 | |||
282 | |||
283 | ---- | ||
284 | |||
285 | === **3.2.2 Measuring** === | ||
286 | |||
287 | 1.Mark on map where you want to measuring. | ||
288 | |||
289 | [[image:1747989357653-920.png]] | ||
290 | |||
291 | ---- | ||
292 | |||
293 | 2.Move to the measurement point, insert the LA66, and press the button to switch to ON, then you can see the new data renewing. | ||
294 | |||
295 | [[image:1747989390983-409.png]] | ||
296 | |||
297 | ---- | ||
298 | |||
299 | 3.Mark the next place which to be measured than move to the measurement point.Repeat the above steps to measure(**Remeber: Mark point firstly! Before move.**) | ||
300 | |||
301 | [[image:1747989610262-739.png]] | ||
302 | |||
303 | ---- | ||
304 | |||
305 | 4.Click button to Off to stop measuring. | ||
306 | |||
307 | [[image:1747990097160-601.png]] | ||
308 | |||
309 | |||
310 | ---- | ||
311 | |||
312 | === **3.2.3 Delete point** === | ||
313 | |||
314 | Click the marking points, then click yes. | ||
315 | |||
316 | [[image:1747990239939-767.png]][[image:1747990232590-510.png]] | ||
317 | |||
318 | [[image:1747990416072-770.png]] | ||
319 | |||
320 | |||
321 | |||
322 | ---- | ||
323 | |||
324 | |||
325 | == **4. Use of Tablet** == | ||
326 | |||
327 | For added convenience, you can use a tablet to access the **ThingsEye.io** platform. This allows for real-time monitoring and management of your food safety solution on the go. | ||
328 | |||
329 | * **Download APP: **Scan the QR code or click the link to download the app. | ||
330 | |||
331 | | |**QR code**|**Link** | ||
332 | |**Google Play**|[[image:https://wiki.thingseye.io/xwiki/bin/download/Main/%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8BThingsEye%20Food%20Safety%20Solution%20End%20User%20Guide/WebHome/1739501688627-693.png?rev=1.1||alt="1739501688627-693.png"]]|[[https:~~/~~/play.google.com/store/apps/details?id=com.teyiwulian.thingseye.app>>url:https://play.google.com/store/apps/details?id=com.teyiwulian.thingseye.app]] | ||
333 | |**APP Store**|[[image:https://wiki.thingseye.io/xwiki/bin/download/Main/%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8BThingsEye%20Food%20Safety%20Solution%20End%20User%20Guide/WebHome/1739501688627-907.png?rev=1.1||alt="1739501688627-907.png"]]|[[https:~~/~~/apps.apple.com/us/app/thingseye-io/id6739418014>>url:https://apps.apple.com/us/app/thingseye-io/id6739418014]] | ||
334 | |||
335 | After that you can use your dashboard as normal.The display is as follows: |