Changes for page BACnet

Last modified by Kilight Cao on 2025/06/03 14:23

From version 12.1
edited by Kilight Cao
on 2023/04/01 12:00
Change comment: There is no comment for this version
To version 22.1
edited by Kilight Cao
on 2025/06/03 11:55
Change comment: Uploaded new attachment "image-20250603115501-1.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -18,154 +18,46 @@
18 18  === 1.1.2 List supported products and requirements ===
19 19  
20 20  
21 -Gateway model: LPS8v2,LG01v2,MS20
21 +Gateway model: LPS8v2,LG01v2,MS20,MS48-LR
22 22  
23 23  
24 -== 1.2 Download and Install the BACnet ==
24 += 2. Bridge LoRaWAN network to BACnet network =
25 25  
26 26  
27 -(% class="box infomessage" %)
28 -(((
29 -wget [[http:~~/~~/dragino.vicp.io:6080/bacnet/dragino-bacnet-apps-hp0c-2023-03-01.deb>>url:http://dragino.vicp.io:6080/bacnet/dragino-bacnet-apps-hp0c-2023-03-01.deb]]
30 -dpkg -i dragino-bacnet-apps-hp0c-2023-03-01.deb
31 -)))
27 +By following the steps below in the configuration example, Users can convert the uplink data of the lorawan sensor to BACnet data
32 32  
33 -[[image:image-20230401114036-1.png]]
29 +LPS8v2 includes a local ChirpStack Server. This example shows how to configure LHT65N to use with BACnet. This example assumes users already have:
34 34  
31 +* LHT65N register on LPS8v2 Built-In ChirpStack server already
32 +* The user is able to see the data on the built-in ChirpStack server device page.
35 35  
36 -== 1.3 Configure BACnet ==
34 +Below are the steps to configure lps8v2 BACnet.
37 37  
38 -After BACnet is installed, run commands to modify BACnet configurations
39 39  
40 -**Note: device_port and bacnet_ip_port are not set to the same**
37 +== 2.1 Register gateway ==
41 41  
42 -(% class="box infomessage" %)
43 -(((
44 -nano /etc/config/bacnet
45 -)))
46 46  
47 -**Examples:**
40 +For information on how to register a gateway connection to chirpstack, please refer to the link:
48 48  
49 -(% class="box infomessage" %)
50 -(((
51 -config settings 'general'
52 - option bacnet_ip '10.130.2.80'  #The IP address of the BACnetIP network, here basically the same IP as the bbmd address below
53 - option bacnet_ip_port '47808'  #As with bbmd_port, the purpose of this is to register a Bacnet Server application as a bbmd registration server
54 - option bbmd_address '10.130.2.80'  #bbmd is the BACnet registration server. Only one bbmd server is required in the same ip network
55 - option bbmd_port '47808'  #In general, 47808 is used as the default port
56 - option bacnet_dev_count '2'  #Here is the number of BACnet devices that need to be simulated, if the number is 2, then the following settings must have 2, which are bacdev_1, bacdev_2
57 -)))
42 +**[[https:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Notes%20for%20ChirpStack/#H4.A0SemtechUDPforChirpStackv4>>https://wiki.dragino.com/xwiki/bin/view/Main/Notes%20for%20ChirpStack/#H4.A0SemtechUDPforChirpStackv4]]**
58 58  
59 -(% class="box infomessage" %)
60 -(((
61 -config settings 'bacdev_1'
62 - option device_name 'LHT65N-1'  #The identification name of the bacnet device
63 - option device_id '10001'  #The unique identification code in the same network segment of BACnet,Scope is(1 - 4194302)
64 - option device_port '47912'  #The IP port occupied by Bacnet when it starts, Scope is (1024 - 65535)
65 -)))
66 66  
67 -(% class="box infomessage" %)
68 -(((
69 -config settings 'bacdev_2'
70 - option device_name 'LHT65N-2'
71 - option device_id '10002'
72 - option device_port '47913'  
73 -)))
45 +== 2.2  Register Node ==
74 74  
75 -== 1.4 Run BACnet ==
47 +For information on how to register a Node connection to chirpstack, please refer to the link:
76 76  
77 -After the configuration is complete, run the following command to start BACnet, The following are two ways to run BACnet:
49 +**[[https:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Notes%20for%20ChirpStack/#H2.A0Nodeusageintroduction>>https://wiki.dragino.com/xwiki/bin/view/Main/Notes%20for%20ChirpStack/#H2.A0Nodeusageintroduction]]**
78 78  
79 -(1) With /etc/config/bacnet configuration, and to run the registration server on the current machine, start it with the following command (configure the /etc/config/bacnet file correctly):
80 80  
81 -(% class="box infomessage" %)
82 -(((
83 -bacserver -c -s
84 -)))
52 +== 2.3 Configure BACnet ==
85 85  
86 -(2) Without /etc/config/bacnet, and to run the registration server on the current machine, start it with the following command:
54 +After completing the steps of registering the gateway and nodes as mentioned above, start configuring BACnet
87 87  
88 -(% class="box infomessage" %)
89 -(((
90 -bacserver -s -a 10.130.2.80 -p 47808
91 -)))
56 +Video on the configuration of BACnet:
92 92  
93 -This command simulates two devices, with device IDs 47910 and 47911
94 94  
95 -Enter bacserver -h to output help
59 +=== Step 1. Enable BACnet ===
96 96  
97 -(% class="box infomessage" %)
98 -(((
99 -bacserver -h
100 -)))
101 101  
102 -[[image:image-20230401114458-2.png]]
103 103  
104 -== 1.5 Read devices and modify devices ==
105 -
106 -Enter baccli -h to output help
107 -
108 -(% class="box infomessage" %)
109 -(((
110 -baccli -h
111 -)))
112 -
113 -[[image:image-20230401114641-3.png]]
114 -
115 -
116 -**Examples:**
117 -
118 -(1) List the current Bacnet devices:
119 -
120 -(% class="box infomessage" %)
121 -(((
122 -baccli -l -a
123 -)))
124 -
125 -[[image:image-20230401114653-4.png]]
126 -
127 -
128 -(2) List device information based on device ID:
129 -
130 -(% class="box infomessage" %)
131 -(((
132 -baccli -l -i id
133 -)))
134 -
135 -[[image:image-20230401114706-5.png]]
136 -
137 -(3) List the device details by device ID:
138 -
139 -(% class="box infomessage" %)
140 -(((
141 -baccli -l -v -i id
142 -)))
143 -
144 -(4) Modify the specified attribute value based on the device ID:
145 -
146 -(% class="box infomessage" %)
147 -(((
148 -baccli -i id -p prop -w value
149 -)))
150 -
151 -[[image:image-20230401114720-6.png]]
152 -
153 -
154 -(5)Check the results using the BACnet tool
155 -
156 -The user can check the data of the device by using the **[[yabe BACnet tool>>https://sourceforge.net/projects/yetanotherbacnetexplorer/]]**
157 -
158 -[[image:image-20230401114729-7.png||height="521" width="1077"]]
159 -
160 -
161 -= 1.6 Example: How to transfer data to BACnet via LoRaWAN in LPS8v2 =
162 -
163 -LPS8v2 includes a local TTN Server and Node-Red. This example shows how to configure LHT65N to use with the BACnet. This example assumes users already have:
164 -
165 -* LHT65N register on LPS8v2 Built-In TTN server already
166 -* The user is able to see the data on the built-in TTN server device page.
167 -* The LPS8v2 already has BACnet installed
168 -
169 -Below are the steps to plot the sensor data on LPS8v2 BACnet.
170 -
171 171  
LHT65N_TTN_to_BACnet.json
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Kilight
Size
... ... @@ -1,0 +1,1 @@
1 +8.2 KB
Content
... ... @@ -1,0 +1,334 @@
1 +[
2 + {
3 + "id": "b356382079d5c6a0",
4 + "type": "tab",
5 + "label": "TTN to BACnet",
6 + "disabled": false,
7 + "info": "",
8 + "env": []
9 + },
10 + {
11 + "id": "f66b1b60040f4067",
12 + "type": "template",
13 + "z": "b356382079d5c6a0",
14 + "name": "LHT65N-1 10001 battery",
15 + "field": "payload",
16 + "fieldType": "msg",
17 + "format": "handlebars",
18 + "syntax": "mustache",
19 + "template": "baccli -i 10001 -p battery -w {{payload}}\n",
20 + "output": "str",
21 + "x": 590,
22 + "y": 100,
23 + "wires": [
24 + [
25 + "d9290c0c62e0f7c0",
26 + "cc39d099b49cf9fe"
27 + ]
28 + ]
29 + },
30 + {
31 + "id": "d9290c0c62e0f7c0",
32 + "type": "exec",
33 + "z": "b356382079d5c6a0",
34 + "command": "",
35 + "addpay": "payload",
36 + "append": "",
37 + "useSpawn": "false",
38 + "timer": "",
39 + "winHide": false,
40 + "oldrc": false,
41 + "name": "EXEC",
42 + "x": 1050,
43 + "y": 220,
44 + "wires": [
45 + [
46 + "af8dbd68b05f6313"
47 + ],
48 + [
49 + "af8dbd68b05f6313"
50 + ],
51 + []
52 + ]
53 + },
54 + {
55 + "id": "cc39d099b49cf9fe",
56 + "type": "debug",
57 + "z": "b356382079d5c6a0",
58 + "name": "Full Script",
59 + "active": true,
60 + "tosidebar": true,
61 + "console": false,
62 + "tostatus": false,
63 + "complete": "payload",
64 + "targetType": "msg",
65 + "statusVal": "",
66 + "statusType": "auto",
67 + "x": 1040,
68 + "y": 100,
69 + "wires": []
70 + },
71 + {
72 + "id": "af8dbd68b05f6313",
73 + "type": "debug",
74 + "z": "b356382079d5c6a0",
75 + "name": "output",
76 + "active": true,
77 + "tosidebar": true,
78 + "console": false,
79 + "tostatus": false,
80 + "complete": "payload",
81 + "targetType": "msg",
82 + "statusVal": "",
83 + "statusType": "auto",
84 + "x": 1210,
85 + "y": 220,
86 + "wires": []
87 + },
88 + {
89 + "id": "866c4581bd0de190",
90 + "type": "mqtt in",
91 + "z": "b356382079d5c6a0",
92 + "name": "LHT65N-1",
93 + "topic": "v3/5000000@ttn/devices/eui-d0a7a83cc714b96f/up",
94 + "qos": "0",
95 + "datatype": "auto-detect",
96 + "broker": "d1413e55f801d787",
97 + "nl": false,
98 + "rap": true,
99 + "rh": 0,
100 + "inputs": 0,
101 + "x": 120,
102 + "y": 140,
103 + "wires": [
104 + [
105 + "09bb2ca9b68d9137",
106 + "3b08d85a66d0c58a"
107 + ]
108 + ]
109 + },
110 + {
111 + "id": "09bb2ca9b68d9137",
112 + "type": "function",
113 + "z": "b356382079d5c6a0",
114 + "name": "function 3",
115 + "func": "var data = msg.payload\nvar bat = data[\"uplink_message\"][\"decoded_payload\"][\"BatV\"]\nvar tem = data[\"uplink_message\"][\"decoded_payload\"][\"TempC_DS\"]\nvar tem2 = data[\"uplink_message\"][\"decoded_payload\"][\"TempC_SHT\"]\nvar hum = data[\"uplink_message\"][\"decoded_payload\"][\"Hum_SHT\"]\nvar data2 = {payload: bat},data3={payload:tem},data4={payload:tem2},data5={payload:hum}\n//return data2\nreturn[data2,data3,data4,data5]",
116 + "outputs": 4,
117 + "noerr": 0,
118 + "initialize": "",
119 + "finalize": "",
120 + "libs": [],
121 + "x": 340,
122 + "y": 200,
123 + "wires": [
124 + [
125 + "f66b1b60040f4067",
126 + "0cf8a6fc743b8619"
127 + ],
128 + [
129 + "2f48e806d3e4bd5e",
130 + "0cf8a6fc743b8619"
131 + ],
132 + [
133 + "0cf8a6fc743b8619",
134 + "15c7503d379cb571"
135 + ],
136 + [
137 + "700c1799a8cd28a1",
138 + "0cf8a6fc743b8619"
139 + ]
140 + ]
141 + },
142 + {
143 + "id": "0cf8a6fc743b8619",
144 + "type": "debug",
145 + "z": "b356382079d5c6a0",
146 + "name": "debug 5",
147 + "active": true,
148 + "tosidebar": true,
149 + "console": false,
150 + "tostatus": false,
151 + "complete": "payload",
152 + "targetType": "msg",
153 + "statusVal": "",
154 + "statusType": "auto",
155 + "x": 340,
156 + "y": 80,
157 + "wires": []
158 + },
159 + {
160 + "id": "3b08d85a66d0c58a",
161 + "type": "debug",
162 + "z": "b356382079d5c6a0",
163 + "name": "debug 6",
164 + "active": true,
165 + "tosidebar": true,
166 + "console": false,
167 + "tostatus": false,
168 + "complete": "false",
169 + "statusVal": "",
170 + "statusType": "auto",
171 + "x": 160,
172 + "y": 240,
173 + "wires": []
174 + },
175 + {
176 + "id": "2f48e806d3e4bd5e",
177 + "type": "template",
178 + "z": "b356382079d5c6a0",
179 + "name": "LHT65N-1 10001 temp1",
180 + "field": "payload",
181 + "fieldType": "msg",
182 + "format": "handlebars",
183 + "syntax": "mustache",
184 + "template": "baccli -i 10001 -p temp1 -w {{payload}}\n",
185 + "output": "str",
186 + "x": 590,
187 + "y": 160,
188 + "wires": [
189 + [
190 + "046eca291b77ebd3"
191 + ]
192 + ]
193 + },
194 + {
195 + "id": "15c7503d379cb571",
196 + "type": "template",
197 + "z": "b356382079d5c6a0",
198 + "name": "LHT65N-1 10001 temp2",
199 + "field": "payload",
200 + "fieldType": "msg",
201 + "format": "handlebars",
202 + "syntax": "mustache",
203 + "template": "baccli -i 10001 -p temp2 -w {{payload}}",
204 + "output": "str",
205 + "x": 590,
206 + "y": 220,
207 + "wires": [
208 + [
209 + "56c2605dd962c0d4"
210 + ]
211 + ]
212 + },
213 + {
214 + "id": "56c2605dd962c0d4",
215 + "type": "delay",
216 + "z": "b356382079d5c6a0",
217 + "name": "",
218 + "pauseType": "delay",
219 + "timeout": "4",
220 + "timeoutUnits": "seconds",
221 + "rate": "1",
222 + "nbRateUnits": "1",
223 + "rateUnits": "second",
224 + "randomFirst": "1",
225 + "randomLast": "5",
226 + "randomUnits": "seconds",
227 + "drop": false,
228 + "allowrate": false,
229 + "outputs": 1,
230 + "x": 800,
231 + "y": 220,
232 + "wires": [
233 + [
234 + "d9290c0c62e0f7c0"
235 + ]
236 + ]
237 + },
238 + {
239 + "id": "046eca291b77ebd3",
240 + "type": "delay",
241 + "z": "b356382079d5c6a0",
242 + "name": "",
243 + "pauseType": "delay",
244 + "timeout": "2",
245 + "timeoutUnits": "seconds",
246 + "rate": "1",
247 + "nbRateUnits": "1",
248 + "rateUnits": "second",
249 + "randomFirst": "1",
250 + "randomLast": "5",
251 + "randomUnits": "seconds",
252 + "drop": false,
253 + "allowrate": false,
254 + "outputs": 1,
255 + "x": 800,
256 + "y": 160,
257 + "wires": [
258 + [
259 + "d9290c0c62e0f7c0"
260 + ]
261 + ]
262 + },
263 + {
264 + "id": "700c1799a8cd28a1",
265 + "type": "template",
266 + "z": "b356382079d5c6a0",
267 + "name": "LHT65N-1 10001 humidity",
268 + "field": "payload",
269 + "fieldType": "msg",
270 + "format": "handlebars",
271 + "syntax": "mustache",
272 + "template": "baccli -i 10001 -p humidity -w {{payload}}",
273 + "output": "str",
274 + "x": 590,
275 + "y": 280,
276 + "wires": [
277 + [
278 + "9a8f158109d93abb"
279 + ]
280 + ]
281 + },
282 + {
283 + "id": "9a8f158109d93abb",
284 + "type": "delay",
285 + "z": "b356382079d5c6a0",
286 + "name": "",
287 + "pauseType": "delay",
288 + "timeout": "6",
289 + "timeoutUnits": "seconds",
290 + "rate": "1",
291 + "nbRateUnits": "1",
292 + "rateUnits": "second",
293 + "randomFirst": "1",
294 + "randomLast": "5",
295 + "randomUnits": "seconds",
296 + "drop": false,
297 + "allowrate": false,
298 + "outputs": 1,
299 + "x": 800,
300 + "y": 280,
301 + "wires": [
302 + [
303 + "d9290c0c62e0f7c0"
304 + ]
305 + ]
306 + },
307 + {
308 + "id": "d1413e55f801d787",
309 + "type": "mqtt-broker",
310 + "name": "",
311 + "broker": "eu1.cloud.thethings.network",
312 + "port": "1883",
313 + "clientid": "",
314 + "autoConnect": true,
315 + "usetls": false,
316 + "protocolVersion": "4",
317 + "keepalive": "60",
318 + "cleansession": true,
319 + "birthTopic": "",
320 + "birthQos": "0",
321 + "birthPayload": "",
322 + "birthMsg": {},
323 + "closeTopic": "",
324 + "closeQos": "0",
325 + "closePayload": "",
326 + "closeMsg": {},
327 + "willTopic": "",
328 + "willQos": "0",
329 + "willPayload": "",
330 + "willMsg": {},
331 + "userProps": "",
332 + "sessionExpiry": ""
333 + }
334 +]
image-20230401142357-8.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Kilight
Size
... ... @@ -1,0 +1,1 @@
1 +134.1 KB
Content
image-20230401144525-9.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Kilight
Size
... ... @@ -1,0 +1,1 @@
1 +47.4 KB
Content
image-20230401144951-10.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Kilight
Size
... ... @@ -1,0 +1,1 @@
1 +78.2 KB
Content
image-20250603115501-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Kilight
Size
... ... @@ -1,0 +1,1 @@
1 +67.0 KB
Content