browse

| Overview

Site Sequencer is a 75F internal application. It is another milestone in the journey towards platform play and greater interoperability, of a wide range of BMS devices. It is an enhanced application that could be an alternative to wire sheet programming, which has existed for decades.

Site Sequencer with Blockly aims to make custom programming of Building Automation Systems effortless. Users can visually assemble building blocks to create a custom control sequence, for any HVAC or building automation application.  

The new approach aims to help sequence building, similar to coding but with a UI interface. It features a fresh look and feel that is easily accessible, really appealing, and will dramatically streamline the overall logic programming workflow.  

| Disadvantages With Wire Sheet Programming 

Wire sheet programming is widely used to program custom sequences for various devices in the BMS world. However, it had the following disadvantages, which made it difficult for the integrator to use in the field.

  • The slow and laborious process of creation
  • Specialized training for users
  • Lesser intuitive UI-based usage
  • Spread across the canvas and for large sites navigation across this is always challenging.
  • Input and out mapping tracking difficulties when you have various systems under integration.
  • Limited Options concerning how local views are seen.
  • Workbench management also gets very difficult to manage.
  • Template Stations can be built but takes time to reconfigure their input and output.
  • Sharing is difficult considering how workstations have to be managed for individual needs and common global views.
  • Only HVAC folks are familiar with this.

| Advantages With Site Sequencer

The Site Sequencer is the new programming interface that will allow for custom sequences to be built for controlling control systems in the building space, addressing all the disadvantages the wire sheet programming had in itself.

  • Having a site sequencer allows us to have an additional custom calculating and sequencing capability into a Site, apart from the predefined sequences that are already running at the CCU system level.
  • The sequencer can create custom calculations and runs using the points of various equips that can exist in a Site.
  • Sequencer allows calculations and logic blocks to be created that allow users like a Commissioning team member, installers, and partners to custom-build specific rules that need to be run periodically to achieve an outcome.
  • Sequencer allows for entire sites created by third-party integrated BAS systems within the 75F cloud to have custom calculations done for their datasets.
  • 75F sequencer with its 75F equipment and non-75F equipment on the same site to allow logic blocks to be built across its data sets to derive various output parameters or alerts.
  • There are 75f connect modules kind of input/output extenders that can also be used to have custom sequences running and control equipment in a building. Sequencer can also be used for relays/analog ins and analog outs of SmartNodes, SmartStat, HelioNode, and HyperStats even if predefined profiles are running on them.
  • The sequencer will allow to setting up of IFTT rules, and Alerts, allowing all ports in the 75F stream of equipment to fully be put into use.
  • Installers and System Integrators will be able to make optimal use of the 75f deployed equipment and use all unused ports of the system. Site sequencer can also work on any point variable that is available in the Site Manager.

| Site Sequencer Capabilities

The site sequencer is enormously capable and can be put to use for a wide range of use cases, but the most efficient ways it can be put to use are categorized into the following.

  • Creating custom sequences across the platform
  • Creating rules based on points in the system
  • Creating alerts based on other points in the system

| Site Sequencer Components

The Site Sequencer is made of two parts

  • The Site Sequencer UI provides the canvas and the block to build the custom sequences.
  • The Runner that deploys the created custom sequences to the site

Site Sequencer and Runner Framework form a common software infrastructure that builds custom, web-enabled logic for accessing, automating, and controlling smart devices in real time over the cloud. 

| Site Sequencer UI

  • Access Site Sequencer UI from the internal portal, as shown below.

The site sequencer UI displays, as shown below, with the option to select a site and create sequences for the same.

  • Select the site for which the sequences need to be built.

Screenshot 2024-07-09 111357.png

The operator type list displays.

Note: The Site Sequencer uses Blockly blocks as the base, the Blockly blocks help in building sequences for simple to complex Calculations, Analytics, and Condition-based Control Triggers.

  • Click an operator type to visualize the blocky blocks under it.

Screenshot 2024-07-09 123134.png

Tabs can be created, renamed or deleted to add new sequences on the canvas

  • Click the Screenshot 2024-07-09 175137.png icon to add a new tab to the sequence canvas

Screenshot 2024-07-09 175023.png

  • Right click the tab to delete or rename the tab from the sequence canvas

Screenshot 2024-07-09 175430.png

| Logic Operators

  • Use the blocks under the logic operators to build parts of the sequences that require logical decisions.

The table below talks about blocks under Logic operators.

Blocks  Description/Usage

use the block to build an action sequence based on an if condition.

Example:

use the block to build sequence steps that use the following logic operators for decisions.

  • equal to
  • Not equal to
  • Less than
  • Less than or equal to
  • Greater than
  • Greater than or equal to

Example:

use the block to build sequence steps that use the following logic operators for decisions.

  • AND
  • OR

Example:

 

use the block to build sequence steps that use a NOT logic operator for decision.

 

