Search for Solutions. Get Support.

  • First time setup
  • Button Mapping
  • Link Multiple Haptique
  • Roku

MQTT Integration on Haptique Remote

Updated 25 Nov, 2025
MQTT Integration Setup Guide - Haptique RS90
Haptique RS90 • MQTT Integration

MQTT Integration Setup Guide

Complete reference for MQTT topics, payloads, and retained messages for the Haptique RS90 remote control system.

Version 1.1 MQTT 3.1.1 / 5.0

The Haptique RS90 uses MQTT with Retained Messages for seamless integration with home automation systems. The remote automatically reports its configuration and state when it connects to the broker—no "Get" commands are needed. Simply subscribe to the topics below, and the broker will deliver current data immediately.

What Are Retained Messages?

Retained messages persist on the broker. When you subscribe to a topic, you instantly receive the last published value—perfect for device state and configuration data.


1. Device ID (Auto-Reported)

🆔 Remote Device Identifier

The RS90 automatically publishes its unique device ID when connecting to the broker. When the remote first connects to MQTT, it publishes the following topics with device information:

Main Device Topic Retained
Haptique/{RemoteID}
Published Topics on Connection:
• Haptique/{RemoteID}/status = online • Haptique/{RemoteID}/keys = button:# • Haptique/{RemoteID}/device/list = [JSON Array] • Haptique/{RemoteID}/macro/list = [JSON Array]
How to Find Your Remote ID

To get your unique RemoteID for use in MQTT topics:

  1. Open the Haptique Config app on your mobile device.
  2. Tap the settings icon in the top right corner.
  3. Find "Connected Haptique" section.
  4. Look for devices starting with #cantata-xxx.
  5. Tap on your device entry to view details.
  6. Copy your unique ID (format: e1c9215be8afe4d2).
💡
Example RemoteID

If your device ID is e1c9215be8afe4d2, your topics would be:
Haptique/e1c9215be8afe4d2/status
Haptique/e1c9215be8afe4d2/device/list


2. System Status (Auto-Reported)

📡 Connection Status

The remote automatically updates this topic when it connects or disconnects. This uses MQTT's Last Will & Testament (LWT) feature.

Status Topic Retained
Haptique/{RemoteID}/status
Received: 
• "online" - Remote is connected • "offline" - Remote is disconnected
Automatic Updates

The broker automatically sets this to "offline" if the remote loses connection unexpectedly (via LWT).


3. Resource Discovery (Auto-Reported)

The remote publishes its complete configuration to these topics upon connection. All data is retained and immediately available to new subscribers.

📋 Device List

A list of all devices configured on the remote.

Device List Retained
Haptique/{RemoteID}/device/list
Response Format: JSON Array (Retained)
[ { "Id": "{ID}", "name": "{deviceName}" }, { "Id": "{ID}", "name": "{deviceName}" } ]

🎬 Macro List

A list of all macros configured on the remote.

Macro List Retained
Haptique/{RemoteID}/macro/list
Response Format: JSON Array (Retained)
[
{ "Id": "{ID}", "name": "{macroname}" }, { "Id": "{ID}", "name": "{macroname}" } ]

⌨️ Device Commands

Retrieve the list of available commands for a specific device by subscribing to this topic. The remote publishes the command list as a retained message.

Device Commands Publish Retained
Haptique/{RemoteID}/device/{devicename}/detail
Response Format: JSON Array (Retained)
[ { "Id": "{commandID}", "name": "{commandname}" }, { "Id": "{commandID}", "name": "{commandname}" } ]
How It Works

Subscribe to this topic and the remote will automatically send you the retained JSON array of all available commands for that device.


4. Control Topics

Publish to these topics to trigger macros and send device commands to your remote.

🎮 Trigger Macro

Publish to this topic to activate a macro's ON or OFF sequence on the remote.

Macro Trigger Publish
Haptique/{RemoteID}/macro/{macroname}/trigger
Payloads:
• "on" - Execute macro ON sequence • "off" - Execute macro OFF sequence
Case Sensitivity

Payloads are lowercase: use "on" and "off" (not "ON" or "OFF").

📱 Trigger Device Command

Publish to this topic to send a specific command to a device.

Device Command Trigger Publish
Haptique/{RemoteID}/device/{devicename}/trigger
Payload:
{commandname}
💡
Example Commands

Common commands: POWER, VOL_UP, VOL_DOWN, MUTE, PLAY, PAUSE, CH_UP, CH_DOWN


5. Monitoring Topics

🔋 Battery Level

To request battery level, publish to the battery/status topic (without payload). The remote will respond with the battery percentage on the battery_level topic.

