KNX简介
KNX 是建筑自动化和家庭控制系统的标准,起源于1990年代初的 EIB (European Installation Bus) 。它是一种开放协议,可以实现建筑物中各种设备和系统之间的通信,如照明、供暖、通风、安全和音视频设备。该技术由 KNX 协会管理,该协会负责全球 KNX 产品和解决方案的开发、认证和推广。
KNX 使用各种传输介质,包括双绞线(TP)、电力线通信(PL)、无线电频率(RF)和 IP/Ethernet。这种灵活性使得 KNX 适用于有线和无线安装,既适用于新建筑,也适用于对现有建筑的改造。
KNX 地址
在 KNX 系统中,每个连接到总线上的设备都被分配一个唯一的地址,用于标识和与其通信。
Individual Address
Individual address 是分配给总线上每个 KNX 设备的唯一地址。它允许 KNX 系统与特定设备之间进行直接通信。Individual address 通常在设备配置或编程过程中设置,并且对于设备来说是固定的。
KNX individual address 是由三部分组成的16位值:区域号(area number)、线路号(line number)和设备地址(device address)。
例如,individual address 为 2.3.20, 表示区域 2 中线路 3 上的编号20的总线设备。
Group Address
组地址用于多个 KNX 设备之间的通信。它代表了 KNX 系统中的特定功能或控制点。设备可以被编程以监听和响应特定的组地址,实现基于组的控制和自动化。
组地址由三个主要组成部分组成:主组(main group)、中间组(middle group)和子组(sub group)。
例如,一个组地址为 1/2/3 表示主组1、中间组2和子组3。这些组成部分的具体解释可能会根据应用和配置而有所不同。
KNXnet/IP
KNXnet/IP 是在 KNX 系统中用于通过 IP 网络传输数据的通信协议。通过 KNXnet/IP,KNX 设备可以通过 IP 网络相互通信,并与外部系统进行通信。它允许从具有网络连接的任何地方远程访问、控制和监控 KNX 安装。该协议利用标准的 IP 网络基础设施和协议为 KNX 提供支持,扩展了系统的功能和覆盖范围。
值得注意的是,KNXnet/IP 只是 KNX 标准中的一种通信选项。传统的 KNX 总线通信方法仍然广泛使用,而 KNXnet/IP 通常与这些方法结合使用,为建筑自动化和控制提供全面灵活的解决方案。
Android连接KNX IP
通过IP和端口号连接,连接代码如下
private void initBus() {
Log.i(TAG, "initBus: "+"hostSocket:"+hostSocket+" gatewaySocket:"+gatewaySocket+" netLinkIp:"+netLinkIp);
try {
netLinkIp = new KNXNetworkLinkIP(KNXNetworkLinkIP.TUNNELING, hostSocket, gatewaySocket, false, TPSettings.TP1);
processCommunicator = new ProcessCommunicatorImpl(netLinkIp);
processCommunicator.addProcessListener(new ProcessListenerEx() {
@Override
public void groupReadRequest(ProcessEvent processEvent) {
Log.i(TAG, "groupReadRequest: "+processEvent.toString());
if(processListenerEx != null){
String address = processEvent.getDestination() == null?"":processEvent.getDestination().toString();
processListenerEx