Changes for page BACnet
Last modified by Kilight Cao on 2025/06/03 14:23
From version 21.1
edited by Kilight Cao
on 2025/06/03 11:51
on 2025/06/03 11:51
Change comment:
There is no comment for this version
To version 11.1
edited by Kilight Cao
on 2023/04/01 11:48
on 2023/04/01 11:48
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 4 removed)
Details
- Page properties
-
- Content
-
... ... @@ -18,46 +18,142 @@ 18 18 === 1.1.2 List supported products and requirements === 19 19 20 20 21 -Gateway model: LPS8v2,LG01v2,MS20 ,MS48-LR21 +Gateway model: LPS8v2,LG01v2,MS20 22 22 23 23 24 -= 2.BridgeLoRaWANnetworktoBACnetnetwork=24 +== 1.2 Download and Install the BACnet == 25 25 26 26 27 -By following the steps below in the configuration example, Users can convert the uplink data of the lorawan sensor to BACnet data 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 +))) 28 28 29 - LPS8v2includesalocal ChirpStack Server. This example shows how to configureLHT65N to use with BACnet.This example assumes users already have:33 +[[image:image-20230401114036-1.png]] 30 30 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. 33 33 34 - Belowarethe steps toconfigurelps8v2BACnet.36 +=== 1.3 Configure BACnet === 35 35 38 +After BACnet is installed, run commands to modify BACnet configurations 36 36 37 - ==2.1 Registergateway==40 +**Note: device_port and bacnet_ip_port are not set to the same** 38 38 42 +(% class="box infomessage" %) 43 +((( 44 +nano /etc/config/bacnet 45 +))) 39 39 40 - For information on how to register a gateway connection to chirpstack, please refer to the link:47 +**Examples:** 41 41 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]]** 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 +))) 43 43 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 +))) 44 44 45 -== 2.2 Register Node == 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 +))) 46 46 47 - Forinformationonhow to register a Node connectionto chirpstack, please refer to the link:75 +=== 1.4 Run BACnet === 48 48 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]]**77 +After the configuration is complete, run the following command to start BACnet, The following are two ways to run BACnet: 50 50 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): 51 51 52 -== 2.3 Configure BACnet == 81 +(% class="box infomessage" %) 82 +((( 83 +bacserver -c -s 84 +))) 53 53 54 - Aftercompletingthestepsofregisteringthegatewayandnodesas mentioned above, startconfiguringBACnet86 +(2) Without /etc/config/bacnet, and to run the registration server on the current machine, start it with the following command: 55 55 56 -Video on the configuration of BACnet: 88 +(% class="box infomessage" %) 89 +((( 90 +bacserver -s -a 10.130.2.80 -p 47808 91 +))) 57 57 93 +This command simulates two devices, with device IDs 47910 and 47911 58 58 59 - === Step1. EnableBACnet===95 +Enter bacserver -h to output help 60 60 97 +(% class="box infomessage" %) 98 +((( 99 +bacserver -h 100 +))) 61 61 102 +[[image:image-20230401114458-2.png]] 62 62 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 + 114 +[[image:image-20230401114641-3.png]] 115 + 116 +**Examples:** 117 + 118 +(1) List the current Bacnet devices: 119 + 120 +(% class="box infomessage" %) 121 +((( 122 +baccli -l -a 123 +))) 124 + 125 + 126 +[[image:image-20230401114653-4.png]] 127 + 128 +(2) List device information based on device ID: 129 + 130 +(% class="box infomessage" %) 131 +((( 132 +baccli -l -i id 133 +))) 134 + 135 + 136 +[[image:image-20230401114706-5.png]] 137 + 138 +(3) List the device details by device ID: 139 + 140 +(% class="box infomessage" %) 141 +((( 142 +baccli -l -v -i id 143 +))) 144 + 145 +(4) Modify the specified attribute value based on the device ID: 146 + 147 +(% class="box infomessage" %) 148 +((( 149 +baccli -i id -p prop -w value 150 +))) 151 + 152 + 153 +[[image:image-20230401114720-6.png]] 154 + 155 +The user can check the data of the device by using the **[[yabe BACnet tool>>https://sourceforge.net/projects/yetanotherbacnetexplorer/]]** 156 + 157 +[[image:image-20230401114729-7.png||height="521" width="1077"]] 158 + 63 63
- LHT65N_TTN_to_BACnet.json
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -8.2 KB - Content
-
... ... @@ -1,334 +1,0 @@ 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,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -134.1 KB - Content
- image-20230401144525-9.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -47.4 KB - Content
- image-20230401144951-10.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -78.2 KB - Content