use the block to build sequence steps that use TRUE or FALSE logic operators for decisions.

use the block to build sequence steps that use the null operator to not return a value.

use the block to build sequence steps that could return steps based on whether the tested step is True or False.

 

| Loop Operators

Screenshot 2024-07-09 124420.png

  • Use the blocks under the loop operators to build parts of the sequences that require looping.

The table below talks about blocks under Loop operators.

Blocks  Description/ Usage
use the block to build a sequence step that is to be looped for n number of times before it can proceed to another step.
use the block to build a sequence step that is to be looped based on a while/until condition, before it can proceed to another step.
use the block to build a sequence step that is to be looped for n number of times between a range, with a defined skip.
use the block to build a sequence step that is to be looped for every number in the list.
use the block to break out of a looped sequence step.

 

| Math Operators

  • Use the blocks under the math operators to build parts of the sequences that require simple to complex mathematical calculations.

Screenshot 2024-07-09 124701.png

The table below talks about blocks under Math operators.

Blocks  Description/ Usage

use the block to input just any random number with any sequence step.

use the block to input a simple calculation with any sequence step that uses the following mathematical operators

  • Addition
  • Subtraction
  • Multiplication
  • Division
  • Power of

use the block to input a simple calculation with any sequence step that uses the following mathematical operators

  • Square root
  • Absolute
  • Hifen
  • Log of
  • Antilog
  • 10 to the power of

use the block to input symbol-based value or formula with any sequence step that uses the following symbols & formulae

  • Pie
  • Antilog
  • Lamda
  • Square root of 2
  • Square root of 1/2
  • summation
 

use the block to insert a simple check with any sequence step that uses the following checks

  • Even number
  • Odd number
  • Prime number
  • Positive number
  • Negative number
  • Divisible by

use the block to insert a simple round-up method with any sequence step that uses the following round up types

  • Round
  • Round Up
  • Round Down

use the block to insert a simple calculation or simple check to locate items in a list, with any sequence step that uses the following

  • Sum of List
  • Minimum in the list
  • Maximum in the list
  • Average of list
  • Median
  • Modes
  • Standard Deviation
  • Random item in the list

use the block to insert a simple calculation to find the remainder of a division calculation, with any sequence step.

use the block to insert a constrained value within a range with any sequence step.

| Text Operators

  • Use the blocks under the text operators to build parts of the sequences that require simple to complex text manipulations and findings.

Screenshot 2024-07-09 124845.png

The table below talks about blocks under Text operators

Blocks  Description/ Usage
use the block to insert a simple test in any sequence step.
use the block to concatenate two strings in any sequence step.
use the block to punctuate paragraphs in any sequence step.
use the block to append a text to any item in any sequence step.
use the block to find the length of a string in any sequence step.
use the block to check if a string placeholder is empty in any sequence step.
use the block to find the first/last occurrence of a letter in a string, in any sequence step.

use the block to find a letter's occurrences in the following positions in a string, in any sequence step.

  • letter Number in a string
  • Letter number from end in a string
  • First letter in a string
  • last letter in a string
  • random letter in a string
 

use the block to find substring in the following positions in a string, in any sequence step.

  • letter Number1 in a string to letter number 2 in a string
  • First letter to a letter number in the string
  • letter number to the last letter in a string

use the block to convert a string to the following, in any sequence step.

  • UPPER CASE
  • lower case
  • Title Case

use the block to reverse a string, in any sequence step.

use the block to count an alphabet in a string, in any sequence step.
use the block to replace an alphabet with another alphabet in a string, in any sequence step.
use the block to trim the spaces on left/right/both sides of a string, in any sequence step.

| List Operators

  • Use the blocks under the list operators to build parts of the sequences that require simple to complex list manipulations and findings from a list.

Screenshot 2024-07-09 125512.png

The table below talks about blocks under list operators.

Blocks  Description/ Usage

use the block to create an empty list, in any sequence step as below.

 

use the block to create a list with a defined list of items, in any sequence step as below.

use the block to create a list by repeating a specified item a, in any sequence step.
use the block to find the length of a list, in any sequence step.
use the block to verify if a list is empty, in any sequence step.
use the block to verify if a list is empty, in any sequence step.
use the block to find the first/last item in a list, in any sequence step.

use the block to get/get and remove/ remove items at the following positions, in any sequence step.

  • Item at a position number
  • Item at a position number from the end
  • first item
  • Last item
  • Random item

use the block to set/insert items at the following positions as something, in any sequence step.

  • Item at a position number
  • Item at a position number from the end
  • first item
  • Last item
  • Random item

use the block to get the sub-list items at the following positions, in any sequence step.

  • Item at a position number to the last item
  • Item at a position number from the end to the last item
  • first item to the last item.
