Changes for page BACnet

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

From version 9.1
edited by Kilight Cao
on 2023/04/01 11:47
Change comment: Uploaded new attachment "image-20230401114729-7.png", version {1}
To version 20.1
edited by Kilight Cao
on 2025/06/03 11:42
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,91 +1,63 @@
1 -== 2.7 How to install BACnet ==
1 +**Table of Contents:**
2 2  
3 -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]]
4 -dpkg -i dragino-bacnet-apps-hp0c-2023-03-01.deb
3 +{{toc/}}
5 5  
6 -[[image:image-20230327152105-1.png||height="163" width="933"]]
7 7  
8 -=== 2.7.1 Configure BACnet ===
6 += 1. BACnet =
9 9  
10 -After BACnet is installed, run commands to modify BACnet configurations
8 +== 1.1  Introduction ==
11 11  
12 -**Note: device_port and bacnet_ip_port are not set to the same**
10 +=== 1.1.1 What is BACnet ===
13 13  
14 -nano /etc/config/bacnet
15 15  
16 -**Examples:**
13 +BACnet, short for Building Automation and Control networks.
17 17  
18 -config settings 'general'
19 - option bacnet_ip '10.130.2.80'  #The IP address of the BACnetIP network, here basically the same IP as the bbmd address below
20 - 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
21 - option bbmd_address '10.130.2.80'  #bbmd is the BACnet registration server. Only one bbmd server is required in the same ip network
22 - option bbmd_port '47808'  #In general, 47808 is used as the default port
23 - 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
15 +The BACnet communication protocol defines a number of services for communication between devices, and services can be divided into five categories: services related to device object management including Who-Is, I-Am, Who-Has, and other services, services related to object access including reading attributes, writing attributes and other services, and services related to alarms and events include acknowledgment alarms, change of state reports, etc. In addition, there are services related to file reading and writing and virtual terminals.
24 24  
25 -config settings 'bacdev_1'
26 - option device_name 'LHT65N-1'  #The identification name of the bacnet device
27 - option device_id '10001'  #The unique identification code in the same network segment of BACnet,Scope is(1 - 4194302)
28 - option device_port '47912'  #The IP port occupied by Bacnet when it starts, Scope is (1024 - 65535)
29 29  
30 -config settings 'bacdev_2'
31 - option device_name 'LHT65N-2'
32 - option device_id '10002'
33 - option device_port '47913'  
18 +=== 1.1.2 List supported products and requirements ===
34 34  
35 -=== 2.7.2 Run BACnet ===
36 36  
37 -After the configuration is complete, run the following command to start BACnet, The following are two ways to run BACnet:
21 +Gateway model: LPS8v2,LG01v2,MS20,MS48-LR
38 38  
39 -(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):
40 40  
41 -bacserver -c -s
24 += 2. Bridge LoRaWAN network to BACnet network =
42 42  
43 -(2) Without /etc/config/bacnet, and to run the registration server on the current machine, start it with the following command:
44 44  
45 -bacserver -s -a 10.130.2.80 -p 47808
27 +By following the steps below in the configuration example, Users can convert the uplink data of the lorawan sensor to BACnet data
46 46  
47 -This command simulates two devices, with device IDs 47910 and 47911
29 +LPS8v2 includes a local ChirpStack Server. This example shows how to configure LHT65N to use with BACnet. This example assumes users already have:
48 48  
49 -Enter bacserver -h to output help
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.
50 50  
51 -bacserver -h
34 +Below are the steps to configure lps8v2 BACnet.
52 52  
53 -[[image:image-20230327154700-3.png]]
54 54  
55 -=== 2.7.3 Read devices and modify devices ===
37 +== 2.1 Register gateway ==
56 56  
57 -Enter baccli -h to output help
58 58  
59 -baccli -h
40 +For information on how to register a gateway connection to chirpstack, please refer to the link:
60 60  
61 -[[image:image-20230327165836-1.png]]
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]]**
62 62  
63 -**Examples:**
64 64  
65 -(1) List the current Bacnet devices:
45 +== 2.2  Register Node ==
66 66  
67 -baccli -l -a
47 +For information on how to register a Node connection to chirpstack, please refer to the link:
68 68  
69 -[[image:image-20230327174537-3.png]]
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]]**
70 70  
71 -(2) List device information based on device ID:
72 72  
73 -baccli -l -i id
52 +== 2.3 Configure BACnet ==
74 74  
75 -[[image:image-20230327174556-4.png]]
54 +After completing the steps of registering the gateway and nodes as mentioned above, start configuring BACnet
76 76  
77 -(3) List the device details by device ID:
56 +Video on the configuration of BACnet:
78 78  
79 -baccli -l -v -i id
80 80  
81 -(4) Modify the specified attribute value based on the device ID:
59 +=== step 1. Enable BACnet ===
82 82  
83 -baccli -i id -p prop -w value
84 84  
85 -[[image:image-20230327174853-5.png]]
86 86  
87 -The user can check the data of the device by using the **[[yabe BACnet tool>>https://sourceforge.net/projects/yetanotherbacnetexplorer/]]**
88 -
89 -[[image:image-20230327171824-2.png]]
90 -
91 91  
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