Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

We created an app called Alarm Config that would allow the user to mass configure alarms on points. For this to work, a tag bundle and program need to be created to use with this.

...

Prerequisites:

  • Alarm Config Ext enabled in Settings app if not already enabled (refresh browser once enabled)
  • FinDbBuilderFormsExt enabled in the Settings app as well if not already enabled.
  • Tag Bundle to use for applying alarms (used in combination with this app)
  • Program to generate the alarms by said tags applied on the points (used in combination with this app)

...

Enable Alarm Config Ext

To use the Alarm Config, first the user would have to make sure to enable the AlarmConfig , then create a tag bundle and program to utilize the Alarm Config app.

...

extension.

1. To enable the Alarm Config ext, the user would open the App Launcher top left and select the Settings App.

...

4. Now that it is enabled, its time to create a Tag Bundle to use.

Creating Tag Bundle Example

1. The user would now need to open DB Builder and open the Tag Bundles tree to create a new tag bundle

2. Once there, the user will click on the (plus) towards the top right to create a new tag bundle.

3. Once selected, the will be displayed with a popup window called Add Tag Bundle

4. When filled out, the user can select the Apply button to create a tag bundle

    Image Removed

  • Name (required) - this would be a name for the tag bundle
  • Description (optional) - this is where the user can specify a description of what this tag bundle is for
  • Allow Filter (optional) - this is where the user can specify which records this will run against and apply/remove the tags
  • Tags to Add (optional) - this is where the user can specify what tags to apply to the point records
  • Tags to Remove (optional) - this where the user can specify what tags to remove on the point records if any
  • Config Type (required for Alarm Config) - this is where the user can specify what type of bundle this would be for. In our case, we choose Alarm in order for it to appear in the Alarm Config app.
    • Once Alarm is selected, the user will get another option below it to pick the Point Kind (required) - this is where the user will pick for which type of point this bundle is for (this will make the bundle only appear for appropriate type in the Alarm Config app)
      Image Removed
  • Track Bundle (optional) - this is where the user can specify if they want to track the bundle or not. What this does is adds a tag depending on what was chosen above on Config Type. In this case, Alarm was chosen, so it would add an "alarmConfig" tag on the point record and list the name of tag bundle(s) being used by that particular point. If none was selected for Config Type, the tag would be "bundles" and if History was selected, it would by historyConfig, etc.
Info
titleExample

Image Removed

  • Name - we chose "Boolean Alarms" for the tag bundle name.
  • Description - we chose "Trigger alarm if bool is true."
  • Allow Filter - we chose "point and kind=="Bool"" for the allow filter. This means we can only apply this to points that are boolean types.
  • Tags to Add - we chose to add the below tags as examples of what the user can do, but the user can choose anything they want. Only one required is the "allowProgram":
    • allowProgram (marker - required) - this tag is needed in order to allow a program to run on points, without it, the program cannot run on it only equips.
    • alarmPoint (marker - personal preference) - this is a tag to categorize this point as an alarm point. So instead of using "alarm", we recommend using "alarmPoint" because "alarm" is a system tag that is reserved for the alarms app.
    • alarmEnable (boolean - personal preference) - this is a boolean tag that we can use to remove a point from being "alarmable" if we needed to without removing it completely from the alarm configurations as we'll show you later on.
    • boolAlarm (boolean - personal preference) - this is to label the point as "boolAlarm" so that we can distinguish it between different programs in the event multiple different programs on running on it for different types of alarms. We'll be using this in the programOn so that the program only runs on these types of points.
    • alarmText (string - personal preference) - this is to add a dynamic alarmText instead of making a generic one in the alarmBlock when creating the alarms in the program. We'll be showing you how this is linked in the program later on. "bool" would be the variable name inside the program and the '$' before it is to grab the value of that variable and use it in the alarmText field. For example, if the bool variable returns the point navName, it will inject that navName in the alarmText field and say something like "Fan is true" for example.
  • Config Type - we chose Alarm since this is an example of how the Alarm Config works
    • Point Kind -  we chose Boolean since we'll be created boolean alarms.
  • Track Bundle - we enabled this to show you what would happen when applied

Creating Program Example

1. The user will navigate to an equip which the point lives under and create a new program.

  • In our case, we navigated to our VAV-01 and created a new program that is below.

    Image Removed

