ISAAC integration

This application note shows the steps involved in setting up Blocks to communicate with Smart Monkeys ISAAC A/V monitor and management system.

The ISAAC device

First follow the vendors documentation for setting up ISAAC. This document then explains the steps needed in Blocks and ISAAC to make them communicate.

Make the driver available

Download and copy the driver files Isaac.js and Isaac.ts from the drivers-archive directory to the drivers directory in PIXILAB-Block-root/script/. You may need to restart Blocks on the server to pick up the newly added driver. More details on how to install drivers can be installed and used can be found here.

Configure the driver

Open the blocks editor and add the ISAAC system as a Network device, select the Isaac driver on the driver menu and set its IP address. In the driver's custom options field, configure it using JSON syntax as shown in this example (adjusting all settings to match your system):

{
  "protocol":"http",
  "heartbeatInterval": 10000,
  "variables": ["Realm.ISAAC.variable.isaacCounter.value"],	
  "events": ["ISAAC.examples.addOne","ISAAC.examples.removeOne"],	
  "playersWhiteList": ["isaacSpot", "myGroup-spotTwo"]
}

Where: protocol (optional, string) Can be "http" or "https" and specifies the protocol for the ISAAC connection. Defaults if not set is "http".

token (optional, string) will beis passed in the isaac-token header, only to be used when ISAAC is configured to use a token for communication.

heartbeatInterval (optional, number) How often to send "heartbeats" to Isaac, in mS for health indication. If you need ISAAC's Instant play feature and want to minimize the delay before applying the content, this value must be decreased. Do not set it lower than 1000 mS (which will make Instant Play work within one second.

variables (optional, string array) An array of full property paths to properties we want to be made available to ISAAC. List each property path within double quotes, and separate paths by a comma. Valid propety paths can be copied from the "Trigger" setting of a task, which provides a property picker.

events (optional, string array) An array of tasks specified as "realm.group.task" exposed as Isaac events. This allow Blocks Tasks to be triggered from, an ISAAC schedule.

playersWhiteList (optional, string array) An array of spots we want to white list and expose to ISAAC as players from a Fleet. The naming convention to designate a spot is "SpotGroup-SpotName", or simply "SpotName". If a spot lives under a spot-group that lives under one or more groups, simply write them all separating each group name by a "-".

playersBlackList (optional, string array) An array of spots we want to black list and avoid exposing to ISAAC. It respects the same naming convention as explained above for the white listing.

:!: NOTES: Do not use dashes ("-") in either Spots or Spot Groups that will be exposed to ISAAC, as it will not work. Also, if neither "playersWhiteList" or "playersBlackList" are present, all spots will be included. This will also send heartbeats to ISAAC for every Spot, which is wasteful with resources for a large number of Spots. Whenever possible, list only the Spots to be used by ISAAC.

Sending log messages from Blocks

The driver exposes a callable named log that can be used in task programming to log messages to ISAAC.

Steps in ISAAC

1. Register the PIXILAB Blocks as a fleet under setup/modules in the ISSAC system. The events and the variables specified in the driver will be added automatically. Please note, full-stop and commas are prohibited in the ISAAC scheduler so edit the name of the variables and events once discovered in ISAAC.

2. Add Fleet players in ISAAC. An ISAAC player will be a PIXILAB Spot. During each player creation, ISAAC prompts to give it a name (give it a meaningful one), and then on Module ID. This is the crucial field, as one should give it the respective PIXILAB Spot name, using the same naming convention described above in the "playersWhiteList" section. Module ID and the Spot Name should match in order to connect the two.

3. At this point it is possible to use the scheduler (calendar) in ISAAC to run any of the specified tasks or any imported media living within the ISAAC's CMS by scheduling it at a specific time. It is also possible to track any changes to specified variables.

:!: NOTE: ISAAC's player status indicating if a certain player is connected or not, will directly represent if the Spot in Blocks is connected or not.

For any details on how to use ISAAC, please use the vendors documentation.