use the block to create a list from a delimited text string/ a delimited text from a list, in any sequence step.
use the block to reverse a list, in any sequence step.
use the block to arrange list items in numeric/ alphabetic/ alphabetic, ignore case, ascending or descending order, in any sequence step.

| Variables

  • Use the blocks under the variables to create variables, set variables to parameters, and change variables by a value, to help build parts of the sequences.

variable function.png

| Functions

  • Use the blocks under the functions to create an action step as parts of the sequence steps.

Screenshot 2024-07-09 130005.png

The table below talks about blocks under functions

Blocks  Description/ Usage

use the block to create an action step in any sequence step, as below

Use the block to create functions with more inputs, as below.

 

use the block to create an action step in any sequence step that can return something, as below.

use the block to retrieve something based on an if condition in any sequence.

Note: This can only be used with a sequence block, as below

 

Note: To try, understand, and get a good hands-on with the blocky default blocks and usage visit self-try blockly tutorial. 

| Custom Primitives/ 75F Predefined Blocks

The site sequencer is built for extraordinary control capabilities, robust calculations, and complex Analytics. It comes with a full suite of the Blockly, along with customized 75f haystack-based predefined blocks. This makes it even more powerful.

  • Use the blocks to create haystack-based operations as parts of the sequence steps.

Screenshot 2024-07-09 130945.png

The blocks added under this type are out of the box just like the other 75F products, and they do not require further manipulations or enhancements.

The table below talks about blocks under 75F haystack-based operators.

Blocks  Description/ Usage

use the block:

  • To start building a sequence,
  • Name a sequence,
  • Enable/Disable/ Disable with logs/Enable with logs/ Run only once the sequence.
  • Define the duration for which the sequence should run from the following:
    • Every Minute
    • Every Hour
    • Once a Day
    • Once a Week
    • Once a Month

use the block to introduce a haystack database query step within a sequence to query for a Point or Point List, or Point with the current value

Example:

To query for a physical equip point analog out 2

Example for a Point

Point 1-1.png

Point 1-2.png

The query block with point returning only the first instance of the query in the logs, when enabled and run with logs.

use the block to introduce a haystack database query step within a sequence to query for a Point, Point List or Point with the current value.

With an input that maps another point from the zone with the corresponding point queried earlier

Example:

A Tags-based haystack query to locate the desired temperature for the zones, and map the queried points with corresponding current temperature using the roomRef.

Example for a Point List:

Point List 1.png

Point List 2.png

Point List 3.png

Point List 4.png

The query block with point list returning all instances of the query in the logs, when enabled and run with logs.

Example for a point with current value:

point with current value-1.png

point with current value -2.png

The query block with point with current value returning the current value of the first instance of the point 72.5F.

use the block to query more than one haystack point using the AND /OR operator in any sequence steps.

Example:

To query for the current temperature and humidity points from a zone

Example usage Query with input using AND/OR operators:

ANDOR1.png

ANDOR2.png

ANDOR3.png

ANDOR4.png

The logs displaying the query, trying to fetch the current temp values for the specified roomrefs using the AND/OR operator.

use the block to query and compare more than one haystack point using the Equal to /Not equal to operators in any sequence steps.

Example:

To compare and if the current temperature of the two zones is equal or not equal

Example usage Query with input using =/! = operators:

ANDOR1.png

ANDOR2.png

ANDOR3.png

ANDOR4.png

The logs displaying the query, trying to fetch the current temp values for the specified roomrefs using the =/! = operator.

use the block to query more than a few haystack points using the NOT operators in any sequence steps, combining it with the AND and OR operators blocks mentioned above.

Example:

To filter the CO2 threshold point and not the tuner points

Example usage Query with input using NOT operator:

NOT1.png

NOT2.png

The logs displaying the query, trying to fetch the current temp values for all room refs except for the specified one.

use the block to get the current value of a variable set for a potential haystack point.
use the block to get the historized values of a variable set for a potential haystack point, for a specified duration. 
use the block to get the historized values of a variable set for a potential haystack point, for a specified number of days. 
use the block to get the historized values of a variable set for a potential haystack point, for a specified Date range. 
use the block to get the historized values of a variable set for a potential haystack point, for a duration within a specified Date range. 
  • use the block to get the historized values of a variable set for a potential haystack point.
  • Group the same by minutes/hours/days/Months/Year
  • Average or count the data, and find the min/max/sum on the data range filtered for
  • Interpolate the linear/COV data.
  • Also, filter the data for a specified number of days
  • use the block to get the historized values of a variable set for a potential haystack point.
  • Group the same by minutes/hours/days/Months/Year
  • Average or count the data, and find the min/max/sum on the data range filtered for
  • Interpolate the linear/COV data.
  • Also, filter the data for a specified date range
  • use the block to get the historized values of a variable set for a potential haystack point.
  • Group the same by minutes/hours/days/Months/Year
  • Average or count the data, and find the min/max/sum on the data range filtered for
  • Interpolate the linear/COV data.
  • Also, filter the data for a specified time duration within a specified date range.
