Vendor-neutral troubleshooting guides, scripts, tool tutorials, and configuration references for BACnet, Niagara, Modbus, Facility Explorer, and building automation networks.
54 articles
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
ThingsBoard IoT Gateway for Building Automation
Integrating legacy BAS protocols (BACnet, Modbus) with modern IoT platforms.
Facility Explorer FX60 Network Configuration
FX60 DIN-rail controllers need correct LAN1/LAN2, HTTPS port 5011, and BACnet driver setup.
VOLTTRON for Building Energy Management
Open-source platform from DOE for building controls and distributed energy, but documentation is fragmented.
How to Run a BAS Cybersecurity Audit
Building owners face pressure from insurers and regulations but have no BAS-specific audit checklist.
Niagara Driver Configuration Cheat Sheet
Setting up BACnet, Modbus, and LonWorks drivers in Niagara Workbench involves non-obvious configuration steps.
BACpypes3: Custom BACnet Applications in Python
Advanced BACnet automation requires understanding the BACpypes3 library beyond BAC0's abstractions.
OPC UA with Python: asyncua Quick Start for BAS
Connecting to OPC UA servers in building automation using the asyncua library.
KNX Network Scanning with KNXmap
Auditing and scanning KNXnet/IP gateways for security assessment or device inventory.
BACnet MS/TP Wiring Best Practices
Improper wiring (T-taps, missing termination, wrong cable) causes intermittent failures that are hard to diagnose.
IEC 62443 Security Zones for Building Automation
IEC 62443 guidance is abstract and manufacturing-focused; BAS professionals need a practical translation.
BACnet Trending: Configure and Export Trend Logs
Extracting historical data from BACnet Trend Log objects for analysis or compliance reporting.
Troubleshooting a Slow Niagara JACE
JACE becomes sluggish from excessive history logging, too many Workbench sessions, or SD card degradation.
BACnet Network Number Planning Guide
Conflicting network numbers after adding routers cause routing loops and device unreachability.
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.
Modbus RTU to TCP Gateway Setup Guide
Legacy Modbus RTU devices need to connect to IP-based supervisors; gateway selection and configuration is confusing.
Niagara Workbench Productivity Tips and Shortcuts
Engineering in Workbench is slow; technicians miss batch editing, search sidebar, and compositing features.
Facility Explorer FX80 Initial Setup Checklist
FX80 arrives factory-commissioned but default credentials and network settings must be changed before deployment.
VLAN Design for Building Automation Networks
IT teams lack guidance on structuring VLANs specifically for BAS protocols and broadcast traffic.
PyModbus Quick Start: Read Registers with Python
Technicians want to script Modbus reads for testing or data collection but need a simple starting point.
BACnet Duplicate Device ID: Find and Fix It
Two devices sharing a device instance number cause data collisions, lost messages, and control failures.
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.
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.
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.
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.
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.
Fix Niagara 4 Certificate and SSL Errors
Workbench shows certificate errors after expiration, IP change, or version upgrade; platform daemon fails to start.
Python BACnet Scripting with BAC0
Technicians want to automate BACnet reads/writes but Python BACnet libraries have steep learning curves.
Modbus RTU Troubleshooting Checklist for BAS
Communication fails due to mismatched baud rates, wrong parity, reversed RS-485 polarity, or register addressing confusion.
BACnet Firewall Rules: Ports to Open and Block
After network segmentation, BACnet traffic gets blocked by firewalls; technicians need exact port/protocol rules.
How to Fix BACnet MS/TP Address Conflicts
Duplicate MAC addresses on an MS/TP trunk cause intermittent communication failures and CRC errors.
BACnet BBMD Setup: Multi-Subnet Discovery
WHO-IS broadcasts stop at subnet boundaries; devices on other VLANs are invisible without BBMD.
Wireshark Display Filters for BACnet
Technicians capture traffic but cannot isolate BACnet packets from general network noise.
YABE (Yet Another BACnet Explorer) Tutorial
Technicians need a free tool to browse BACnet devices but YABE documentation is sparse.
BACnet Device Discovery Not Working: Fix It
WHO-IS requests go unanswered; causes range from firewall rules to duplicate device IDs to subnet mismatches.
BACnet Secure Connect (BACnet/SC) Setup Guide
BACnet/SC requires TLS certificates, hub configuration, and WebSocket setup that most technicians have never done.