This is an old revision of the document!


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

Please follow the vendors documentation for the device setup. This documentation aims to explain the necessary steps to be taken in Blocks and ISAAC in order to bridge the two systems.

Make the driver available to the server

Copy the driver files Isaac.js (driver) and Isaac.ts (source code file) from the drivers-archive to the drivers directory in PIXILAB-Block-root/script/.

Configure the driver

Open the blocks editor and add the Issac system as a Network device. In the driver custom options field we must add some configuration using JSON syntax. A typical example will look like this:

{
  "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' | 'https' and specifies the protocol for the ISAAC connection, defaults to 'http'

token (optional, string) is passed in the isaac-token header, only to be used in case Isaac is configured to use a token.

heartbeatInterval (optional, number) How often to send "heartbeats" to Isaac, in mS for the health indication. If one wants to utilize the Instant play feature on ISAAC, heartbeat must be lower, to ensure actual instant playback (e.g., 1000).

variables (optional, string array) An array of full property paths to properties we want to be logged in ISAAC.

events (optional, string array) An array of tasks specified as name.group.task exposed as Isaac events. This allow the task to be called from i.e. 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.

Note: If both "playersWhiteList" and "playersBlackList" are not present, the driver will internally list all the Spots in the server, and will send heartbeats to ISAAC for each Spot present, which might end up being resource-wasteful with all the unnecessary workload. Enable the driver only once you're sure the necessary Spots will be considered to connect with 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 ISSAC

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.