Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

Overview

The Digital Signage Demo simulates retail or office signage developed as a custom web application. It cycles through an interface of three screens, each with customizable copy and images through Gumband. The signage demo also leverages Gumband’s real-time signals, metrics, and logging.

View the out-of-the-box experience below:

GumbandDigitalSignageDemo-UX.mov

Gumband for Operators

Exhibit operators can use the Gumband web dashboard to manage the exhibit without a deep technical understanding of the custom application. The platform exposes the custom app’s health, content, and metrics to allow for simple long-term management and updatability without developer involvement.

Operators can work with their development teams to run the example project linked below to try the digital signage demo live. Contact support@gumband.com for platform access.

To access the web dashboard, open https://app.gumband.com in a web browser and log in. Users can either sign in via a Google account (which will automatically create an account if necessary), or use the “Create an account” link to sign up with other email addresses.

GumbandDigitalSignageDemo-Gumband-LogIn.mov

Exhibit Health

It’s critical to exhibit success to understand if the system is functional on a day-to-day basis. Gumband surfaces real-time notifications when it detects an outage from the exhibit, and offers basic control and debugging capabilities to get the exhibit back into a functional state.

Connection Status

Gumband monitors a system's critical components to understand its overall health. If the exhibit goes offline at any point, Gumband will notify the operators to begin triaging. The following videos show an exhibit coming online and offline, both causing an email notification - notice the change in the online and offline indicators ((blue star)(blue star)).

GumbandDigitalSignageDemo-ExhibitOnline.movGumbandDigitalSignageDemo-ExhibitOffline.mov
Operating Mode

The exhibit operating mode is used to toggle exhibits “on” and “off” - the definition of which changes depending on the specific custom application. Developers are able to use this signal to put the exhibits into standby - increasing operational understanding of the exhibits while also increasing energy efficiency and reducing noise pollution (among other benefits).

For the digital signage demo, the operating mode is used to toggle the exhibit between display-on and display-off.

GumbandDigitalSignageDemo-ExhibitOpMode.mov
Statuses, Controls, and Logs

Gumband offers other tools to interact with an exhibit and understand how it is functioning. These tools allow operators a layer of visibility and control into the custom applications in order to maintain the exhibits and debug issues without developer involvement.

Statuses

The exhibit can push signals to the UI, known as statuses, to surface pertinent system information to operators. These appear on the “Overview” tab for an exhibit within the “Status” section. For the digital signage demo, the following statuses are exposed:

  • Last Server Start - The date/time that the digital signage custom application was last started

  • Access URL- A link to the digital signage UI

    • Note: this only works when a developer is running the exhibit locally

  • Exhibit Docs - A link to the exhibit documentation for easy operator access (especially in the case where documentation links vary exhibit-by-exhibit)

  • Active Pages Open - The number of web pages actively displaying the digital signage UI

    • Note: this status will display “0 (warning!)” when there are no active connections, meaning that the signage is not showing anywhere)

GumbandDigitalSignageDemo-ExhibitStatuses.mov

Controls

The developer can also expose “hooks” into the exhibit systems, known as controls, for the operator to trigger various actions via the product UI. For the digital signage demo, the following controls are exposed:

  • Reboot Exhibit - Reboot the computer that the application is running on

    • Note: this is a placeholder and would need to be implemented by the developed depending on the specific setup of that system

  • Reload Pages - Reload any active frontend web browsers

  • Toggle Takeover - Toggle the active takeover mode (which is itself an exhibit setting)

GumbandDigitalSignageDemo-ExhibitControls.mov

Logging

Developers can use the Gumband logging utility to forward select application logs to the product which can be used to better understand typical exhibit operation and in debugging scenarios. The digital signage demo includes logging when the server is started, and when pages are connected and load the UI.

GumbandDigitalSignageDemo-ExhibitLogs.mov

Exhibit Content

Over time, exhibit content can get stale or irrelevant to the new initiatives of the brand. Gumband offers real-time and scheduled content management capabilities to ensure an exhibit can be managed long-term without needed code updates to the system. Content updates can scale with the number of exhibits in an organization, so you’re able to make a single update in the web UI and apply to a fleet of exhibits.

Settings and File Management

Gumband exposes the copy and media assets through a simple web UI to allow operators to update the user experience over time.

Settings

Exhibits will have a number of pre-configured settings which can be adjusted over the life of the exhibit to alter visual or functional aspects of an exhibit. These settings have details and constraints to allow operators to manage the state of the exhibit long-term. These appear on the “Settings” tab within the Gumband exhibit interface. For the digital signage demo, the following statuses are exposed:

