Skip to content

Commit 18368dd

Browse files
committed
🚧 deal with BACnet protocol
1 parent c23d13a commit 18368dd

File tree

4 files changed

+130
-3
lines changed

4 files changed

+130
-3
lines changed

IOT-Guide-Bacnet/pom.xml

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,70 @@
22
<project xmlns="http://maven.apache.org/POM/4.0.0"
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
56
<parent>
67
<artifactId>IOT-Guide</artifactId>
78
<groupId>iot.technology</groupId>
89
<version>1.0-SNAPSHOT</version>
910
</parent>
10-
<modelVersion>4.0.0</modelVersion>
1111

12+
<name>IOT Technology Guide :: Bacnet</name>
1213
<artifactId>IOT-Guide-Bacnet</artifactId>
1314

1415
<properties>
15-
<maven.compiler.source>11</maven.compiler.source>
16-
<maven.compiler.target>11</maven.compiler.target>
16+
<maven.compiler.source>8</maven.compiler.source>
17+
<maven.compiler.target>8</maven.compiler.target>
18+
<bacnet4j.version>5.0.2</bacnet4j.version>
1719
</properties>
1820

21+
<dependencies>
22+
<dependency>
23+
<groupId>org.slf4j</groupId>
24+
<artifactId>slf4j-api</artifactId>
25+
</dependency>
26+
<dependency>
27+
<groupId>org.slf4j</groupId>
28+
<artifactId>log4j-over-slf4j</artifactId>
29+
</dependency>
30+
<dependency>
31+
<groupId>ch.qos.logback</groupId>
32+
<artifactId>logback-core</artifactId>
33+
</dependency>
34+
<dependency>
35+
<groupId>ch.qos.logback</groupId>
36+
<artifactId>logback-classic</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>com.infiniteautomation</groupId>
40+
<artifactId>bacnet4j</artifactId>
41+
<version>${bacnet4j.version}</version>
42+
</dependency>
43+
</dependencies>
44+
45+
<repositories>
46+
<repository>
47+
<releases>
48+
<enabled>false</enabled>
49+
</releases>
50+
<snapshots>
51+
<enabled>true</enabled>
52+
</snapshots>
53+
<id>ias-snapshots</id>
54+
<name>Infinite Automation Snapshot Repository</name>
55+
<url>https://maven.mangoautomation.net/repository/ias-snapshot/</url>
56+
</repository>
57+
<repository>
58+
<releases>
59+
<enabled>true</enabled>
60+
</releases>
61+
<snapshots>
62+
<enabled>false</enabled>
63+
</snapshots>
64+
<id>ias-releases</id>
65+
<name>Infinite Automation Release Repository</name>
66+
<url>https://maven.mangoautomation.net/repository/ias-release/</url>
67+
</repository>
68+
</repositories>
69+
70+
1971
</project>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package iot.technology.bacnet;
2+
3+
import com.serotonin.bacnet4j.LocalDevice;
4+
import com.serotonin.bacnet4j.RemoteDevice;
5+
import com.serotonin.bacnet4j.exception.BACnetException;
6+
import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
7+
import com.serotonin.bacnet4j.type.primitive.ObjectIdentifier;
8+
import com.serotonin.bacnet4j.util.RequestUtils;
9+
import iot.technology.bacnet.util.BACnetUtil;
10+
import lombok.extern.slf4j.Slf4j;
11+
12+
import java.util.List;
13+
14+
@Slf4j
15+
public class BacnetYabeReadTest {
16+
17+
public static void main(String[] args) throws BACnetException {
18+
IpNetwork ipNetwork = BACnetUtil.initIpNetwork("172.30.176.1", 47808);
19+
LocalDevice localDevice = BACnetUtil.initLocalDevice(123, ipNetwork);
20+
21+
RemoteDevice remoteDevice = localDevice.getRemoteDeviceBlocking(2130082);
22+
23+
List<ObjectIdentifier> objectList = RequestUtils.getObjectList(localDevice, remoteDevice).getValues();
24+
objectList.forEach(objectIdentifier -> {
25+
log.info("objectIdentifier: {}", objectIdentifier);
26+
});
27+
}
28+
}

IOT-Guide-Bacnet/src/main/java/iot/technology/bacnet/package_info.java

Whitespace-only changes.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package iot.technology.bacnet.util;
2+
3+
import com.serotonin.bacnet4j.LocalDevice;
4+
import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
5+
import com.serotonin.bacnet4j.npdu.ip.IpNetworkBuilder;
6+
import com.serotonin.bacnet4j.transport.DefaultTransport;
7+
8+
public class BACnetUtil {
9+
10+
/**
11+
* 创建网络对象
12+
*
13+
* @param ip 网络地址
14+
* @param port 端口
15+
* @return
16+
*/
17+
public static IpNetwork initIpNetwork(String ip, int port) {
18+
IpNetwork ipNetwork = new IpNetworkBuilder()
19+
//本机ip
20+
.withLocalBindAddress(ip)
21+
.withSubnet("255.255.255.0", 24)
22+
.withPort(port)
23+
.withReuseAddress(true)
24+
.build();
25+
return ipNetwork;
26+
27+
}
28+
29+
/**
30+
* 创建虚拟的本地设备, deviceNumber随意
31+
*
32+
* @param deviceNumber 设备标识
33+
* @param ipNetwork 网络对象
34+
* @return
35+
*/
36+
public static LocalDevice initLocalDevice(int deviceNumber, IpNetwork ipNetwork) {
37+
LocalDevice localDevice = new LocalDevice(deviceNumber, new DefaultTransport(ipNetwork));
38+
try {
39+
//初始化
40+
localDevice.initialize();
41+
localDevice.startRemoteDeviceDiscovery();
42+
} catch (Exception e) {
43+
e.printStackTrace();
44+
}
45+
return localDevice;
46+
}
47+
}

0 commit comments

Comments
 (0)