Introduction
This article explains how three Lift and Learn experiences Sneaker Exploration, Perfume Discovery, and Headset Comparison are built and how you can reuse them with your own products and RFID tags.
Each sample connects physical products to digital content using Nexmosphere RFID hardware. When a visitor lifts or returns a tagged product, Intuiface's Nexmosphere Interface Asset receives a command from the Nexmosphere hardware and the experience responds.
The samples demonstrate three different approaches, progressing from video selection to product information and comparison.
| Sample | What happens when a product is lifted? | Multiple-product behavior | Where is the product content stored? |
|---|---|---|---|
| Sneaker Exploration | Plays the associated sneaker video. | Designed for one product at a time. | Headless CMS |
| Perfume Discovery | Displays the selected fragrance’s information. | Lifting both bottles displays a message asking the visitor to return one. | The experience |
| Headset Comparison | Adds the headset to an on-screen comparison. | Displays multiple products for comparison and removes an item when returned to the shelf. | Headless CMS + Comparison List Interface Asset. |
Physical interactions involve Intuiface Player on devices connected to Nexmosphere hardware.
For Nexmosphere setup, serial port properties, triggers, and actions, see Interface Asset - Nexmosphere. This article uses the same Nexmosphere Interface Asset terminology.
Understanding Nexmosphere's RFID X-Script commands
Nexmosphere sensors communicate using a proprietary X-Script Serial API. (For the complete list of commands in that API, open the latest Nexmosphere API Manual.) Each sensor has its own command list.
Nexmosphere's RFID antenna - used by these samples - communicates two types of tag events:
- TR - an RFID tag has been removed from the antenna's detection area
- TD - an RFID tag has been detected in the antenna's detection area
With an RFID tag attached to a product resting over the RFID antenna, removing the tag from detection corresponds to lifting the product. Detecting it again corresponds to returning the product.
Here are example commands communicated by the RFID antenna when a tag is lifted and returned:
- Lift: X001B[TR=UID:042489D2F97381]
- Return: X001B[TD=UID:042489D2F97381]
To understand this syntax, see our breakdown of the X-Script command language. Here is a summary:
| Value | Example value |
|---|---|
| TYPE | X |
| ADDRESS | 001 |
| FORMAT | B |
| COMMAND | TR=UID:042489D2F97381 |
| X-Script Command (full line) | X001B[TR=UID:042489D2F97381] |
The product lookups described below use the COMMAND portion of the message. Their stored values must therefore match their corresponding COMMAND value, without the TYPE/ADDRESS/FORMAT prefix or the surrounding brackets.
If you choose to use hardware other than Nexmosphere, their messages will be formatted differently. Be sure to use the actual messages reported by your hardware.
For the component structure and editable properties used by the two content-driven samples, see Data structure of the Headless CMS bases and Content of the Headless CMS bases.
Sneaker Exploration
About the experience
Sneaker Exploration demonstrates a video-focused Lift and Learn interaction.
The idle screen plays an attract video. Lifting a sneaker - or selecting its associated on-screen button - changes the video to the one associated with that shoe.
Returning the sneaker activates the return behavior and restores the idle video. Lifting additional sneakers without returning already lifted sneakers will play the latest video. It does not track which of several products remain lifted. For one-at-a-time lift-and-learn, see the Perfume Discovery sample below.
How is it built?
Sneaker Exploration uses a single Video Asset container to display both the idle video and product videos.
The product content is stored in a Headless CMS base. Each record in that base associates the received COMMAND value with a product name and video.
When the Nexmosphere Interface Asset's X-Script Command trigger fires, and if the value of COMMAND contains TR=, the experience:
- Filters the product collection in the Headless CMS base.
- Compares the received COMMAND value with each record’s UID TAG Value field.
- Checks the master Toggle Button in the experience
- A "slave" Toggle Button inside the list of lift-simulation buttons triggers the following sequence of actions:
- The video transition fades out the Video Asset, stops playback, changes its content, starts the selected video and fades back in.
The same Video Asset is reused throughout the interaction.
Using your own Nexmosphere RFID tags and content
For Sneaker Exploration, the product-to-tag mapping is changed in the Headless CMS base:
- Connect your Nexmosphere controller and capture the X-Script command received when you lift your product.
- Copy the COMMAND value.
- Open the corresponding product record in the sample’s Headless CMS base.
- Replace its UID TAG Value value with the captured command.
- Replace the product name and video as required.
- Refresh the content in Composer and test the product.
For example:
| Product | UID TAG Value field |
|---|---|
| Product A | TR=UID:042489D2F97381 |
| Product B | TR=UID:04F289D2F97380 |
Important: Although the field is named UID TAG Value, this sample’s filter expects the complete COMMAND value, including TR=UID:.
You do not need to create a separate Nexmosphere trigger for each product when adding records to the base. The general lift trigger passes the received COMMAND value into the Headless CMS filter.
How item return differs from the other two RFID samples
In Sneaker Exploration, a condition was added to the X-Script Command trigger of the Nexmosphere Interface Asset. This condition checks whether COMMAND contains TD=. If it does, then the return process is activated. It does not remove the returned product from a list, which happens in the other two samples.
This makes it suitable for demonstrating one product at a time. It does not track which of several products remain lifted.
Perfume Discovery
About the experience
Perfume Discovery displays information about two fragrances.
Lifting a bottle shows the associated product imagery and information, including fragrance notes, bottle size, price and a suggestion such as trying the fragrance on a tester strip.
If both bottles are lifted, the product information is replaced by a message asking the visitor to return one bottle before continuing.
How is it built?
This sample uses one scene containing four main Group collections:
- Idle - the starting instructions.
- A - the first fragrance.
- B - the second fragrance.
- Two bottles - the message displayed when both bottles are lifted.
A Simple Counter Interface Asset, named Lifted Bottles, tracks the interaction.
| Counter value | Experience state |
|---|---|
| 0 | Display Idle. |
| 1 | Display the lifted fragrance. |
| 2 | Ask the visitor to return one bottle. |
The counter is used together with tag-specific conditions and the currently displayed product Group.
For example, if both bottles are lifted and Bottle A is returned, the experience displays Bottle B. Returning Bottle B then restores Idle.
The conditions also prevent a repeated event or the return of a bottle that is not currently lifted from incorrectly changing the count.
Using your own tags
Unlike Sneaker Exploration, this sample stores its tag mappings in conditional triggers in Composer, rather than in a Headless CMS base.
- Select the Nexmosphere Interface Asset.
- Open its Triggers and Actions panel.
- Find the conditional X-Script Command triggers for Bottle A.
- Replace the existing UID in every associated lift and return condition.
- Repeat the process for Bottle B.
- Keep the counter and Group-visibility conditions intact.
For each bottle, the same UID must appear in both command types:
Lift: TR=UID:YOUR_TAG_UID Return: TD=UID:YOUR_TAG_UID
Each bottle has conditions for different counter states. Update all occurrences of its UID, rather than changing only the first matching trigger.
The supplied two-bottle logic has two lift handlers and two return handlers per bottle.
Changing the products
Edit the fragrance text and images directly in Groups A and B. You can replace the bottles, branding, descriptions and supporting information without changing the underlying two-product interaction.
Adding a third product requires more than replacing content or adding another tag condition. The counter and view-selection logic are specifically designed around two bottles.
Headset Comparison
About the experience
Headset Comparison lets visitors compare headsets by lifting several products.
Each lifted product is added to an on-screen comparison. Returning a product removes its card from the comparison screen while leaving the others in place.
Visitors can also browse the catalogue and select the "+ Compare" button to add a product to the comparison view without having to physically lift an item.
How is it built?
Headset Comparison separates the product catalogue from the visitor’s current selection:
- A Headless CMS base stores the available products and their content.
- The custom Comparison List Interface Asset holds the products currently selected for comparison.
- An Asset Grid collection displays selected products via a shared data template.
Each comparison card contains the product’s image, name, price, description and specifications. Linear Gauge Assets provide a visual representation of battery life and weight.
The first selected product receives a cyan outline and a COMPARING AGAINST label. If that product is removed, the next remaining item becomes the reference.
About the custom Comparison List Interface Asset
Headset Comparison includes a custom Comparison List Interface Asset. This interface asset manages the selected items and exposes them as a data feed. The collection and its data template of that data feed control how those items appear on screen.
The Comparison List is reusable beyond this sample. Its properties are generic, so it can hold information about other products, materials, exhibits or objects you want visitors to compare.
Each item contains:
- Item ID - the unique identifier used to add, update or remove the item.
- Item Name - the name displayed for the item.
- Item Image - the image associated with the item.
- Item Description - supporting information about the item.
- Item Unit Price - the item’s price, where relevant.
- Specification 1–10 - ten fields for your comparison content.
Specification properties are not limited to battery life, weight, or headset features. For example, they could contain dimensions and materials for furniture, capacity and power consumption for appliances, or dates and origins for museum objects.
| Properties, triggers, and actions of the Interface Asset | Purpose |
|---|---|
| List Items property | Supplies the current items as a data feed for a collection. |
| Number of Items property | Provides the current list count. |
| Add Item action | Adds an item using its ID and associated content, or updates an existing item with that ID. |
| Remove Item action | Removes the item identified by its Item ID. |
| Clear List action | Removes every item from the list. |
| List Changed trigger | Allows the experience to respond when the list changes, for example by displaying the comparison or restoring the idle view. |
Each item must have a unique Item ID. Adding an existing ID updates that item instead of creating a duplicate. Repeating an add with identical content leaves the list unchanged.
The Interface Asset is not tied to Nexmosphere hardware or Headless CMS. Buttons, other Interface Assets and other data sources can call the Add Item action. In Headset Comparison, RFID events and on-screen buttons add products to the same list.
To reuse it in another experience, copy the entire ComparisonList folder of the underlying project stored on Composer's Windows PC into your custom Interface Assets library found in [Drive]:\Users\[UserName]\Documents\Intuiface\Interface Assets, keeping its descriptor and supporting files together. Restart Composer, open any other project, and add the Interface Asset in Composer using the Interface Asset panel. Then bind its List Items property to a collection and create a data template appropriate to your content.
The card design, Linear Gauges, animations and reference highlight are configured within the Headset Comparison experience. They are not rendered by the Interface Asset and must be configured separately when creating another comparison experience.
Adding and removing products
Headset Comparison uses separate Headless CMS fields for the lift and return commands.
When the X-Script Command trigger fires and COMMAND contains TR=, the experience filters the Tag UID Picked up field and adds the matching product to the Comparison List.
When the X-Script Command trigger fires and COMMAND contains TD=, it filters the Tag UID Put back field and removes the matching product.
Both actions use the Headless CMS record’s Product ID as the Comparison List’s Item ID.
This is how the experience knows which item to remove: the return command finds the same product record, which supplies the same identifier used when it was added.
The experience uses separate references to the same Headless CMS base for catalogue browsing and temporary RFID lookup.
Using your own tags
Update the tag mappings in the Headless CMS product records:
| Headless CMS Property | Example |
|---|---|
| Product ID | ARC30 |
| Tag UID Picked up |
TR=UID:042489D2F97381 (Replace with your own TAG UID) |
| Tag UID Put back |
TD=UID:042489D2F97381(Replace with your own TAG UID) |
For each product:
- Capture its actual lift and return commands.
- Enter the lift COMMAND in Tag UID Picked up.
- Enter the return COMMAND in Tag UID Put back.
- Confirm that both values belong to the same physical tag.
- Give the product a unique Product ID.
- Refresh the content and test adding and removing it.
The Product ID and RFID UID serve different purposes:
- The RFID UID identifies the physical tag.
- The Product ID identifies the item in the comparison list.
If you replace a product’s tag, update its lift and return mappings. Its Product ID can remain unchanged.
Avoid duplicate command mappings across product records: each lookup should identify one product.
Changing the comparison content
Update the product name, imagery, price, description and specification fields in the Headless CMS base.
Headset Comparison uses ten specification fields. The gauge measurements use paired fields so their labels and numeric values remain separate:
| Property | Example |
|---|---|
| Specification 1 | Battery life (hours) |
| Specification 2 | 30 |
| Specification 3 | Weight (grams) |
| Specification 4 | 245 |
| Specifications 5 - 10 | Other product details. |
Do not append units to the gauge values. Use 30, for example, rather than 30 hours.
If you change the measurements being compared, also update the gauge captions and scales in Composer. Keep the same scale across product cards for each measurement.
When reusing the Comparison List for another subject, you can assign different meanings to the ten specification fields. Update the data-template bindings, labels and gauges to match your content.
Data structure of the Headless CMS bases
Sneaker Exploration and Headset Comparison each use a Headless CMS base. A base defines the components and properties available to the experience; its content supplies the videos, product details and RFID mappings. Perfume Discovery does not use a Headless CMS base: its content is edited directly in the experience.
Sneaker Exploration - Lift and Learn
This base contains an Idle Video Group component. It holds the Idle Video property and a nested Product Videos Collection component. Each item in Product Videos represents one sneaker.
UID TAG Value is the property name in this base. Despite its name, it stores the complete COMMAND value, including TR=UID:, rather than only the tag's UID. There is no separate return-command property: the experience handles TD= through its general return trigger.
Headset Comparison - Lift and Learn
This base contains a Products Collection component, with one item per product. The same items supply the catalogue, RFID lookup and content passed to the Comparison List Interface Asset.
Lift & Learn - Headset Comparison and RFID Product Lookup in Composer refer to the same base, not two separate product databases. The catalogue reference remains available for browsing while the RFID reference is filtered temporarily to identify a lifted or returned product. The Comparison List holds the visitor's current selection; it does not replace the Headless CMS product catalogue.
Customizing Content in the Headless CMS bases
Sneaker videos and tag mappings
Replace the Idle Video property with your own attract video. In Product Videos, edit each item's Video Name, upload its product Video, and enter the lift command in UID TAG Value. The sample contains the sneaker videos SUMMIT, PACE, ROAM, TERRA and TIDE.
For example, an item named SUMMIT can pair its sneaker video with TR=UID:YOUR_TAG_UID. Use the command produced by your own tag, and replace any placeholder mappings before testing with hardware. To add another sneaker, add an item to the existing Product Videos collection using the same three properties.
Headset product content
Edit each Products item to replace its name, image, price, description, tagline and specifications. Keep Product ID unique and stable: the experience uses it to identify the comparison item independently of its name or RFID tag. The lift and return commands for a product must point to the same Products item.
The image below should show the ten specification properties and their content:
Keep the labels and measured values separate. For example, put Battery life (hours) in Specification 1 and 30 in Specification 2. The same applies to weight in Specifications 3 and 4. Although these properties are Text fields in the base, the value fields must contain only a number for use by the Linear Gauges: do not enter 30 hours or 245 g in those fields.
Keep units consistent across products and within the scales configured for the Linear Gauges. If you use the sample for a different product category, update the labels, measured values, data-template bindings and gauge scales together. Changing the content alone does not change how the gauges interpret it.
Using your own copy of a base
- Use Save As in Composer to create a working copy of the sample. When prompted to duplicate its Headless CMS base, choose Duplicate to keep your content separate from the original.
- Open your copied base in Headless CMS and replace the content in its existing components. Preserve the property structure while reusing the supplied bindings.
- For Headset Comparison, confirm that both the catalogue and RFID lookup references use your copied base, so they identify the same product records.
- Publish the content changes in Headless CMS, update the base content in Composer, and test the experience in Player.
Saving a copy of the experience alone does not make its shared content independent. Duplicating the base lets you edit your products without changing the original base. If you replace components or properties with a new structure, review the filters, bindings and Add Item / Remove Item actions that depend on them.
Choosing the right sample
Choose Sneaker Exploration when each product needs a video and visitors will explore one product at a time.
Choose Perfume Discovery when you want a designed information view for two fixed products, with a message preventing simultaneous product exploration.
Choose Headset Comparison when visitors should retain several selections and compare their information side by side.
The difference is more than visual presentation. Each sample handles product identity and visitor state differently:
| Requirement | Sneaker Exploration | Perfume Discovery | Headset Comparison |
|---|---|---|---|
| Change tag mappings | Edit Headless CMS records. | Edit conditional triggers in Composer. | Edit Headless CMS records. |
| Identify the product | Filter Headless CMS using the lift command. | Match tag-specific conditions. | Filter Headless CMS using lift or return commands. |
| Track current selection | One active video selection. | Two-bottle counter and product Groups. | Retained Comparison List items. |
| Handle a return | Restore the idle video. | Update the count and display the remaining fragrance. | Remove the matching Product ID. |
| Add more products | Add Headless CMS records using the existing structure. | Extend the interaction logic and product Groups. | Add Headless CMS records using the existing structure. |
Preparing your own experience
- Open the sample in Composer and use Save As to create a working copy.
- For Sneaker Exploration and Headset Comparison, duplicate the Headless CMS base if you want to edit content independently.
- Replace the sample content and branding.
- In the Nexmosphere Interface Asset, set Serial Port Name (Windows) or Serial Port Path (Android, BrightSign) for your Player device. Use Connect the Nexmosphere device to establish the connection and check Is connected. Use Activity log to inspect received X-Script commands.
- Capture the X-Script commands produced by your own tags.
- Update the appropriate Headless CMS fields or conditional triggers.
- Begin testing with all products returned to their starting positions.
Test both lift and return behavior. For Perfume Discovery, test both bottle orders. For Headset Comparison, return products in a different order from the order in which they were lifted, including removing the reference product.
Finally, test the complete experience in Player with the intended reader, antenna and tagged products.
Comments
0 comments
Article is closed for comments.