Gumband exposes the interface and underlying infrastructure to enable settings, however the actual implementation of that setting is left to developers - meaning that settings need to be clearly defined and properly implemented to expose the most value.

For the digital signage demo, the following settings are exposed:

  • Slide X: Header Copy - (type: Text) - The displayed header copy for slide X; will not wrap

    • Note: A design decision was made during development to use vertical pipes (“|”) across the slide Text settings to allow for line breaks; this could have been implemented in a number of different ways

  • Slide X: Page Copy - (type: Text) - The displayed page copy for slide X; will wrap

    • Note: The string “break” can be used to create line breaks within page copy (in addition to the vertical pipes noted above)

  • Slide X: Image - (type: File) - The displayed image asset for slide X; displayed at the bottom at full screen width

    • Note: These options are driven based on available files in the “Files” tab of exhibit interface

  • Takeover Enabled - (type: Toggle) - Whether or not the signage should display a fullscreen takeover image

  • Takeover Image - (type: File) - The displayed image asset for when the fullscreen takeover is enabled

GumbandDigitalSignageDemo-ExhibitSettings-CopyAndMedia.movGumbandDigitalSignageDemo-ExhibitSettings-Takeover.mov

File Management

Operators can manage file assets that are synced with the exhibit, which are leveraged in the custom application to change visual or operational parts of the exhibit.

GumbandDigitalSignageDemo-ExhibitSettings-FileUpload.mov
Scheduling

Gumband offers a calendar where settings and controls can be scheduled to manage planned updates to an exhibit over time. Events can either be created on a one-off or recurring basis. When an a scheduled event runs, it will apply only the selected real-time signals from the event configuration and will leave the others as they are currently set.

GumbandDigitalSignageDemo-ExhibitScheduling-DailyOnOff.movGumbandDigitalSignageDemo-ExhibitScheduling-TakeoverEvent.mov

Exhibit Metrics

Exhibit engagement and operational measurement is typically difficult to gather across the breadth and depth of these kinds of custom software and hardware systems. Gumband offers hooks at all layers in the system to surface metrics which allow the operational to make informed decisions around future content updates and investment in these types of initiatives.

Reporting

Gumband has been configured to display operational metrics for the digital signage demo - such as “Server Starts” and “Reloads”. For an exhibit with active user interactions, those data points could also be reported to analyze metrics like session duration, content choice popularity, and exhibit UX attrition.

GumbandDigitalSignageDemo-ExhibitMetrics.mov

Gumband for Developers

Developer Benefit

Gumband makes it easy to expose select parts of a complex technical system to non-technical operators in order to increase exhibit serviceability and maintenance (reducing support headaches 🙂). Gumband also offers tools for developers to increase development velocity and improve system testing and insights.

Example Files

Attached is the Digital Signage Demo project files. It contains a React.js frontend which can be loaded in a web browser and a Node.js backend that is integrated with the Gumband SDK.

System Architecture

Note: Gumband Hardware is not demonstrated in this project.

SDK Integration

Developers can leverage the publicly available Gumband SDKs and APIs to integrate the platform modules - health, content, and metrics - into their custom projects. The Gumband Node.js SDK is available through npm, and the digital signage demo leverages it to offer the outlined functionality in this guide.

The Gumband team is actively working on developer tooling across the software and hardware stack. A Python SDK is next on the roadmap and the Gumband protocols will be open-sourced in the future in order to build a strong developer community.

The Gumband SDK is concentrated in the file gb-backend/GumbandSdk.js. The SDK is initialized on line 22, setting the API params and file sync content location, and disabling hardware communication.

this.gb = new Gumband(token, id, 'manifest.json', {
  endpoint: env,
  version: 'v1',
  contentLocation,
  gbttEnabled: false,
});
Authentication

The SDK uses an exhibit ID and token to authenticate with the Gumband platform. Notice the ID and token passed into the SDK constructor above.

You can view the exhibit ID and generate new tokens on the “Auth” tab of the exhibit. Auth tokens are only shown once in the dashboard to ensure exhibit security. Ensure you keep your tokens private.

Manifest

The SDK uses a JSON configuration file called the manifest to identify the real-time signals (statuses, settings, and controls) that are available for an exhibit. Notice the filename manifest.json is passed into the SDK constructor above.

A future update of Gumband will allow the exhibit to be configured in the dashboard without the need to manage manifest files.

The manifest.json file is structured as follows, and can include any number of real-time signals.

{
  "manifest": {
    "statuses": [],
    "controls": [], 
    "settings": []
  }
}

For all real-time signals, the id of each signal is used to associate them in code to implement the desired action.

Statuses