The properties we filled out are below:

  • Name (required) - we named the program "Bool Alarms"
  • Description (optional) - we added a short description of "Trigger an alarm if bool is true"
  • Program On (required) - we added "alarmPoint and boolAlarm and alarmEnable==true and kind=="Bool"" as the filter. This program will only run on those points which match this filter.
    • alarmPoint - we added this in the filter so that it looks for all boolean points that are tagged as alarmPoint
    • boolAlarm - we added this so that we know that this is for boolean alarms not some other logic like occupancy or temps etc
    • alarmEnable - this is a boolean tag so we can easily remove a point from being alarmable if we toggle it to false on the point itself. Its not needed but is only an example of what you can do.
    • kind - this is a string tag that specifies the type of point to look for and not some other type

2. Once that is filled out, the user will select the OK button to continue and create the program.

3. With the program editor open, the user will select to Add Variables to add some tag variables in the program.

   Image Removed    Image Removed

...

titleProperties

We'll be adding three tags:

  • curVal (boolean) - this would be to get the curVal of the boolean points
  • navName (string - variable renamed to "bool") - this would be to get the navName of the point and use dynamically in the alarmText tag. We could have left the variable name as navName and instead of specifying "$bool" in the alarmText, we could have specified "$navName".
  • alarmText (string) - this would be to make the alarmText dynamic per point in case we wanted to change what the text says on some instead of all having the same text.

curVal:

Image Removed

  • Tag Name - this is the name of the tag we are looking for on the target (point), it is case sensitive
  • On - this is to specify where this record is found based on the target that the program is running on. Since the program is running on a point (itself), then we pick a target.
  • Data Type - this is a boolean point and the curVal is boolean type, so we need to specify that it's a boolean
  • Is - this to know if we are to read or read and write to this tag. In this case, we are only reading the value to trigger an alarm so we leave as read-only.

navName:

Image Removed

  • Tag Name - this is the name of the tag we are looking for on the target (point), it is case sensitive
  • On - this is to specify where this record is found based on the target that the program is running on. Since the program is running on a point (itself), then we pick a target.
  • Data Type - the navName tag is a string because the name can be anything, so we need to specify that its a string
  • Is - this to know if we are to read or read and write to this tag. In this case, we are only reading the value of the name so we leave as read-only.

alarmText:

Image Removed

  • Tag Name - this is the name of the tag we are looking for on the target (point), it is case sensitive
  • On - this is to specify where this record is found based on the target that the program is running on. Since the program is running on a point (itself), then we pick a target.
  • Data Type - the navName tag is a string because the name can be anything, so we need to specify that its a string
  • Is - this to know if we are to read or read and write to this tag. In this case, we are only reading the value of the name so we leave as read-only.

7. Once the three tag variables are created, the tags will be available to use in the program.

8. Now the user would create the logic they would want

  • In our case, it's a simple where if the boolean point is true, we'll be triggering an alarm.

Image Removed

9. We'll toggle to the Alarm routine tab towards top left/center.

Image Removed

10. Then we drag out an alarmBlock from the library bottom left.

Image Removed

We then link that to the routine start block and set the below:

  • alarm "Select a variable" - we select the curVal variable to set as the trigger for the alarm since the alarmBlock takes boolean variables only to trigger alarms.
  • alarmText - we link the alarmText variable to a strMacro block first, then to the alarmText property. The reason we need a strMacro block, in this case, is that we are using the '$' in the alarmText to generate a dynamic string that pulls the value of a variable. In order for that to work, it needs to go through the strMacro block. If we didn't use that dynamic feature, we would just link directly to the alarmText property on the alarmBlock.
  • instructions - we put something random here like "Please check this". Note: this can be made dynamic like the alarmText if the user chose to add another tag called "instructions" to the point. Then they can change it per point if they wanted some to be different.
  • priority - we set this to 100

Image Removed

11. Now the user will save the program and we'll be ready to use the Alarm Config app and configure boolean points as alarmable.

Using Alarm Config App

To use the Alarm Config app, the user will:

...

If the user were to have toggled the "alarmEnable" property tag, it would prevent the program from running on it since in the default programOn filter we said it had to be true.

...