Wiki source code of TCP Connection Instruction
Version 31.1 by Kilight Cao on 2024/01/22 09:54
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | **Table of Contents:** | ||
2 | |||
3 | (% aria-label="macro:toc widget" contenteditable="false" role="region" tabindex="-1" %) | ||
4 | ((( | ||
5 | (% style="background-image:url(http://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||height="15" role="presentation" title="Click and drag to move" width="15"]] | ||
6 | ))) | ||
7 | |||
8 | {{toc/}} | ||
9 | |||
10 | |||
11 | |||
12 | = 1. Introduction = | ||
13 | |||
14 | |||
15 | In the TCP IP Client mode, LoRa Gateway can accept LoRa or LoRaWAN packets and send it to the TCP/IP server. | ||
16 | |||
17 | |||
18 | |||
19 | = 2. LoRaWAN Mode TCP Connection = | ||
20 | |||
21 | == 2.1 Support Hardware == | ||
22 | |||
23 | |||
24 | * [[LPS8>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/148-lps8.html]] | ||
25 | * [[LG308>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/140-lg308.html]], [[DLOS8>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/160-dlos8.html]] | ||
26 | |||
27 | |||
28 | == 2.2 Typology & Instruction == | ||
29 | |||
30 | |||
31 | (% aria-label="image-20220527144058-1.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144058-1.png||data-widget="image"]] | ||
32 | |||
33 | (% style="background-image:url(http://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]](% title="Click and drag to resize" %) | ||
34 | |||
35 | Network Structure | ||
36 | |||
37 | |||
38 | = 3. Raw LoRa Mode TCP Connection = | ||
39 | |||
40 | == 3.1 Support Hardware == | ||
41 | |||
42 | |||
43 | * [[LG01-N>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/143-lg01n.html]], [[OLG01-N>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/144-olg01n.html]] | ||
44 | * [[LG02>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/135-lg02.html]], [[OLG02>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/136-olg02.html]] | ||
45 | |||
46 | |||
47 | == 3.2 Typology == | ||
48 | |||
49 | |||
50 | The working topology is as below. In this mode, The Uplink LoRa packets should use a customized format. | ||
51 | |||
52 | |||
53 | (% aria-label="image-20220527144300-2.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144300-2.png||data-widget="image"]](% title="Click and drag to resize" %) | ||
54 | |||
55 | TCP/IP Forward working topology | ||
56 | |||
57 | |||
58 | == 3.3 Instruction Before Firmware lgw~-~-build-v5.4.1606631585-20201129-1434 == | ||
59 | |||
60 | === 3.3.1 Select TCP-IP Client mode === | ||
61 | |||
62 | |||
63 | (% aria-label="image-20220527144723-3.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144723-3.png||data-widget="image"]](% title="Click and drag to resize" %) | ||
64 | |||
65 | Select TCP-IP Client mode | ||
66 | |||
67 | |||
68 | === 3.3.2 Configure the Radio channel === | ||
69 | |||
70 | |||
71 | (% aria-label="image-20220527144755-4.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144755-4.png||data-widget="image"]](% title="Click and drag to resize" %) | ||
72 | |||
73 | Configure the Radio channel with the match radio settings frequency as the LoRa End Node | ||
74 | |||
75 | |||
76 | === 3.3.3 Configure TCP Server Info === | ||
77 | |||
78 | |||
79 | (% style="color:red" %)**Note: Gateway may receive many LoRa packets, it will only transfer the packet with the same ID as specify in the channel.** | ||
80 | |||
81 | (% aria-label="image-20220527144837-5.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144837-5.png||data-widget="image"]](% title="Click and drag to resize" %) | ||
82 | |||
83 | Configure TCP Server Info | ||
84 | |||
85 | |||
86 | === 3.3.4 About uplink data format from End Node === | ||
87 | |||
88 | |||
89 | The LoRa end node should upload the data with below format: | ||
90 | |||
91 | (% class="box" %) | ||
92 | ((( | ||
93 | Uplink Format:** (% style="color:#4f81bd" %)<Channel_ID>data(%%)** | ||
94 | For example, if we have configured 2 channels 12345 and 34567. | ||
95 | And there is are three LoRa End nodes sending: 12345,34567,78 | ||
96 | The LG02 will accept the data from 12345 and 34567, it will ignore the data from Node 78 | ||
97 | |||
98 | |||
99 | (% style="color:blue" %)**Case 1**:(%%) | ||
100 | Node 12345 send <12345>field1=0.0&field2=1102.0 | ||
101 | Node 34567 doesn’t send anyting | ||
102 | The TCP/IP server will get {"12345":"field1=0.0&field2=1102.0"} | ||
103 | |||
104 | |||
105 | (% style="color:blue" %)**Case 2**:(%%) | ||
106 | Node 12345 send <12345>field1=0.0&field2=1102.0 | ||
107 | Node 34567 send <34567>temp=34 | ||
108 | The TCP/IP server will get {"34567":"temp=34","12345":"field1=0.0&field2=1102.0"} | ||
109 | ))) | ||
110 | |||
111 | (% aria-label="image-20220527144959-6.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527144959-6.png||data-widget="image"]](% title="Click and drag to resize" %) | ||
112 | |||
113 | Configure TCP Server Info | ||
114 | |||
115 | |||
116 | LoRa End Device reference source code: [[check this link>>url:https://github.com/dragino/Arduino-Profile-Examples/blob/master/libraries/Dragino/examples/IoTServer/ThingSpeak/MQTT_Client/MQTT_DHT11_Client_updata_to_ThingSpeak_/MQTT_DHT11_Client_updata_to_ThingSpeak_.ino]]. | ||
117 | |||
118 | |||
119 | == 3.4 Instruction After Firmware lgw~-~-build~-~-v5.4.1612428704~-~-20210204-1653 == | ||
120 | |||
121 | === 3.4.1 Configure the Radio channel === | ||
122 | |||
123 | |||
124 | (% aria-label="image-20220527145111-7.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527145111-7.png||data-widget="image"]] | ||
125 | |||
126 | (% title="Click and drag to resize" %) | ||
127 | |||
128 | Configure the Radio channel with the match radio settings frequency as the LoRa End Node | ||
129 | |||
130 | |||
131 | === 3.4.2 Configure TCP Server Info === | ||
132 | |||
133 | |||
134 | (% style="color:red" %)**Note: Gateway will transfer the packet if they arrive in the right format .** | ||
135 | |||
136 | (% aria-label="image-20220527145151-8.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527145151-8.png||data-widget="image"]] | ||
137 | |||
138 | (% title="Click and drag to resize" %) | ||
139 | |||
140 | Configure TCP Server Info | ||
141 | |||
142 | |||
143 | === 3.4.3 About uplink data format from End Node === | ||
144 | |||
145 | |||
146 | The LoRa end node should upload the data with below format: | ||
147 | |||
148 | (% class="box" %) | ||
149 | ((( | ||
150 | Uplink Format: (% style="color:#4f81bd" %)**<Channel_ID>data**(%%) | ||
151 | And there is a LoRa End node sending below packets: | ||
152 | *<12345>Hello From Sensor1 | ||
153 | ))) | ||
154 | |||
155 | |||
156 | (% class="box" %) | ||
157 | ((( | ||
158 | LG01/LG02 will uplink 12345:Hello From Sensor1 and usr can use logread -f to check the log. | ||
159 | Thu Feb 4 08:21:49 2021 user.notice iot_keep_alive: use WAN or WiFi for internet access now | ||
160 | Thu Feb 4 08:21:53 2021 daemon.info tcp_process.sh[18564]: /var/iot/channels/ CREATE 12345 | ||
161 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]: Check for sensor update | ||
162 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]: Found Data at Local Channels: 12345 | ||
163 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]: | ||
164 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:~-~-~-~-- | ||
165 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:server: 10.130.2.149 | ||
166 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:port: 60000 | ||
167 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:decoder: LG01/LG02 Raw Data | ||
168 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:tcp_data: 12345:Hello From Sensor1; | ||
169 | Thu Feb 4 08:21:53 2021 user.notice root: [IoT.TCP]:~-~-~-~-~-~- | ||
170 | ))) | ||
171 | |||
172 | |||
173 | and TCP server get: | ||
174 | |||
175 | (% aria-label="image-20220527145304-9.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527145304-9.png||data-widget="image"]](% style="background-image:url(http://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]](% title="Click and drag to resize" %) | ||
176 | |||
177 | TCP Server | ||
178 | |||
179 | |||
180 | LoRa End Device reference source code: [[check this link>>url:https://github.com/dragino/Arduino-Profile-Examples/blob/master/libraries/Dragino/examples/IoTServer/ThingSpeak/MQTT_Client/MQTT_DHT11_Client_updata_to_ThingSpeak_/MQTT_DHT11_Client_updata_to_ThingSpeak_.ino]]. | ||
181 | |||
182 | |||
183 | == 3.5 Instruction After Firmware lgw~-~-build-v5.4.1668567157-20221116-1054 == | ||
184 | |||
185 | === 3.5.1 Configure the Frequency Plan === | ||
186 | |||
187 | |||
188 | [[image:image-20230105114141-1.png||height="539" width="1128"]] | ||
189 | |||
190 | Configure the Frequency Plan with the match radio settings frequency as the LoRa End Node | ||
191 | |||
192 | |||
193 | === 3.5.2 Configure TCP Server Info === | ||
194 | |||
195 | |||
196 | (% style="color:red" %)**Note: Gateway will transfer the packet if they arrive in the right format.** | ||
197 | |||
198 | (% aria-label="image-20220527145151-8.png image widget" contenteditable="false" role="region" tabindex="-1" %)[[image:image-20220527145151-8.png||data-widget="image"]] | ||
199 | |||
200 | |||
201 | === 3.5.3 Configure ABP Decryption === | ||
202 | |||
203 | |||
204 | (% style="color:red" %)**Note: The End Node devices must use ABP join network mode.** | ||
205 | |||
206 | [[image:image-20230105170545-2.png||height="577" width="1087"]] | ||
207 | |||
208 | |||
209 | === 3.5.3 About uplink data format from End Node === | ||
210 | |||
211 | |||
212 | [[image:image-20230105171605-5.png||height="513" width="1084"]] | ||
213 | |||
214 | |||
215 | [[image:image-20230105171235-4.png||height="480" width="523"]] | ||
216 | |||
217 | |||
218 | (% class="wikigeneratedid" %) | ||
219 | == 3.6 Example: Use TCP in LPS8v2 == | ||
220 | |||
221 | LPS8v2 includes a local ChirpStack Server and Node-Red. This example shows how to configure LHT65N to use with the local Node-Red server. This example assumes users already have: | ||
222 | |||
223 | * LHT65N register on LPS8v2 Built-In ChirpStack server already | ||
224 | * The user is able to see the data on the built-in ChirpStack server device page. | ||
225 | |||
226 | Below are steps for LPS8v2 to transfer data from a node to the TCP server. | ||
227 | |||
228 | === 3.6.1 Link Node-Red to Local ChirpStack === | ||
229 | |||
230 | Users can download the Node-Red decoder from this link and import it into the Node-Red platform: | ||
231 | |||
232 | For more information on importing Input Flow, check out this link: **[[Import Input Flow for Dragino Sensors>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/#H3.A0ImportInputFlowforDraginoSensors]]** | ||
233 | |||
234 | After importing the Input Flow is complete, the user needs to edit the MQTT in the node | ||
235 | |||
236 | |||
237 | **~1. Change the Topic** | ||
238 | |||
239 | Topic modifies it to the following format: | ||
240 | |||
241 | **application/Application ID/device/End device ID/event/up** | ||
242 | |||
243 | Reference link: [[**Node-RED integration** >>url:https://www.chirpstack.io/docs/guides/node-red-integration.html]] | ||
244 | |||
245 | [[image:image-20240122094847-1.png||height="756" width="1232"]] | ||
246 | |||
247 | |||
248 | **2. Enter the MQTT configuration information** | ||
249 | |||
250 | |||
251 | [[image:image-20240122094930-2.png||height="767" width="1251"]] | ||
252 | |||
253 | |||
254 | **3.** **Click "Update" and Deploy** | ||
255 | |||
256 | "Connected" indicates that the Link Node-red to Local Chirpstack is normal. | ||
257 | |||
258 | [[image:image-20240122095122-3.png||height="765" width="1247"]] | ||
259 | |||
260 | |||
261 | **4. Connect to the TCP server** | ||
262 | |||
263 | [[image:image-20240122095313-4.png||height="767" width="1250"]] | ||
264 | |||
265 | |||
266 | **5. Finally, check the data** | ||
267 | |||
268 | [[image:image-20240122095424-5.png||height="779" width="1269"]] | ||
269 | |||
270 | |||
271 | = 4. Reference = | ||
272 | |||
273 | |||
274 | Set up a TCP/IP server use node.js: [[Reference Link>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/LG02-OLG02/Firmware/customized_script/&file=node_tcp_server.txt]] |