Point Property Sheet

 Any new point created in the FIN Framework - DB builder app is going to have about the same properties (with the exception of the type-specific ones):

navName & Type

  • The navName is essentially the name of the Point and how it will appear in the Equip Tree. The navName will be set in the first field.

  • The next field, called Point-Type, will allow the user to choose if the point is a: sensor, softpoint (setpoint), or a command.


The disMacro is used to tell the software how to create the dis. (short for display name) The display name of the point is a way to see the point as more than just the point name and could include the Site name and Equip name. Using special codes, the framework will build the dis based on how the user defines those codes, and it is set by default using this scheme: $equipRef $navName.

The default value can be changed by selecting on the text-field

Point Kind

 The point kind property enables the user to choose the kind of point to add:

  • numeric

  • boolean

  • string

  • enumeration

To do so, the user will simply choose the desired option from the drop-down.


This property allows the user to set the point to be scheduled and choose at what level will the schedule write. Points have to be set to scheduled to be controlled by an internal FIN schedule.

Enable Schedule

To enable this, the user will:

  1. Click on the toggle bar to make the schedule active

  2. Once activated, select on the Save button located on the bottom right

Advanced View

Basic View

Schedule Level

If the user wants to change the schedule level, they will need to:

Advanced View

  1. Make sure that the advanced view has been activated   

  2. The user will select on the text-box for Schedulable, where they can change the schedule level

  3. Once changed, they will need to select on the Save button located on the bottom right

Basic View

  1. Select on the information icon , this will open a pop-up window

  2. The user will navigate to the property tag called schedulables

  3. In there, they can change the level number by selecting on the text-field

  4. Once changed, they will need to select on the Apply button on the bottom right of the pop-up window

Is Local/Connected Point