use the block to get the current value of a variable set for a potential haystack point at a specified priority array level.
use the block to write a value, at a priority array level of a variable set for a potential haystack point.
use the block to write the historized value of a variable set for a potential haystack point.
use the block to get the value for a key name from a variable set for a potential haystack point.
use the block to get the value for a key name from a variable set for a potential haystack point and display the same, or display anything you want.
use the block to add a comment in a sequence alongside a 75F predefined block.

use this block to create and assign a default value to a variable. 

use this block to set a value to a variable, so the variable value persists for every sequence run.

Example:

Screenshot 2024-06-28 165101.png

use this block to get the persisted value from the specified variable.

Example:

Screenshot 2024-06-28 165101.png

The site sequencer also comes with 75F proprietary alerting block, which provides out-of-box subblocks to specify all the parts of an alert. You can use it alongside any sequence steps in a sequence.

  • Use the block to create alerts for any point in the building management space.

Below is an example sequence step using an alerting block:

| Custom Functions

  • Custom Functions hold pre-defined 75F blocks that help with bulk action.

The table below talks about blocks under the Custom Function section in detail.

Blocks  Description/ Usage
Use this block to get the current value for multiple points at the specified priority array level.

Use this block to write values of multiple writeable points at the specified priority array level.

 

Use this block to write values of multiple historized points.

Use this block to write values for multiple writeable & historized points as specified 

| Unit Conversions

  • Use the blocks under the functions to create unit conversion as an action step as parts of the sequence.

Screenshot 2024-07-09 173122.png

The table below talks about blocks under the Unit conversion section in detail.

Blocks  Description/ Usage

Use this block to add a temperature unit conversion step in a sequence, to convert values from or to  Fahrenheit or Celsius or Kelvin, as in the table below.

The Table below 

UnitInput 

UnitOutput 

Conversion Method 

Celsius

Fahrenheit: F Unit 

 9/5 *celsiusValue+32 

Celsius 

Kelvin : K Unit 

 celsiusValue +273.15 

Fahrenheit 

Celsius : C Unit 

5/9(fahrenheitValue−32) 

Fahrenheit 

Kelvin : K Unit 

5/9(fahrenheitValue−32) + 273.15 

Kelvin 

Celsius: C Unit 

kelvinValue−273.15C 

Kelvin 

Fahrenheit : F Unit 

9/5*(kelvinValue −273.15)+32 

Use this block to add a pressure unit conversion step in a sequence, to convert values from or to  psi or bar or pascal or inH2O or inHg, as in the table below

UnitInput 

UnitOutput 

Conversion Method 

Psi 

Bar 

psi value / 14.5038 

Psi 

Pascal 

6894.76 * psi value 

Psi 

inH2O 

27.7076 * psi value 

Psi 

Inhg 

2.03602 * psi value 

Bar 

Psi 

14.5038 * bar value 

Bar 

Pascal 

100000 * bar value 

Bar 

inH2O 

401.865 * bar value 

Bar 

Inhg 

29.53 * bar value 

Pascal 

Psi 

pascal value / 6894.76 

Pascal 

Bar 

pascal value / 100000 

Pascal 

inH2O 

pascal value / 248.84 

Pascal 

Inhg 

Pascal value / 3386.39 

inH2O 

Psi 

inH2O Value / 27.7076 

inH2O 

Bar 

inH2O Value / 401.865 

inH2O 

Pascal 

248.84 * inH2O Value 

inH2O 

Inhg 

inH2O Value / 13.6087 

Inhg 

Psi 

inHg Value / 2.03602 

Inhg 

Bar 

inHg Value / 29.53 

Inhg 

Pascal 

3386.39 * inHg Value 

Inhg 

inH2O 

13.6087 * inHg Value 

Use this block to add an Angular velocity unit conversion step in a sequence, to convert values from or to  Rad/sec (Radian per second) or RPM (Revolutions per minute), as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

Rad/sec 

RPM 

RPM = (rad/s) * (60/2π) or  

RPM = (rad/s) * 9.5493 

RPM 

Rad/sec 

Rad/s = RPM * (2π/60) or  

Rad/s = RPM * 0.1047 

Use this block to add a velocity unit conversion step in a sequence, to convert values from or to  m/sec (meters per second) or m/Hr (meters per hour), as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

m/s 

m/Hr 

3600 * m/s value 

m/Hr 

m/s 

m/Hr   / 3600 

 

Use this block to add a conditioned area unit conversion step in a sequence, to convert values from or to  m2 (meter square) or ft2 (Feet square), as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

Meter per square 

Feet per square 

10.763910417 * m2 value 

Feet per square 

Meter per square 

0.09290304 * ft2 value 

Use this block to add a volume unit conversion step in a sequence, to convert values from or to  m3 (meter cube) or liter or Gallons, as in the table below

