Releases: confusedjoe/github-bacnet
Release list
v0.8.2 — Auto-Items & full BACnet tagging
Experimental BACnet/IP binding for openHAB 4.3.x.
Highlights of the 0.7–0.8 series:
- Automatic discovery (Who-Is + passive + unicast subnet sweep) — finds devices that ignore Who-Is.
- Auto-creates and links an Item for every object, removed again when the Thing is deleted.
- Comprehensive, sortable tags per item: object type, Writable/ReadOnly, openHAB semantic class
(Measurement/Setpoint/Switch/Status), physical quantity, unit (°C, Pa, kWh, …), device name
(e.g. Altbau), device instance (Instance_) and a generic "BACnet" marker. - Supports all value-bearing object types (Analog/Binary/Multi-State, Schedule, Calendar, Loop,
Accumulator, Pulse-Converter, *-Value types, Lighting). Infrastructure objects are skipped. - Alarm-state item + KBOB Notification_Class category for alarm-capable objects.
- COV (push) first, with a 5-min fallback poll and a 60-min metadata refresh (both configurable).
- Channels/items labelled with the device's real object names and units.
v0.6.4 — Auto-Discovery
Experimental BACnet/IP binding for openHAB 4.3.x — now with fully automatic discovery.
What's new in 0.6.4
- Automatic background discovery: an initial scan starts shortly after the bridge comes
online and repeats on a configurable interval (default 15 min). Any new IP that sends
BACnet traffic is probed immediately. With openHAB's "auto-approve inbox" enabled,
devices appear as Things hands-free — no manual scan needed. - Discovery is registered per bridge from the handler factory, so its lifecycle is
deterministic and reliable.
Feature set
- Pure-Java BACnet/IP (Annex J), no external library (clean-room, EPL-2.0).
- Universal discovery: Who-Is/I-Am + passive detection + active unicast subnet sweep with
the wildcard instance, so devices that ignore Who-Is are still found (e.g. a real
223-object controller). - Read/write of analog, binary and multi-state present values; Schedule present value
writable; intrinsic alarms as trigger channels. - Live updates via COV subscriptions.
- Object-list read with an indexed fallback (handles large lists without segmentation).
- Channels labelled with the device's real object names and units (e.g.
AU_Temp_H00 [°C]). - Network-interface picker in the bridge config (UI).
Config (bridge)
broadcastAddress(required),localPort(47808),discoveryTimeout(5 s),
backgroundDiscovery(true),discoveryInterval(15 min).
.things file (bridge + deviceInstance + address). Technical details: ARCHITECTURE.md.
v0.5.1 — BACnet/IP Binding for openhub 4.3.x
First fully working pre-release of the experimental BACnet/IP binding for openHAB 4.3.x.
Highlights since 0.5.1
- Single-reader socket: fixes the bug that completely blocked discovery and read/write
(a background thread was swallowing every I-Am/ACK packet). - Universal discovery: Who-Is/I-Am + passive listening + active unicast sweep with the
wildcard instance → also finds devices that don't answer Who-Is. - Indexed object-list fallback (no segmentation needed) — tested against a real
controller with 223 objects. - Channels with real names + unit (e.g.
AU_Temp_H00 [°C]), like YABE. - Network selection (drop-down of local interfaces) in the bridge configuration.
- Schedule present-value is writable.
.things is recommended for fixed installations.
Technical details: see ARCHITECTURE.md in the repo.
How to change the IP (the last item)
Edit C:\openhab-4.3.11\conf\things\bacnet.things and save — openHAB reloads it automatically, no restart needed:
Bridge bacnet:bridge:local "BACnet/IP Network" [ broadcastAddress="192.168.31.255", localPort=47808 ] {
Thing device altbau "Altbau" [ deviceInstance=1, address="192.168.31.88" ]
}

v0.1.0 — Experimental BACnet/IP Binding
This is a lightweight, dependency-free BACnet/IP binding for openHAB 4.3.x.
Discovers BACnet devices (Who-Is / I-Am), reads and writes present values,
receives live updates via COV subscriptions, and forwards intrinsic alarms as
trigger channels. No external BACnet library — pure Java, EPL-2.0.
⚠️ Experimental / work in progress. Not yet tested against real hardware.
Features
- Discovery via Who-Is / I-Am broadcast
- Read/write: Analog, Binary, Multi-State objects
- COV subscriptions (live updates)
- Intrinsic alarm forwarding
- Schedule & Calendar (read-only)
Known limitations
- No segmentation — large object lists may fail
- COV and read/write share one UDP socket — may race under load
- Schedule/Calendar are read-only