Statuses are used to surface relevant details of the system to operators. These are shown as strings (potentially links) in the dashboard. Notice that you can set the display copy and order for the label in the dashboard and a default value. All statuses have type String.

The statuses for the digital signage are as follows:

{
    "id": "last_server_start",
    "type": "String",
    "display": "Last Server Start",
    "default": "(not set)",
    "order": 0
  },
  {
    "id": "access_url",
    "type": "String",
    "display": "Access URL",
    "order": 1
  },
  {
    "id": "docs",
    "type": "String",
    "display": "Exhibit Docs",
    "order": 2,
    "default": "https://deeplocal.atlassian.net/wiki/spaces/GUM/pages/92995599/Gumband+Digital+Signage+Demo"
  },
  {
    "id": "num_ws_connections",
    "type": "String",
    "display": "Active Pages Open",
    "order": 3,
    "default": "0 (warning!)"
  }

Controls

Controls are hooks into the exhibit that are exposed on the dashboard to allow operators to trigger actions on the system. These actions can include reboots/restarts/resets, advancing the UX for testing, or other things tailored to the specific experience. Notice that you can set the display copy and order for the label in the dashboard. Controls can have a few types, view the options in the Node.js SDK README.

The controls for the digital signage are as follows:

{
  "id": "reboot",
  "type": "Single",
  "display": "Reboot Exhibit",
  "order": 0
},
{
  "id": "reload",
  "type": "Single",
  "display": "Reload Pages",
  "order": 1
},
{
  "id": "toggle-takeover",
  "type": "Single",
  "display": "Toggle Takeover",
  "order": 2
}

Settings

Settings are the configurable state of an exhibit that operators can use to manipulate the system in the desired ways. These settings are always tailored to the specific experience, and can include things like active in-UX content and system volume or timeout duration. Notice that you can set the display copy and order for the label in the dashboard and a default value. Settings can have a many types, view the options in the Node.js SDK README.

The settings for the digital signage are as follows:

{
  "id": "slide-1-header",
  "type": "TextInput",
  "display": "Slide 1: Header Copy (use | as line break in all copy)",
  "default": "",
  "order": 0
},
{
  "id": "slide-1-copy",
  "type": "TextInput",
  "display": "Slide 1: Page Copy (first item is column header)",
  "default": "",
  "order": 1
},
{
  "id": "slide-1-image",
  "type": "FileSelection",
  "display": "Slide 1: Image",
  "order": 2
},
// slide 2 and 3 settings ommitted for space
{
  "id": "takeover-enabled",
  "type": "Toggle",
  "display": "Screen Takeover Enabled",
  "default": "",
  "order": 9
},
{
  "id": "takeover-filename",
  "type": "FileSelection",
  "display": "Takeover Image Asset (3840x1080)",
  "order": 10
}
Real-time Callbacks

The SDK automatically manages the connection with the Gumband platform and exposes real-time callbacks for the developer to respond actions performed by operators or automatically through the platform. The callbacks use the signal id to determine what action to perform, and then the developer implements the relevant functionality. You can see the full list of the callbacks in the Node.js SDK README.

The callbacks are registered in the SDK constructor on line 29.

this.gb.on(Sockets.READY, this.onGumbandReady.bind(this));
this.gb.on(Sockets.OP_MODE_RECEIVED, this.onGumbandOpModeReceived.bind(this));
this.gb.on(Sockets.SETTING_RECEIVED, this.onGumbandSettingReceived.bind(this));
this.gb.on(Sockets.CONTROL_RECEIVED, this.onGumbandControlReceived.bind(this));
this.gb.on(Sockets.FILE_UPLOADED, this.onGumbandFileUploaded.bind(this));

A simplified version of the control callback is as follows:

// called whenever a user triggers a control on Gumband
async onGumbandControlReceived(control) {
    console.log('control', control);
  

    // determine action to take based on control id
    if (control.id === 'toggle-takeover') {
      // developer implement action
      return;
    }
}

A simplified version of the setting callback is as follows:

// called whenever a user changes a setting on Gumband - OR -
// when gb.setSetting(id, value, realtime = true) is called from the SDK
onGumbandSettingReceived(setting) {
  console.log('setting', setting);
  
  // handle actions based on setting id within function
  if (this.updateConfigFromSettings([setting])) {
      this.reloadFrontend();
  } else {
    // handle takeover-related settings that are managed in frontend state only
    this.websocketServer.sendToAllClients(JSON.stringify(setting));
  }
}

Don’t hesitate to reach out to support@gumband.com if you encounter any issues working with the digital signage demo project. We’re eager to work with our user base and learn more about the amazing things they’re building!

  • No labels