Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
blocks:app-note:isaac [2024-01-22 13:47] mattiasblocks:app-note:isaac [2026-05-25 06:57] (current) – isaac version disclaimer joao
Line 1: Line 1:
 =====ISAAC integration===== =====ISAAC integration=====
  
-This application note shows the steps involved in setting up Blocks to communicate with [[https://www.isaacplatform.com/|Smart Monkeys ISAAC]] A/V monitor and management system. +This application note shows the steps involved in setting up Blocks to communicate with [[https://www.isaacplatform.com/|Smart Monkeys ISAAC]] A/V monitor and management system. ISAAC version **2.5.4 or higher**, required to follow this guide.
  
-===The Isaac device=== +===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.+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=== 
-===Make the driver available to the server=== +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 [[https://pixilab.se/docs/blocks/drivers/concepts|found here]].
-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 === ===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.  +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'//custom options// field, configure it using JSON syntax as shown in this example (adjusting all settings to match your system)
-A typical example will look like this: +
  
 <code> <code>
Line 20: Line 18:
   "variables": ["Realm.ISAAC.variable.isaacCounter.value"],    "variables": ["Realm.ISAAC.variable.isaacCounter.value"],
   "events": ["ISAAC.examples.addOne","ISAAC.examples.removeOne"],    "events": ["ISAAC.examples.addOne","ISAAC.examples.removeOne"],
-  "subsystemExternalId": "Blocks"+  "playersWhiteList": ["isaacSpot", "myGroup-spotTwo"]
 } }
 </code> </code>
Line 26: Line 24:
  
 Where: Where:
-//protocol// (optional, string) Can be 'http' | 'httpsand specifies the protocol for the ISAAC connection, defaults to 'http +//**protocol**// (optional, string) Can be "http" or "httpsand specifies the protocol for the ISAAC connection. Defaults if not set is "http" 
  
-//token// (optional, string) is passed in the isaac-token header, only to be used in case Isaac is configured to use a token.+//**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 the health indication.+//**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 logged in ISAAC.+//**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 name.group.task exposed as Isaac events. This allow the task to be called from i.e. an ISAAC schedule.+//**events**// (optional, string array) An array of tasks specified as "realm.group.taskexposed as Isaac events. This allow Blocks Tasks to be triggered froman 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=== ===Sending log messages from Blocks===
Line 41: Line 44:
 The driver exposes a callable named //log// that can be used in task programming to log messages to ISAAC. The driver exposes a callable named //log// that can be used in task programming to log messages to ISAAC.
  
-===Steps in ISSAC===+===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.
  
-Register the Pixilab Blocks module under setup/modules in the ISSAC system. +**2.** Add Fleet players in ISAAC. An ISAAC player will be a PIXILAB SpotDuring 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.\\ 
-The events and the variables specified in the driver will be added automaticallyPlease notefull-stop and commas are prohibited in the ISAAC scheduler so edit the name of the variables and events once discovered in ISAAC+  
-At this point it is possible to use the schedules in ISAAC to run any of the specified tasks by scheduling that event at a specific time. It is also possible to track any changes to specified variables. +**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. 
  
-Please use the vendors documentation for any details on how to use ISAAC.+For any details on how to use ISAAC, please use the vendors documentation.