Agent Walkthrough - Attachment

In the previous section, we set the rules for our weak AI so that it reports when a value exceeds 100%.

We still haven't told it which assets to operate on yet though, or which properties to use.

This is done in the attachment and binding steps, shown below.

Attachment

Attachment is where we choose which assets we'd like to connect our AI to.

In our example, we have a single asset in our system named Main Pump, so we will use the most simple attachment method, called single.

"attachment": [ {
		"style": "type",		
		"asset": "Main Pump"
      }
	]

Binding

Finally, we need to describe which properties should be connected to which inputs in our AI.

"binding": {
     "Load": "Main Pump.Load"
}

This tells Agency that the input named Load should be connected to the ARDI property 'Load' from the Main Pump.

The Finished Configuration

We are left with the following file…

{
   "name": "High Load",
   "style": "PropertyPattern",
   "normalise": "*",
   "data": {
		"pattern": ">100"
          },
   "inputs": [ {
		"name": "Load"
	  } ],
   "outputs": [ {
		"name": "Status",
		"style": "boolean",
		"threshold": "=1"
	  } ],
   "binding": {
		"Load": "Main Pump.Load"
	},
	"attachment": [ {
		"style": "type",		
		"asset": "Main Pump"
        } ]
}

Tuning

When we run with this AI, we discover that it's triggering quite often. It's actually fairly normal for machines and motors to run at more than 100% for small amounts of time - the issue is when they do this for extended periods.

We can add the ondelay property to our output - this is a number (in seconds) that the condition has to be met before an actual alert will arise.

"outputs": [ {
		"name": "Status",
		"style": "boolean",
		"threshold": "=1",
               "ondelay": 60
 } ]

The example above would make sure that the load has to be more than 100% for greater than 60 seconds before an alert is raised.

Doing More

This works, but it would be very annoying to re-write it for each and every pump we had.

Why don't we extend this to cover all of our pumps?