UnitInput 

UnitOutput 

Conversion Method 

Cubic Meter 

Liter 

1000 * m3 value 

Cubic Meter 

Gallons 

219.969152 * m3 value 

Gallon 

Liter 

 4.546092 * gallon value 

Gallon 

Cubic Meter 

 Gallon value / 219.969152 

Liter 

Gallons 

Liter Value / 4.546092 

Liter 

Cubic Meter 

0.001 * Liter Value 

Use this block to add an Enthalpy unit conversion step in a sequence, to convert values from or to  kJ/kg (Kilo Joule per Kilogram)  or BTU/lb (British Thermal Unit per pound), as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

kJ/kg 

BTU/Ib 

0.429922614 * kJ/kg value 

BTU/Ib 

kJ/kg 

2.326 * BTU/Ib value 

Use this block to add a Power unit conversion step in a sequence, to convert values from or to  Watt or kJ/Hr (Kilo Joule per hour), as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

Watt 

kJ/Hr 

3.6 * watt value 

kJ/Hr 

Watt 

0.2777777778 * kJ/Hr Value 

Use this block to add a Force unit conversion step in a sequence, to convert values from or to  N(Newton) or Pounds, as in the table below.

UnitInput 

UnitOutput 

Conversion Method 

N 

Pounds 

0.224808943 * N Value 

Pounds 

N 

4.44822 * pounds Value 

Use this block to add an Enregy unit conversion step in a sequence, to convert values from or to  BTU(British Thermal Unit) or kWh (Kilo Watt Hour) or Joule or Watt Hour, as in the below table.

UnitInput 

UnitOutput 

Conversion Method 

BTU 

kWh 

Btu value / 3412.14 

BTU 

Joule 

1055.06 * Btu value 

BTU 

Watt Hour 

Btu value / 3.412 

kWh 

BTU 

3412.14 * kwh value 

Watt Hour 

Joule 

3600 * Wh Value 

Joule 

Watt Hour 

Joule value / 3600 

kWh 

Watt Hour 

 

kWh 

Joule 

3600000 * kWh Value 

Watt Hour 

BTU 

3.412 * Watt Hour value 

Watt Hour 

kWh 

 

Joule 

kWh 

kWh Value / 3600000 

Joule 

BTU 

Joule Value / 1055.06 

Use this block to add an Air flow unit conversion step in a sequence, to convert values from or to  M3/hr(meter Cube per hour) or ft3/hr(Feet Cube per hour), or L/s(Liters per second) or M3/s(meter Cube per second) or GPM(Gallons per minute) or CFM(Cubic Feet per minute),  as in the below table.

UnitInput 

UnitOutput 

Conversion Method 

m3/hr 

ft3/hr 

35.3147 * m3/hr value 

m3/hr 

L/s 

m3/hr   / 3.6 

m3/hr 

m3/s 

m3/hr   / 3600 

m3/hr 

GPM 

4.402867 * m3/hr value 

m3/hr 

CFM 

m3/hr   /1.699 

ft3/hr 

m3/hr 

ft3/hr   / 35.3147 

ft3/hr 

L/s 

ft3/hr   / 127.133 

ft3/hr 

m3/s 

ft3/hr   / 127133 

ft3/hr 

GPM 

ft3/hr   / 8.02083 

ft3/hr 

CFM 

ft3/hr   / 60 

L/s 

ft3/hr 

127.133 * L/s value 

L/s 

m3/hr 

3.6 * L/s value 

L/s 

m3/s 

L/s   / 1000 

L/s 

GPM 

15.85032 * L/s value 

L/s 

CFM 

2.11888 * L/s value 

m3/s 

ft3/hr 

127133 * m3/s value 

m3/s 

GPM 

15850.323141 * m3/s value 

m3/s 

CFM 

2118.88 * m3/s 

m3/s 

m3/hr 

3600 * m3/s value 

m3/s 

L/s 

1000 * m3/s 

GPM 

ft3/hr 

8.02083 * GPM value 

GPM 

L/s 

GPM / 15.85032 

GPM 

m3/s 

GPM / 15850.323141 

GPM 

CFM 

GPM / 7.480519 

GPM 

m3/hr 

GPM / 4.402867 

CFM 

ft3/hr 

60 * CFM Value 

CFM 

L/s 

CFM / 2.11888 

CFM 

m3/s 

CFM / 2118.88 

CFM 

GPM 

7.480519 * CFM 

CFM 

m3/hr 

1.6999 * CFM value 

| Sequence Templates

Sequence templates hold pre-built sequences that can be readily used in any sequence for action. This eases the complexity of recreating the sequence combinations everytime.

  • Use the blocks under the functions to reuse any such template block as parts of the sequence.

The table below talks about blocks under the Sequence template section in detail.

Blocks  Description/ Usage

