Home/Knowledge Base

Building Automation Knowledge Base

Vendor-neutral troubleshooting guides, scripts, tool tutorials, and configuration references for BACnet, Niagara, Modbus, Facility Explorer, and building automation networks.

54 articles

TTools & Libraries

Why bacpypes3 Defines class TimeValue(Sequence)

Developers reading bacpypes3 source see class TimeValue(Sequence) and need to know what the time and value elements are, why it subclasses Sequence, and how to build one for a DailySchedule without passing the wrong type to the value slot.

Reference guide8 min read
TTools & Libraries

bacpypes3 class Any: The Open BACnet Value Container

Reading bacpypes3 source you land on class Any and need to know what the open container holds, how it differs from AnyAtomic, and how to get a typed value in or out of it.

Reference guide8 min read
TTools & Libraries

bacpypes3 Time Class: Why It's a Tuple of (Hour, Minute, Second, Hundredth)

A bacpypes3 Time value comes back as a 4-tuple rather than a datetime.time, and constructing one fails with ValueError: 4-tuple expected — developers need to know why Time subclasses tuple and how to build and read it correctly.

Reference guide8 min read
TTools & Libraries

Why bacpypes3 Defines class AnyAtomic(Any)

Developers reading bacpypes3 source see class AnyAtomic(Any) and need to know why an 'atomic' type inherits from the open Any container, where it is used, and how to get a native Python value out of one returned by ReadProperty.

Reference guide8 min read
TTools & Libraries

Why bacpypes3 Defines class Choice(Sequence)

Developers reading bacpypes3 source see class Choice(Sequence) and need to know why a CHOICE inherits from a SEQUENCE, what the inheritance changes at runtime, and how to construct a Choice without tripping the 'initialize one choice' and 'choice is not an element' errors.

Reference guide8 min read
NNiagara / Tridium

Tridium Upgrade: Niagara Version Upgrade and Migration Guide

Technicians need to move a Niagara station to a newer version but get blocked by a lapsed SMA, version mismatches between Workbench and the station, or hardware that cannot host the target build.

Reference guide9 min read
GGeneral BAS

What a Conduit Is on a Building Automation Site

A search for 'conduit' on a building site returns electrical-conduit results, but in OT security a conduit is the controlled communication path between zones — and most single sites have never documented theirs.

Reference guide8 min read
TTools & Libraries

bacpypes3 AnyAtomic and get_value(): Source and Usage