Request Battery Status Publish
Haptique/{RemoteID}/battery/status
Battery Level Response
Haptique/{RemoteID}/battery_level
Response Format:
61
Example: 61 = 61% battery remaining
💡
How It Works

1. Publish to Haptique/{RemoteID}/battery/status (no payload needed)
2. Subscribe to Haptique/{RemoteID}/battery_level to receive the percentage value

⌨️ Physical Key Events

The remote automatically reports physical button presses in real-time. No request needed—just subscribe to receive events.

Key Events (Auto-Reported)
Haptique/{RemoteID}/keys
Response Format:
keys = button:13
Example: button:13 indicates button #13 was pressed
Auto-Reported

This topic is automatically published whenever any physical button is pressed on the remote. Perfect for monitoring remote usage and creating custom automations based on button presses.


Practical Examples

💡 Example Usage Scenarios

Example 1: Turn On "Movie Night" Macro

Publish this message to trigger your macro:

Topic (Publish)
Haptique/e1c9215be8afe4d2/macro/Movie Night/trigger
Payload: on
Example 2: Send POWER Command to Living Room TV

Publish this message to control your device:

Topic (Publish)
Haptique/e1c9215be8afe4d2/device/Living Room TV/trigger
Payload: POWER
Example 3: Monitor Connection Status

Subscribe to receive automatic status updates:

Topic (Subscribe)
Haptique/e1c9215be8afe4d2/status
Received: online
Example 4: Get Device List on Connection

Subscribe to receive the retained device list:

Topic (Subscribe)
Haptique/e1c9215be8afe4d2/device/list
Received (Retained):
[ {"Id": "68d127ec87c723b3da7d91d8", "name": "Audio-Emotiva-XMC-1"}, {"Id": "68d63f1d87c723b3da7e86e1", "name": "Entertainment Room"}, {"Id": "68666c5a3a7e978bebd60492", "name": "Media Box-Apple-5721"} ]
Example 5: Request Battery Level

Step 1 - Publish request (no payload):

Topic (Publish)
Haptique/e1c9215be8afe4d2/battery/status

Step 2 - Subscribe to receive response:

Topic (Subscribe)
Haptique/e1c9215be8afe4d2/battery_level
Received: 61
Example 6: Button Presses

Subscribe to receive automatic button press events:

Topic (Subscribe - Auto-Reported)
Haptique/e1c9215be8afe4d2/keys
Received: keys = button:13

🏠 Home Automation Integration

The Haptique RS90 works seamlessly with popular automation platforms:

  • Home Assistant: Create automations based on time, sensors, or device states. Use MQTT auto-discovery for easy setup.
  • Node-RED: Build complex flows combining MQTT messages with other smart home devices.
  • OpenHAB: Control entertainment systems alongside other smart home devices through a unified interface.
  • IFTTT/Webhooks: Create conditional triggers that bridge cloud services with your local automation.
  • Custom Scripts: Use Python (paho-mqtt), JavaScript (MQTT.js), or any MQTT client library for custom solutions.

Best Practices

Implementation Tips

  • Subscribe Once: Thanks to retained messages, you only need to subscribe when your client starts. The broker delivers current values immediately.
  • Monitor Status: Always subscribe to the status topic to detect connection issues.
  • Use Wildcards: Subscribe to Haptique/+/status to monitor all remotes, or Haptique/{RemoteID}/# for all topics from one remote.
  • QoS Levels: Use QoS 1 for control commands to ensure delivery. QoS 0 is fine for monitoring.
  • Keep Topic Names: Device and macro names are case-sensitive. Use exact names as shown in device/macro lists.

Troubleshooting

? No Retained Messages Received

  • Verify your MQTT broker supports retained messages (most do by default).
  • Check that the remote has successfully connected (monitor status topic).
  • Ensure your client is subscribed before the remote publishes (though retained messages should still arrive).
  • Use an MQTT client like MQTT Explorer to verify messages are on the broker.

? Commands Not Working

  • Verify exact topic structure with correct RemoteID, device name, and macro name.
  • Check payload format (lowercase "on"/"off" for macros, exact command names for devices).
  • Ensure the remote status shows "online".
  • Confirm device/macro names match exactly (case-sensitive).
  • Use MQTT Explorer to monitor topic activity and verify message delivery.

? Intermittent Connection

  • Check Wi-Fi signal strength at the remote's location.
  • Verify broker configuration allows persistent connections.
  • Increase broker keepalive timeout settings.
  • Review broker logs for disconnection reasons.
  • Ensure broker has sufficient resources (memory, CPU).
🔗
Need Additional Help?

Visit https://support.haptique.io for integration examples, automation templates, Home Assistant blueprints, and technical support.

whatsapp