Use the block to scale a numeric input value for a min-max input and min-max output.

Example:

Indlnoxew 
Indlnou!u 
Indulxeu 
Indulu!tu 
Indulopownu 
:quM armeAouawnNVB1eoS 
01 
— liupdalduexa

The block follows the below logic.

@ O ScaleANumericValue 
numericOutput 
set 
to 
with: numericlnput, minlnput, maxlnput, minOutput, maxOutput 
minOutput 
numericlnput 
minlnput 
maxOutput 
minOutput 
maxlnput 
minlnput 
return 
numericOutput

Use the block to map a value to a boolean value based on the threshold value.

Example: Co2 value sensed for the threshold breach

The block follows the below logic.

MapNumericToBool 
with: numericlnput, thresholdValue1, boolValue1 , boolValue2 
numericlnput • 
do Set 
numericOutput 
elseif 
numericlnput 
do set 
numericOutput 
thresholdValue1 - 
boolValue1 
threshoIdValue1 • 
boolValue2 
numericO

use the block to include a resistance to temperature lookup, for a 75F 10K type thermistor input value used in a sequence, as below.

ResistanceList 
1 OKThermistorTOTempL00kUp 
• with: numericResistencelnput 
ut 
to @ create list with 
@ create list with 
878900 
617590 
439340 
316180 
216070 
TempLiSt • 
index 
to 
-58 
49 
-31 
-29 
for each item in list 
ResistanceList 
numericResistencelnput 
do 
numericOutput 
set 
to , inlist( 
TempList - 
break out • 
change 
- index • 
get 
retum 
index • 
numericOu

 

use the block to include a resistance to temperature lookup, for an external 10k type-2 thermistor input used in a sequence, as below.

ち d ち 0 の oue あ の 区 」 osues の 」 n 一 e あ dw の ト YO L 
SLULIO 0 。 
91qeL ち d ち 0 」 9 懃 w 」 の 14 ト ー YO 
sun-IO 0 。 ト 
・ 囃 鰤 鰤 日 鰤 日 鰤 
鬮 嫻 嫻 盟 
ゴ ロ 煎 ロ 囂 叩 就 囂 就 卩 
SUJUO 0 。 
- 日 日 曦 日 曦 日 日 日 日 灘 日 鰤 日 讎 第 鬮

use the block to include a resistance to temperature lookup, for an external 10k type-2 thermistor input used in a sequence, as below.

1 OK-3 Thermistor Output Table 
-39 
-37 
-35 
-33 
-31 
-29 
-27 
-25 
-23 
-21 
-19 
-17 
-15 
-13 
-11 
-9 
-5 
-3 
3 
5 
7 
9 
11 
13 
15 
17 
19 
21 
23 
25 
27 
29 
31 
33 
35 
-39.44 
-38.33 
-37.22 
-36.11 
-35.00 
-33.89 
-32.78 
-31.67 
-30.56 
-29.44 
-28.33 
-27.22 
-26.11 
-25.00 
-23.89 
-22.78 
-21.67 
-20.56 
-19.44 
-18.33 
-17.22 
-16.11 
-15.00 
-13.89 
-12.78 
-11.67 
-10.56 
-9.44 
-8.33 
-7.22 
-6.11 
-5.00 
-3.89 
-2.78 
-1.67 
-0.56 
0.56 
1.67 
Ohms 
232032 
217394 
203774 
191093 
179281 
168275 
158013 
148442 
139511 
131100 
123317 
116045 
109247 
102889 
96941 
91374 
86160 
81276 
76659 
72371 
68348 
64574 
61031 
57703 
54578 
51641 
48879 
46259 
43817 
41519 
39354 
37316 
35395 
33585 
31878 
30267 
28735 
27302 
39 
41 
43 
45 
47 
49 
51 
53 
55 
57 
59 
61 
63 
65 
67 
69 
71 
73 
75 
77 
79 
81 
83 
85 
87 
89 
91 
93 
95 
99 
101 
103 
105 
107 
109 
111 
2.78 
3.89 
5.00 
6.11 
7.22 
8.33 
9.44 
10.56 
11.67 
12.78 
13.89 
15.00 
16.11 
17.22 
18.33 
19.44 
20.56 
21.67 
22.78 
23.89 
25.00 
26.11 
27.22 
28.33 
29.44 
30.56 
31.67 
32.78 
33.89 
35.00 
36.11 
37.22 
38.33 
39.44 
40.56 
41.67 
42.78 
43.89 
Ohms 
25948 
24670 
23462 
22320 
21241 
20220 
19254 
18332 
17467 
16648 
15872 
15136 
14439 
13778 
13151 
12556 
11987 
11451 
10942 
10459 
10000 
9564 
9149 
8754 
8379 
8019 
7679 
7355 
7047 
6754 
6474 
6208 
5954 
5712 
5479 
5258 
4847 
113 
115 
117 
119 
121 
123 
125 
127 
129 
131 
133 
135 
137 
139 
141 
143 
145 
147 
149 
151 
153 
155 
157 
159 
161 
163 
165 
167 
169 
171 
173 
175 
177 
179 
181 
183 
185 
187 
45.00 
46.11 
47.22 
48.33 
49.44 
50.56 
51.67 
52.78 
53.89 
55.00 
56.11 
57.22 
58.33 
59.44 
60.56 
61.67 
62.78 
63.89 
65.00 
66.11 
67.22 
68.33 
69.44 
70.56 
71.67 
72.78 
73.89 
75.00 
76.11 
77.22 
78.33 
7944 
80.56 
81.67 
82.78 
83.89 
85.00 
86.11 
Ohms 
4656 
4473 
4131 
3971 
3817 
3671 
3532 
3398 
3271 
3149 
3032 
2920 
2812 
2709 
2610 
2516 
2425 
2339 
2256 
2176 
1955 
1887 
1822 
1760 
1700 
1642 
1587 
1534 
1483 
1433 
1386 
1341 
1297 
1255 
1214

use the block to include a resistance to temperature lookup, for an external 1k thermistor input used in a sequence, as below.

 

| Creating a Sequence

To create a sequence

  • Drag and drop the required blocks from different operator-type sections onto the canvas, as below.

  • Right-click on the blocks to carry out the following manipulations on a block.

          

Option Description/ Usage
Duplicate

To duplicate a block to use again in the sequence

Note: You can copy paste the block for use in the sequences

Add Comment

Add a comment on the block brings a question mark    icon on the blocks as below.

  • Click the question mark    icon to add comment on the blocks as below.

Inline Inputs

To add an inputs placeholder in line, as below

Collapse Block

To collapse the block and display minimized view of the block, as below.

Disable Block

To simply disable or grey out the block, as below.

Delete Block To delete a block from the canvas.
Help To visit the Blockly help center for information.
Create 'get w' To create a variable right from the canvas.
  • Arrange the blocky sequentially based on the purpose and usage, as below.

J3.png

You can create and view more than a few sequences in the same canvas, as below.

  • Click on the sequence headers to focus on the particular sequence, as below.

  • Click Save & Run once the sequence is complete.

Note: The Save & Run button will not be enabled until the sequence is complete.

| Sample use Case & Sequence

Example Use Case 1

Below is a sequence created for a sample use case.

The sequence is created to constantly monitor the VOC values in zones of a building, compute the average VOV values for every minute, and generate an alert when the computed average values in greater than 1000 ppb.

The Table below talks about the steps and the blocks used in the sequence to achieve the use case.

Step Block Actions
Step 1 Sequence Block (Mandatory)
  • Sequence name - CalculatingAverageAcrossZones
  • Sequence run frequency- Every Minute
Step 2

Define Variable

  • Create a variable VOCValues
  • Create an empty list
  • Assign the variable to the empty list.
Step 3 Define Variable
  • Create a variable AvgVOCPoint
  • Query for the averageVOC point using air and concentration and cur. (Site manager generated point)
  • Look for the first averageVOC point in the list
Step 4

For Loop

  • Create a variable VOCPointList, and assign it to a list.
  • Query for individual zone VOC points using voc and zone and sensor and not register, and add to the above list.

For each item in the VOCPointList:

  • Get the current value from the value for the key "ID"
  • Populate it in the VOCValues list from the end
  • repeat the above for all the items in the VOCPointList
Step 5 Average calculation 
  • Create a variable AverageVOCValue
  • Compute the average for the VOCValues list
  • Assign the AverageVOCValue variable to the computed average.
Step 6 Write the average value to
  • Get the value for the key "ID" from the AvgVOCPoint
  • Write the historized value for the AvgVOCPoint with the computed AverageVOCValue.
Step 7 Log Name
  • Assing the computed AverageVOCValue to name AvgVOCValue. (Optional step)
Step 8 If condition
  • If AverageVOCValue is greater than 1000 ppb
Step 7 Alerting
  • for AverageVOCValue greater than 1000 ppb
  • Generate an Alert with the following message.

VOC Value Issue

VOC Value beyond limit

And the following notification

VOC Value beyond limit

 

Example Use Case 2

Below is another sequence created for a sample use case.

The sequence is created to constantly monitor the current temperature values in Modbus zones in a building and compute the average current temperature for every minute.

The Table below talks about the steps and the blocks used in the sequence to achieve the use case.

Step Block Actions
Step 1 Sequence Block (Mandatory)
  • Sequence name -CalculatingAverageTempForExternalMODBUSDevices
  • Sequence run frequency- Every Minute
Step 2

Define Variable

  • Create a variable CurrentTempValues
  • Create an empty list
  • Assign the variable to the empty list.
Step 3

For Loop 

 

  • Create a variable CurrentTempPoints and assign it to a list.
  • Query for individual zone current temperature points using modbus and air and sensor and temp and zone and not return and not discharge and not outside and not register, and add to the above list.

For each item in the CurrentTempPoints list:

  • Get the current value from the value for the key "ID"
  • Populate it in the CurrentTempValues list from the end
  • repeat the above for all the items in the CurrentTempPoints list.
Step 4 Average Calculation
  • Create a variable AverageCurrentTemp
  • Compute the average for the CurrentTempValues list
  • Assign the computed average to the variable AverageCurrentTemp.
Step 5 Write the average value to
  • Write the historized value for the 404fa1ff-e72d-4ea7-ac65-850952e88f8f, the AverageCurrentTemp (the site manager generated point) with the computed AverageCurrentTemp value.
Step 6 Log Name
  • Assing the computed AverageCurrentTemp to name AvgCurrentTemp. (Optional step)

 

Example Use Case 3

Below is another sequence created for a sample use case.

The sequence is created to constantly monitor and report the occupancy sensed in zones in the building for 30 Mins.

The Table below talks about the steps and the blocks used in the sequence to achieve the use case.

Step Block Actions
Step 1 Sequence Block (Mandatory)
  • Sequence name - OccupancySensingFromZonesForLast30Mins
  • Sequence run frequency- Every Minute
Step 2

Define Variable

  • Create a variable OccupancyValues
  • Create an empty list
  • Assign the variable to the empty list.
Step 4

For Loop

  • Create a variable Occupancy point List, and assign it to a list.
  • Query for occupancy points using occupancy and sensor and zone, and add to the above list.

For each item in the Occupancy point List:

  • Get the historized value from the value for the key "ID" for 30 minutes.
  • Create a variable test.
  • Set the historized value retrieved to the variable test (with more than a few key-value pairs per ID)
  • Retrieve the value from the Key Val alone, and assign it back to test.

If the length of test is equal to 0 (meaning the device is switched OFF no occupancy is detected and just a "-" is as value against the key Val)

  • Create a variable tempVal
  • Assing tempVal to 0.
  • Set tempVal from the end in the list OccupancyValues

If the length of the test is not equal to 0 (meaning the device is switched ON and occupancy is detected and  a "0/1" is as value against the key Val)

  • Compute the average of the variable test.
  • Set the computed average from the above step, from the end in the OccupancyValues list.
Step 5 Logging the Values 
  • Create a name test.
  • Assign the OccupancyValues to the name testq.
  • Create a name test.
  • Assign the computed average of the OccupancyValues to the name test.
Step 6 Write Historized Value
  • Write the historized value for the ef40dae8-5c79-4ce0-86dd-c4c1c46ad11b (the site manager generated point), with the computed average for OccupancyValues.
Step 7 If condition to Switching OFF the lights
  • Create a variable AvgOfOccupancies = 0
  • Query for the relay point using relay and cmd and cur
  • Create a variable RelayPoint.
  • Assign the queried point to the variable RelayPoint.
  • Get the value for the key "ID" in from RelayPoint.
  • Write value "0" at level "8" to turn OFF the relay.

 

| Saved and Shared Custom Blocks

Just like the other aspects of the 75F system (Summary Tables, Custom Heatmap Filter), the sequencer also supports the concept of sharing a good sequence created by one user to another as a value ad.

The same can be accessed from the Custom Block option, as below.

Users can access the functions/sequences created and shared by others, that can be reused.

  • Drag and drop the shared functions/sequences onto the canvas to be used in the sequence being built, as below.

 

  • Click the eye icon next to the shared block or double-click the dropped custom block to visualize what is in the block.

 

Like in the other tools, the block shared by others can only be visualized and not edited.

To save functions/ sequences under a custom block to be used in other sequences, or to be shared with the other users as a value add, users need to create the functions/ sequences inside the Sequence Library, as below.

Like in other tools the users can like and bookmark a shared block/function/sequence, and the ones with the highest number of likes and bookmarks are moved to the top of the list for people to locate them easily.

Screenshot 2024-07-09 171031.png

 

  • Build the required function /sequence inside the library builder as below.

J1.png

  • Drag and drop the sequence block with why and what to clearly define the usage, from the custom primitives.

J2.png

Note: The sequence block in the library builder is slightly different from the one in the sequence builder to serve the purpose.

  • Click Create New Sequence to confirm the function /sequence to the custom block list.

A success message pops up, as below.

The added custom block can be visualized as below under the custom block option, and the same can be edited for further changes.

Just like in all the other tools, checks are in place to safeguard a sequence that has used a shared custom block. 

When the user tries to edit shared blocks/functions/sequences the following message pops up for the user to act.

Previous
Next

Comments

0 comments

Please sign in to leave a comment.

Was this article helpful?

2 out of 2 found this helpful
Powered by Zendesk