Depending on how we are creating the point, it can either be a local(doesn't get data from an actual device) or connected point(meaning from an actual device).

Usually, the connected points are created by dragging and dropping the points from the connector inside the DB builder and not by manually making a point and creating the references to the connector.

Local Point

If the point is local then it will display only:

  • site ref: this represents a reference to the site under which the point is located

  • equip ref: this represents a reference to the equip under which the point is located

Connected Point

If the point is connected beside the site and equip ref, there is going to be:

  • Connector Ref: this represents a reference to the connector under which the point is located (depending on protocol type, this tag could be bacnetConnRef, modbusConnRef, haystackConnRef, etc.)

  • Cur Path: this represents a reference to the point location from where the current value will be taken (depending on protocol type, this tag could be bacnetCur, modbusCur, haystackCur, etc.)

  • Write Path: (if writable) this represents a reference to the point location from where the current value will be written (depending on protocol type, this tag could be bacnetWrite, modbusWrite, haystackWrite, etc.)


The toggle bar is activated by default, and it enables the point to have a current value.

Advanced View

The curConvert would be activated if the point is a connected point and not a local point

Basic View

Is Writable

This option allows the user to make the point writable or not. By default, the write level is 17.

Advanced View

Basic View

Once this option is enabled, the actions menu in the top right corner will become enabled.

Enabling a Point Action

After an action is used, the writeLevel will be updated to the corresponding write level of the action selected (either manual or emergency).

For Example: The user is using the Manual Set, this will set the write level to 8.

Advanced View

If the user selected on the writeArray option, they are able to see more information in regard to the action the user selected. They will be displayed with the value, who set the action, and when the action expires

Basic View


Advanced View

History: This option allows the user to make a point to have a history.

There are 4 different types of history mechanisms that a user can choose from:

IMPORTANT NOTE: it is always preferable to use remote collection with history synchronization instead of local collection when possible. Remote collection has the following advantages:

  • is always more efficient

  • ensures no data is lost during network outages

  • is much easier to tune since increasing the sync frequency does not result in data loss


The Synchronized option will make the history to be constantly synchronized with the device that the point originated from. The user can enable and configure the sync frequency in the Settings app.


The Collected option will make history be collected locally on the FIN server based on the interval chosen on the hisCollectInterval and/or the hisCollectCov properties. The hisCollectCov tag is a marker tag on a Boolean, Enum, or String point.  However, on a Number type point, the hisCollectCov is a property tag that includes the tolerance (or difference) a point must change before it is collected.

  • if configuring hisCollectInterval in seconds, it must be evenly divisible into 60sec minute

  • if configuring hisCollectInterval in minutes, it must be evenly divisible into 60min hour

  • If configuring hisCollectInterval in hours, it must be evenly divisible into 24hr day

  • COV collection is rate throttled using a limit determined as follows:

    • use hisCollectCovRateLimit if configured

    • for numeric points with hisCollectInterval, COV will never collect faster than 1/10 of the interval or 1min (whichever is lower)

    • for numeric points without hisCollectInterval, then use 1min as rate limit

    • fallback to 1sec rate limit for non-numerics

  • The following tags may be used to tune local history collection:

    • hisCollectNA (marker): Historize the NA value whenever the curVal is null or curStatus is not equal to "ok". If this marker is omitted, then no value is logged in this sitaution. This behavior may be changed on for the entire project by adding this tag as a point setting.

    • hisCollectCovRateLimit (duration): It is a duration tag that rate limits the frequency for hisCollectCov. When configured COV logging will never log any faster than this frequency. For example if set to 10sec, then the historian will log no faster than every 10sec even if the underlying data is changing every second.

    • hisCollectWriteFreq (duration): This tag configures how long to buffer collected history items in memory before flushing them to the historian. If this tag is missing, then collected items are immediately flushed to the historian and to disk. But when this tag is configured with a duration number, items are be buffered in memory and then written to the historian in batch. Batch writes enable more efficient compression of the history data and allows you to tune how often data is sync'ed to disk.

  • Additional history tags:

    • hisTotalized (marker): Indicates values which are a continuous stream of totalization. History data reads and should be normalized by computing the delta.

    • hisMode (string): Indicates the way that history data is collected for a point. The value of this tag can be either sampled, cov, or consumption.

      • sampled - Data is sampled on a regular interval. The timestamp indicates exactly when the sample was taken, and we assume linear interpolation between samples.

      • cov - Data is logged when it changes. The means the timestamp indicates exactly when it changed (inclusive) and it remains that value until the next sample's timestamp (exclusive).

      • consumption - Integral data is sampled on a regular interval and logged at the end of the interval. The timestamp indicates the end of the interval. Therefore, the raw data is logged as start exclusive, end inclusive. This is mode is typical for consumption meters.

    • hisRollupAutoMinInterval (duration): Forces hisRollupAuto() to do a rollup using this interval when none is specified and the range of the source history grid is less than 2 days. This tag is primarily intended to be used on high frequency histories such as secondly collections to ensure that querying a single day doesn't result in an overwhelming amount of data.


The Imported option indicates that history is/was imported via a CSV file to the point. The user can use the Import History tool to import the CSV history.


The Computed option is history that is generated on demand via a function selected in the hisFunc field - the user will have already created a history function for their computed history. The history function record needs to have the hisFuncReady marker tag for it to show up in the hisFunc dropdown list.

Basic View 

Marker Tags

In this section, the user will add all the necessary marker tags to the record.

To do so, the small plus sign will be pressed and a tag will be selected and the ok sign pressed.

  • The user can press the Haystack tags bar to see all the tags, or the bar can be used as a search bar

Property Tags

The last section is represented by the Property tags, that add the type to the tag capability, meaning the user can here create:

  • boolean tags

  • string tags

  • uri tags

  • numeric tags

  • refID tags

  • date tags

  • time tags

  • dateTime tags

Adding a Property Tag

  1. The user will select on the  to be able to add a property tag

  2. This will display the following

    1.  Type of Property

    2. Tag Name

    3. Tag Value

  3. After filling out the text-fields, the user will select on the checkmark(√ ) to commit the changes.

If the user wants to change the type of property, they will need to select on the dot directly. This will open a pop-up window with a selection of the type of property a user can assign to their property tag. 

Essentials Icons

The essentials Icons are are present in the top right corner, and they represent:

  • Property Editor

  • Tools

  • Point Debug Info

  • Show Trend

  • Actions

Property Editor

The Property Editor is an advanced editor that allows the user to see all the available tags on the selected record, it also allows the user to add or modify applicable tags.

For more information, you can find it at this following document: Property Editor



The tools button  will display a drop-down list of all the available one at this level. For more information, check the Tools

Point Debug Info

The Point Debug Info button will be available only if the point is a connected one. This way the user can figure out easy and fast what is the problem with the connection (if there is one).

Show Trend

The show trend icon will only be available if the point Has History option is checked.

The button will display a quick preview of the history for today and will allow the user to jump to the historian App.


The action icon  will be available only if the Is Writable option is checked.

  • The set of action will depend on the type of point.

To apply one action the user will simply select it and a new window with the appropriate settings will pop up.

Editing the Actions Menu

The Actions Menu can be edited in order to change the verbiage of the command in the Menu or to remove certain actions from showing for all users.

  1.  In the Point Property Sheet, select on the advanced view 

  2. In the writable cell, there is a section called Actions. Select on the arrow which is located on the far right of the text field.

  3. Once open the user can edit the actions to their preference.

Outline of Action Properties

Try it out:

  1. In the 'Actions' tag section, edit the 'dis' portion of the tag contents as desired. For instance, to change the Emergency Actions
    to say ESTART, ESTOP, and EAUTO, simply replace the wording in each action line dis the section as desired. Remember that 
    each Action dis has to be in double-quotes, as seen in the above picture. 

    NOTE: After you have finished editing the text, you will need to use the mouse to click in another property in the editor
                 in order for the editor to 'see' that you have finished your edits. Then you can click on "Apply" in the bottom right corner.

  2. For instance, Emergency Active command can be changed, by making that line read:
    "ESTART","pointEmergencyOverride(\$self, true)",9

  3.  So, you could change all the Emergency Actions from their default text to read as shown below:

Editing the Actions Menu to issue BACnet Commands

BACnet command syntax

In the example below, the 7 default actions are in place as they were. But, 3 action lines have been added that issue BACnetWrite commands to the point at BACnet emergency level 1. 
You will notice the bold expr portion of the action inside the quotes to make it easier to clearly see the command expression required. 
The \$self text indicates to issue the action to the point currently selected. 

ver:"2.0" dis,expr,hvac_finCat "Emergency Active","pointEmergencyOverride(\$self, true)",9 "Emergency Inactive","pointEmergencyOverride(\$self, false)",9 "Emergency Auto","pointEmergencyAuto(\$self)",9 "Manual On","pointOverride(\$self, true, \$duration)",6 "Manual Off","pointOverride(\$self, false, \$duration)",6 "Manual Auto","pointAuto(\$self)",6 "Set Default","pointSetDef(\$self, \$val)",3 "Set Bacnet level 1 ON","bacnetWriteObjectProperty((\$self)->bacnetConnRef, (\$self)->bacnetWrite, \"present_value\",1,1)",9 "Set Bacnet level 1 OFF","bacnetWriteObjectProperty((\$self)->bacnetConnRef, (\$self)->bacnetWrite, \"present_value\",0,1)",9 "Set Bacnet level 1 Null","bacnetWriteObjectProperty((\$self)->bacnetConnRef, (\$self)->bacnetWrite, \"present_value\",null,1)",9

This action menu content will produce the following action menu:

CAUTION: You should always be aware that by issuing BACnet commands in this manner, you are bypassing both the internal FIN Stack point priority array as well as the normal BACnet connector architecture. The command will be issued directly to the connected point and BACnet device; but essentially, the local point will only see the end result coming back through the connRef and the associated bacnetCur tag. The BACnet command being issued will not display in the local priority array; and therefore, could cause some confusion for the endUser. A proper understanding of this, and briefing of this result should be extended to the building operators.