Skip to content

Release Notes

3.6 / September 2024

  • New "point details" feature in Object Explorer
    • Pin individual points to the Points Detail tray
    • View recent time series and histograms for the pinned points
    • Directly read and write to these points
  • Git support for Application authoring
    • View diffs, commit, and push changes made to local applications
    • Authenticate with GitHub

3.5.0 / July 2024

  • BACnet link layer enhancements
    • 🆕 Support for BACnet/Ethernet
    • Support for BACnet routing between Ethernet and IP BACnet networks
    • Support for creating local "virtual" devices for better support for a gateway use-case
  • Support for creating and editing local BACnet objects in the management console

3.4.0 / April 2024

  • 🆕 Fine-grained API authentication
    • Create OAuth applications with restricted scopes to limit access to Normal APIs
    • Integrate with apps so apps are "sandboxed"; for example install an app with only read-only access.
  • 🆕 Automatic Data Sampling
    • Automatically sample points in the background to maintain updated statistics for use when labeling and browsing.
    • Display a histogram of point values in Object Explorer.

3.0.0 / October 2023

The 3.0 release adds support for JavaScript hooks, which run within Normal.

  • 🆕 SDK framework
    • Write JavaScript hooks right in your browser that run inside of Normal.
    • Run the hook automatically, on a schedule; when new data is available; or when called from a REST endpoint.
    • Share code by publishing your hooks on GitHub, which can be downloaded and run by others.
  • 🆕 BACnet Console
    • Read and write to any BACnet property, directly from the Object Explorer.

Upgrade Notes

  • The Redis key format for points has been changed in 3.0 to support more flexible queries. Data are automatically migrated.
  • Point attributes are now shared across all layers; only attributes can be set per-layer.

2.0.0 / Feburary 2023

The main focus of this release is support for system modeling; however, there many other enhancements and goodies.

  • 🆕 UI refresh: top-to-bottom update of Normal according to our new style guide. Say hello to purple!
  • 🆕 Support for system modeling
    • Create models of equipment derived based on device profiles.
    • Use powerful data filtering and normalization features (such as JavaScript UDFs) to extract equipment instances from BACnet metadata.
    • Apply consistent point labels in bulk to equipment, based on the Ontology Alignment Project.
    • Model relationships between pieces of equipment.
    • Validate that modeling has been performed correctly.
  • 🆕 Automated backups: schedule automated backups of your local database to a remote server
  • 🆕 Configuration page: edit many different settings through a new configuration page
  • Command Service v2
    • Read and write points without needing to manually construct a BACnet request
  • Object Explorer: many UX enhancements to filters and views to make them even more intuitive.
  • Improved error resolution workflows
    • Quickly take action from the Dashboard or Device Health to rescan, delete, or disable devices with errors.
  • License management: easily activate a license using a code to track license utilization.

1.5.0 / July 2022

  • Advanced BACnet support: full support for ANSI/ASHRAE Standard 135-2020
    • All standard object and property types can be decoded using any confirmed service using the BACnet V2 API. The v1 API remains fully supported for simpler use cases.
    • Scanning of Calendar and Schedule objects is now supported.
  • Local BACnet server
    • Up to 250 analog value, multi-state value, and binary value object types can be created and managed using the API.
  • Modbus TCP support
    • Support for creating and importing register maps to specify data types for Modbus devices
    • Support for creating connections to Modbus devices (Modbus TCP and Modbus RTU over TCP)
  • Support for automatic pattern creation from templates
  • nfcli is now the official Normal Framework CLI for scripting and automation
    • Query, edit, and delete points
    • Manage local BACnet objects
    • Manage Modbus device profiles and connections
    • Backup and restore NF databases

Deployment notes

  • Mounting the NF container read-only is now supported to comply with docker hardening guidelines

1.4.0 / May 2022

  • Single-container release: NF now runs as a single container. See the Docker documentation for more information.
  • Azure IoT Edge Modules is now a supported deployment target.
  • Sparkplug-over-HTTP is available for simplified data collection.

1.3.0 / April 2022

  • Object Selection Interface
    • Filter settings and groupings in the Object Selection console can now be saved as Views
    • Object selection actions have been moved to a “Floating Action Button” to make the toolbar sleeker
  • BACnet Support
    • Automatic background BACnet discovery is now available; configure in the Advanced page of BACnet settings. This allows either periodic global discovery, or the triggering of object scans when the device's Database-Revision property changes.
  • Templates
    • The template editor now supports full-text search / filter of the template being edited
  • The console now displays the deployed software version in the footer
  • A new command-line utility, nfcli, now supports backing up and restoring NF sites.

Upgrade notes

  • Going forward, releases will be tagged with both the minor version and the patch version (e.g., both 1.2 and 1.2.2). Deployment scripts wishing to track the current release can use the normalframework/nf:1.2 tag to receive updates without editing the deployment.
  • The BACnet service now writes multiple configuration files to the directory specified on the command line; the previous behavior (where the command line argument is the config file) is depricated. The main file is bacnet_settings.pbjson.

1.2 / March 2022

  • Advanced Object Selection Interface
    • Dynamically filter and group all objects in the system
    • Control which attributes are shown in the table
    • Perform bulk operations using filters and groups
  • Open templating subsystem
    • Normalize your data using Brick, Haystack, or your own schema
    • In-browser template editor including auto-complete for Brick 1.2 and Haystack ontologies
    • Share and version templates with native git support.

Upgrade notes

  • The template service requires deploying a new backend component; see docker-compose-1.2.yml
  • Some data migrations are required and will run automatically. Be sure to back up your redis database before upgrading.

1.1 / November 2021

  • Completely updated management console UX
    • New theme and visual language across all components
    • Provide detailed device health reporting based on overall device error rates
    • Enhanced filtering of BACnet objects and visualization of time-series
    • Support for complex device discovery workflows
  • Introduction of layer support for metadata namespaces
  • Support for Auth0 and Azure AD B2C login providers
  • Support for Tailscale networking with SSL certificate support

Upgrade Notes

  • Metrics for device health are now based on all interactions with a device; as a result the device health history will appear blank after an upgrade
  • The BACnet layer hpl:bacnet:1 is no longer indexed by default; use the default layer to search for BACnet objects.

1.0 / September 2021

  • Initial release of NF Console