Reading a property typed as BACnetAnyAtomic (most commonly a TimeValue.value inside a Schedule's Weekly_Schedule) returns a wrapper object rather than a native Python value, and the accessor name and source location vary across bacpypes3 releases.

Reference guide8 min read
GGeneral BAS

IT/OT Separation Services: What They Cover and How to Evaluate Them

Building owners are told they need 'IT/OT separation,' but the market term covers everything from a one-time VLAN configuration to a multi-year zone-and-conduit redesign; evaluating providers requires understanding what the work actually involves.

Reference guide9 min read
GGeneral BAS

Conduit Security for Building Automation Networks

Auditors and insurers ask how traffic between BAS security zones is controlled, but most buildings have undocumented, wide-open conduits where inter-VLAN routing is left unrestricted.

Reference guide9 min read
TTools & Libraries

bacpypes3 Choice, _choice, and _elements: Source and Usage

Developers reading bacpypes3 source need to know what the _choice and _elements attributes represent on a Choice subclass — and how to construct, introspect, or extend a CHOICE type without breaking encoding.

Reference guide8 min read
GGeneral BAS

Secure Remote Access for Cyber-Physical Systems (CPS)

Vendors and integrators need remote access to physical control systems, but persistent VPNs, port forwarding, and shared credentials create the third-party exposure that drives most OT security incidents.

Reference guide9 min read
TTools & Libraries

bacpypes3 Real Class: Why It Inherits From Atomic and float

Developers reading bacpypes3 source see class Real(Atomic, float) and need to know what the dual inheritance means in practice — when to pass a raw Python float versus a Real instance, and why mixing the two sometimes fails encoding.

Reference guide8 min read
TTools & Libraries

bacpypes3 DailySchedule, TimeValue, AnyAtomic: Source and Usage

Building a BACnet Schedule object with bacpypes3 fails with type errors around AnyAtomic and TimeValue, and the project documentation does not show a full Weekly_Schedule example.

Reference guide8 min read
MModbus

Modbus Function Codes: Complete Reference Cheat Sheet

Technicians know they need 'function code 3' for holding registers but lose time hunting down the rest — the read/write split, the exception code map, and which functions a given gateway actually implements.

Reference table8 min read
MModbus

Modbus TCP Gateway for RS-485 Devices: Configuration Guide

Legacy Modbus RTU devices on an RS-485 trunk need to be reachable by an IP-based supervisor; the gateway sits between the two and most first-day failures come from serial-side wiring or parameter mismatches, not the gateway itself.

Step-by-step guide9 min read
BBACnet

BACnet COV vs Polling: Tradeoffs and When to Use Each

Integrators default to polling everything and discover the network can't keep up, or default to COV and discover subscriptions silently lapse without producing an alarm.

Decision guide9 min read
BBACnet

BACnet Write Priority Array Explained

Operator writes to a commandable object appear to succeed but Present_Value never changes, or an override gets stuck because no one wrote NULL to release the slot.

Reference guide8 min read
BBACnet

BACnet Network Number Best Practices for Multi-Site Portfolios

Integrators reuse network number 1 across sites; collisions break BACnet routing the moment buildings are interconnected through a campus backbone or BBMD.

Best practices guide9 min read
TTools & Libraries

ThingsBoard IoT Gateway for Building Automation

Integrating legacy BAS protocols (BACnet, Modbus) with modern IoT platforms.

Integration guide9 min read
FXFacility Explorer

Facility Explorer FX60 Network Configuration

FX60 DIN-rail controllers need correct LAN1/LAN2, HTTPS port 5011, and BACnet driver setup.

Step-by-step guide7 min read
TTools & Libraries

VOLTTRON for Building Energy Management

Open-source platform from DOE for building controls and distributed energy, but documentation is fragmented.

Tool review8 min read
NetNetwork & Security

How to Run a BAS Cybersecurity Audit

Building owners face pressure from insurers and regulations but have no BAS-specific audit checklist.

Checklist10 min read
NNiagara / Tridium

Niagara Driver Configuration Cheat Sheet

Setting up BACnet, Modbus, and LonWorks drivers in Niagara Workbench involves non-obvious configuration steps.

Config snippet7 min read
PyScripts & Automation

BACpypes3: Custom BACnet Applications in Python

Advanced BACnet automation requires understanding the BACpypes3 library beyond BAC0's abstractions.

Script tutorial10 min read
PyScripts & Automation

OPC UA with Python: asyncua Quick Start for BAS

Connecting to OPC UA servers in building automation using the asyncua library.

Script tutorial9 min read
TTools & Libraries

KNX Network Scanning with KNXmap

Auditing and scanning KNXnet/IP gateways for security assessment or device inventory.

Tool guide7 min read
BBACnet

BACnet MS/TP Wiring Best Practices

Improper wiring (T-taps, missing termination, wrong cable) causes intermittent failures that are hard to diagnose.

Reference guide8 min read
NetNetwork & Security

IEC 62443 Security Zones for Building Automation

IEC 62443 guidance is abstract and manufacturing-focused; BAS professionals need a practical translation.

Design guide10 min read
BBACnet

BACnet Trending: Configure and Export Trend Logs

Extracting historical data from BACnet Trend Log objects for analysis or compliance reporting.

Script tutorial9 min read
NNiagara / Tridium

Troubleshooting a Slow Niagara JACE

JACE becomes sluggish from excessive history logging, too many Workbench sessions, or SD card degradation.

Troubleshooting checklist7 min read
BBACnet

BACnet Network Number Planning Guide

Conflicting network numbers after adding routers cause routing loops and device unreachability.

Reference guide8 min read
NNiagara / Tridium

How to Back Up and Restore a Niagara JACE

SD card failures and botched upgrades require restore from backup, but many sites have no documented backup procedure.

Step-by-step guide8 min read
MModbus

Modbus RTU to TCP Gateway Setup Guide

Legacy Modbus RTU devices need to connect to IP-based supervisors; gateway selection and configuration is confusing.

Buyer guide + setup9 min read
NNiagara / Tridium

Niagara Workbench Productivity Tips and Shortcuts

Engineering in Workbench is slow; technicians miss batch editing, search sidebar, and compositing features.

Tips collection7 min read
FXFacility Explorer

Facility Explorer FX80 Initial Setup Checklist

FX80 arrives factory-commissioned but default credentials and network settings must be changed before deployment.

Step-by-step guide7 min read
NetNetwork & Security

VLAN Design for Building Automation Networks

IT teams lack guidance on structuring VLANs specifically for BAS protocols and broadcast traffic.

Design guide10 min read
PyScripts & Automation

PyModbus Quick Start: Read Registers with Python

Technicians want to script Modbus reads for testing or data collection but need a simple starting point.

Script tutorial8 min read
BBACnet

BACnet Duplicate Device ID: Find and Fix It

Two devices sharing a device instance number cause data collisions, lost messages, and control failures.

Troubleshooting guide7 min read
TTools & Libraries

BACnet Discovery Tool (BDT) Setup and Usage

Technicians need a vendor-neutral free tool to verify BACnet/IP communication and discover MS/TP devices through routers.

Tool guide6 min read
BBACnet

BACnet/IP to MS/TP Router Configuration

Bridging BACnet/IP supervisors to MS/TP field trunks requires correct IP settings, MAC addresses, baud rate, and network number assignment.

Step-by-step guide9 min read
NNiagara / Tridium

How to Export Niagara 4 History Data to CSV

Getting trend data out of a JACE for analysis or reporting requires manual steps or third-party modules.

Step-by-step guide7 min read
MModbus

Modbus Register Map Reading Guide for BAS

Technicians struggle to interpret Modbus register maps for VFDs, energy meters, and chillers; 0-based vs 1-based addressing causes off-by-one errors.

Reference guide8 min read
NNiagara / Tridium

How to Connect to a Niagara JACE Remotely

Technicians cannot reach JACE controllers at remote sites; VPN config, port forwarding, and certificate errors block access.

Step-by-step guide9 min read
NNiagara / Tridium

Fix Niagara 4 Certificate and SSL Errors

Workbench shows certificate errors after expiration, IP change, or version upgrade; platform daemon fails to start.

Troubleshooting guide8 min read
PyScripts & Automation

Python BACnet Scripting with BAC0

Technicians want to automate BACnet reads/writes but Python BACnet libraries have steep learning curves.

Script tutorial10 min read
MModbus

Modbus RTU Troubleshooting Checklist for BAS

Communication fails due to mismatched baud rates, wrong parity, reversed RS-485 polarity, or register addressing confusion.

Troubleshooting checklist8 min read
NetNetwork & Security

BACnet Firewall Rules: Ports to Open and Block

After network segmentation, BACnet traffic gets blocked by firewalls; technicians need exact port/protocol rules.

Config snippet7 min read
BBACnet

How to Fix BACnet MS/TP Address Conflicts

Duplicate MAC addresses on an MS/TP trunk cause intermittent communication failures and CRC errors.

Troubleshooting guide8 min read
BBACnet

BACnet BBMD Setup: Multi-Subnet Discovery

WHO-IS broadcasts stop at subnet boundaries; devices on other VLANs are invisible without BBMD.

Step-by-step guide10 min read
NetNetwork & Security

Wireshark Display Filters for BACnet

Technicians capture traffic but cannot isolate BACnet packets from general network noise.

Config snippet / cheat sheet6 min read
TTools & Libraries

YABE (Yet Another BACnet Explorer) Tutorial

Technicians need a free tool to browse BACnet devices but YABE documentation is sparse.

Tool guide7 min read
BBACnet

BACnet Device Discovery Not Working: Fix It

WHO-IS requests go unanswered; causes range from firewall rules to duplicate device IDs to subnet mismatches.

Troubleshooting flowchart9 min read
BBACnet

BACnet Secure Connect (BACnet/SC) Setup Guide

BACnet/SC requires TLS certificates, hub configuration, and WebSocket setup that most technicians have never done.

Step-by-step guide11 min read