Notes
Engineering notes
Answers to the narrow questions that cost a day each and are written down almost nowhere. No product pitch in them — if a note saves you hiring anyone, it has done its job.
Integration and protocols
Reading a protocol off the wire rather than out of the manual. None of these needs a Niagara station to be useful.
When the document and the code disagree
The method behind a protocol-discrepancy audit: treat a documented default, range or address as a claim, then settle it against the code, twice.
- Modbus
- BACnet
- Integration
- Commissioning
What a BACnet discovery sweep actually tells you
Who-Is stops at the subnet, I-Am carries no device name, and an object list from a device that cannot segment has to be read one index at a time.
- BACnet
- Discovery
- Commissioning
Why a Modbus point reads the wrong register
Modbus decimal addressing is zero-based, vendor documentation is not, and the Address Format property decides which of the two you are typing.
- Modbus
- Integration
- Station engineering
Reading an unfamiliar MQTT broker in a building
A subscriber cannot list topics, the retain flag is how you tell a stored value from a live one, and a duplicate client ID disconnects someone else.
- MQTT
- Integration
- Commissioning
Connected devices
Devices on a radio network, and what has to be true before their data is worth anything to the system on the other end.
Reading a LoRaWAN payload decoder before you trust it
Eight things found by executing vendors' published JavaScript codecs, and what each one does to a Niagara point once the data lands.
- LoRaWAN
- Integration
- Commissioning
When the datasheet link in the device registry is dead
Every product and datasheet link in the public LoRaWAN device registry, requested: 213 of 1,568 are gone, and a wall is not a break.
- LoRaWAN
- Measurement
- Commissioning
Bringing LoRaWAN and MQTT data into a Niagara station
Where abstractMqttDriver and jsonToolkit stop, and what LoRaWAN decoding, topic design, and store-and-forward buffering add on top.
- Integration
- LoRaWAN
- MQTT
Agents and AI
Giving a program rather than a person access to a live control system: what the station enforces, and what the client has to enforce for itself.
What a Niagara station's oBIX server actually exposes
The mount point, the three verbs, the twelve lobby branches, the five that appear in no listing, and where the open alarms actually are.
- Integration
- Agents
- Station security
Letting an agent write to a control system
A write to a station is a plant movement at a priority, not a variable assignment — and the export list is not the fence it is taken for.
- Agents
- Permissions
- Station engineering
The web and the pipeline
What a stranger can measure about a site from outside it, and the one-line fix behind each measurement. None of these has a building in it.
The http redirect a static host does not add for you
A host that serves https does not always redirect plain http to it. What a plain-http request really does, and the one-line fix on four common hosts.
- https
- Static hosting
- Deployment
The certificate renewal nobody is watching
Read notAfter off the handshake yourself, learn the four ways an automated renewal still fails, and monitor the certificate a visitor is actually served.
- TLS
- Certificates
- Monitoring
What a browser does with http assets on an https page
A stylesheet or script fetched over http on an https page is blocked outright. What a browser does with each kind, and how to find every one in your HTML.
- https
- Browsers
- Front end
A link check that runs before a visitor finds the 404
A link check over your own built output, in CI: the four classes of break it finds, and why it works locally and it worked last deploy both miss them.
- Deployment
- Front end
- Testing
The one line that decides how a phone renders a page
With no viewport meta tag a phone lays a page out at desktop width, scales it down, and matches no media query. What the tag changes, and what not to add.
- Mobile
- Front end
- CSS
What unused CSS actually costs a small site
A coverage audit calls over a third of this stylesheet unused. Across every page, 2.5% of it is. The gap is cache, and the real waste was in the head.
- CSS
- Performance
- Static hosting
What a spreadsheet rewrite actually costs
108 published workbooks, 464,872 formula cells: 99.1% translate mechanically. The cost is the 58.7% of columns computed two ways.
- Spreadsheets
- Web apps
- Measurement
Modules and deployment
Building something that installs, runs and keeps running on a controller.
Which Niagara version to stamp a module for
A module's declared dependency version is a floor, not a pin. Build against the newest SDK you have and stamp for the oldest station it has to load on.
- Module development
- Mixed estates
- Build tooling
What a station checks before loading a module
Niagara's four verification-mode values, what each demands of your certificate, and the permissions that force a signature check even in low mode.
- Module signing
- Certificates
- Deployment
Pure Java, or it will not run on a JACE
A controller is an ARM host with a fraction of a server's memory. Native libraries, JNI and heavyweight dependencies do not survive the move from a PC.
- JACE
- Controllers
- Module development
Commissioning a JACE-8000 without locking yourself out
The factory address, the passphrase with no recovery path, and the account you are made to delete — the Niagara 4 steps that strand a new controller.
- JACE
- Commissioning
- Deployment
Platform or station: two connections, two sets of logins
Two processes, two Java VMs, two logins and two file trees — and most "it works in Workbench but not the browser" starts here.
- Platform
- Station engineering
- Workbench
How to build and load a custom Niagara 4 module
What a Niagara module actually is on disk, the two ways to build one, and the three Software Manager refusals that actually mean something.
- Module development
- Build tooling
- Deployment
What Java 25 does to Niagara's module permission model
Niagara's module permission model is built on Java's Security Manager. On a Java 25 JVM it cannot be installed, so the checks stop happening.
- Module development
- Station security
- Migration
BAS or BMS: where a Niagara station actually fits
BAS and BMS mostly mean the same thing. The distinction worth tracking is single-vendor versus open — and where a Niagara station sits either way.
- Building automation
- BMS integration
- Terminology
Drivers and field buses
Getting values off equipment and commands back onto it, and why what you get is wrong or late.
Why a BACnet write relinquishes on its own
Fallback is level 17, which is not a BACnet priority. What the driver sends when a point falls to it, and why the in slot sometimes changes nothing.
- BACnet
- Integration
- Station engineering
BACnet MS/TP on a JACE
Baud, MAC address, Max Master and Max Info Frames. Four settings on one Link component decide whether an RS-485 trunk works, crawls or drops the token.
- BACnet
- MS/TP
- Commissioning
What Niagara does with the Modbus address you type
The address field is a format plus a string, and the format defaults to hex. What each format does to the number, and where the boundaries fall through.
- Modbus
- Integration
- Station engineering
Why a station polls too slowly
Slow, Normal and Fast are three numbers you choose, and one default tuning policy applied to every point is the usual reason a station feels sluggish.
- Station engineering
- Performance
- BACnet
Why a Modbus network sits at 95% busy time
Busy time is the duty cycle of one poll thread per network, not host CPU. What it measures, where the time goes, and what actually brings it down.
- Modbus
- Performance
- Station engineering
A JACE-8000 has no onboard I/O: using the Nrio driver
Remote IO-R modules on RS-485, one network per port, and the conversion list Workbench will happily let you get wrong.
- JACE
- Drivers
- Commissioning
Station engineering
The work between a working driver and a station somebody else can maintain.
Why a writable point ignores the value you set
Sixteen priority inputs, two of them reserved for right-click actions, a fallback underneath, and a BACnet scheme wired to none of it.
- Station engineering
- BACnet
- Commissioning
Renaming and tagging points in bulk
Point names arrive from the field device and there is no standard. What to use to select, rename and tag in bulk — and what a rename quietly breaks.
- Bulk engineering
- Tagging
- Workbench
Tags, dictionaries and the licence you need
Tagging is how a station describes itself to software that did not engineer it. Three kinds of tag, one namespace, and a licence feature that gates it.
- Tagging
- Data modelling
- Haystack
A navigation tree that builds itself
Hierarchies generate the nav tree from tags and NEQL queries instead of hand-placed nodes — and the cache hides your edits until you rebuild it.
- Hierarchies
- Tagging
- Station engineering
Templates: build the AHU once, deploy it fifty times
Component, application and station templates do different jobs — and only one of them supports bulk deployment from a spreadsheet and upgrade in place.
- Templates
- Bulk engineering
- Station engineering
One PX sheet for every AHU
The Px editor binds absolutely by default, which is why a graphic works for AHU-01 and nothing else. Relativised, one sheet serves the whole plant.
- PX graphics
- Standard sheets
- Reuse
3D floorplan graphics, and what can actually bind to them
A 3D render is artwork made outside Niagara. What format it arrives in, what can bind to it, and why plan view wins for 200 zone temperatures.
- PX graphics
- JACE
- Workbench
What a PX page actually weighs, and the switch that halves it
A PX view ships about 2.3 MB of framework JavaScript before your graphic. Gzip is off by default, and /module/* bypasses the filter that would do it.
- PX graphics
- JACE
- Performance
Conversion links: what a mismatched wire really does
Link a boolean to a numeric and Niagara inserts a converter with its own properties. Here is what each one assumes on your behalf.
- Station engineering
- Wire sheet
- Workbench
Data, alarms and time
What the station records, who it tells, and when it decides to act.
Getting data out of a Niagara station
REST, MQTT, a relational history database, file export or an HTTP client. Which suits which consumer, and what each one costs you to run.
- Integration
- Histories
- MQTT
What the Niagara MQTT driver will and will not do
It is licensed, it is capped below your licence, it is a client only, and its Discover button never contacts the broker.
- Integration
- MQTT
- Drivers
History capacity on a JACE
The default capacity is 500 records, the default name collides, and one setting decides whether a full history overwrites data or stops collecting.
- Histories
- JACE
- Station engineering
Why an alarm never reached anybody
Detection, alarm class and recipient are three separate objects. Check them in that order to find the unlinked step that kept the alarm inside the station.
- Alarms
- Station engineering
- Commissioning
Niagara schedules: special events and master copies
Special event priority is list order, a partly-filled special event falls back to the weekly schedule, and an imported schedule cannot be edited locally.
- Scheduling
- Station engineering
- Commissioning
Running an estate
Doing the same thing to fifty stations, and moving them forward a version.
Scheduled station backups, and the gap
A Supervisor can back up every station in its Niagara Network on a schedule. The station it does not cover that way is its own.
- Backups
- Provisioning
- Supervisor
Doing one thing to fifty stations at once
Provisioning runs platform tasks across a whole NiagaraNetwork from one Supervisor connection — and the obvious backup action is the wrong one.
- Provisioning
- Estate management
- Supervisor
What actually blocks an AX to N4 migration
A station cannot migrate until every module it uses has been refactored for Niagara 4 — and licences, users and permissions all change shape on the way.
- Migration
- Estate management
- Module development
What happens to third-party modules moving from N4 to N5
A module with no Niagara 5 build can stop the migrator outright, and one that has a build can still fail to load. What breaks, and why.
- Migration
- Estate management
- Module development
What a static Niagara 5 module scan actually finds
Reading a module's bytecode against Java 25 gives a per-module answer. What it finds, what it cannot tell you, and the false alarms it avoids.
- Migration
- Module development
- Estate management
When a third-party module's vendor no longer exists
The Marketplace storefront is gone and vendors are winding down. How to list which third-party modules a station depends on, and who owns each.
- Migration
- Estate management
- Drivers
JACE-8000 to JACE-9000: what the licence transfer does and does not do
The JACE 8000 to 9000 licence transfer, step by step: what it requires, what it does not include, and which parts cannot be undone.
- JACE
- Migration
- Licensing
Security and access
Who can reach the station, and what they can do once they are in.
The certificate on a new JACE
Every station starts with a self-signed certificate it generated itself. What that is good for, what it is not, and what breaks on the day it expires.
- TLS
- Certificates
- Commissioning
Roles, categories and the grid between them
A user authenticates and every view is empty. Permissions are a grid of category against level, held by a role — read it in that order to find the gap.
- Station security
- Permissions
- Commissioning
Authentication schemes: each Niagara user picks one
A station runs several login mechanisms at once and the choice is per user, not per station. What each one is for, and what 4.15 added that 4.14 has not.
- Station security
- Permissions
- Station engineering
Why these exist
Written from the framework, not from memory
Every claim here is checkable against a stock installation, a published standard or the code itself — for the station notes that means the documentation modules, the default properties and the shipped drivers — or it is flagged as an opinion. Where the honest answer is "it depends", the note says what it depends on instead of picking a side.
Next step
Tell us the version, the hardware, and what it has to do.
You will get a written scope and a fixed price against it. If the honest answer is that you do not need us, you will get that instead.