Quickstart
KNXnet/IP quickstart
Discover gateways, connect through a tunnel, and read or write group values.
KNXyz includes KNXnet/IP helpers for gateway discovery, tunnel connections, group reads, and group writes.
Discover gateways
Python
import asyncio
from knxyz import discover_gateways
async def main():
gateways = await discover_gateways(timeout_ms=1500)
for gateway in gateways:
print(gateway["controlEndpoint"])
asyncio.run(main())Node.js
import { discoverGateways } from "@knxyz/knx";
const gateways = await discoverGateways({ timeoutMs: 1500 });
for (const gateway of gateways) {
console.log(gateway.controlEndpoint);
}Rust
use knxyz::ip::{discover_gateways, DiscoveryOptions};
let gateways = discover_gateways(DiscoveryOptions::default()).await?;
for gateway in gateways {
println!("{}", gateway.control_endpoint);
}Connect through a tunnel
Python
import asyncio
from knxyz import connect_tunnel
async def main():
client = await connect_tunnel(host="192.0.2.10")
try:
print("connected")
finally:
await client.close()
asyncio.run(main())Node.js
import { connectTunnel } from "@knxyz/knx";
const client = await connectTunnel({ host: "192.0.2.10" });
try {
console.log("connected");
} finally {
await client.close();
}Rust
use knxyz::ip::TunnelClient;
use std::net::ToSocketAddrs;
let gateway = "192.0.2.10:3671"
.to_socket_addrs()?
.next()
.expect("gateway address");
let mut client = TunnelClient::connect(gateway).await?;
client.disconnect().await?;Read a group value
A group read uses a group address and a datapoint type.
Python
value = await client.read("1/0/0", "9.001")
print(value)Node.js
const value = await client.read("1/0/0", "9.001");
console.log(value);Rust
use knxyz::GroupAddress;
use std::time::Duration;
let group = "1/0/0".parse::<GroupAddress>()?;
let value = client
.group_read(group, "9.001", Duration::from_secs(3))
.await?;
println!("{value:?}");Write a group value
Python and Node.js use write(group_address, value, dpt). Rust uses group_write(group_address, DptValue).
Python
await client.write("1/2/3", True, "1.001")Node.js
await client.write("1/2/3", true, "1.001");Rust
use knxyz::{DptValue, GroupAddress};
let group = "1/2/3".parse::<GroupAddress>()?;
client
.group_write(group, DptValue::Bool(true))
.await?;See the examples for complete Rust, Python, and Node.js files.