Skip to main content

smartLED Trainer Guide

Introduction

This document walks through setting up the CAPTRON Smart LED trainer kit. The kit includes everything needed to connect LED strips and buttons to a PLC or PC over MQTT. This guide is written for control engineers and integrators who are new to MQTT. Providing a deep understanding of our hardware, MQTT, and how to implement the Smart LED's.

By following the walk through the User will be able to:

  • Power on and configure the full hardware stack
  • Set up an MQTT broker and communicate with the controller
  • Publish messages to control LED strips and read button inputs
  • Understand how to scale from a trainer/demo to a production deployment

Overview of Hardware

SEH201 (MQTT Controller)

The provided Controller SEH201 is the communication driver for LED strips and buttons. This communication is done over MQTT, a TCP/IP based messaging protocol commonly used in IOT applications. CAPTRON offers two MQTT controllers. The SEH201 has an M8 plug for the SMC47 series buttons. The SEH101 does not have an m8 plug.

SEH201 MQTT controller

Important features of SEH201 and SEH101

  • Ethernet MQTT communication
  • Power over Ethernet (PoE, ~48 VDC) — supports up to 8W of LED output
  • USB-C (~5 VDC) — alternative power input, 15W of LED output

Limitations of SEH201/SEH101

  • Maximum of 5 LED strips per controller
  • Maximum of 5 daisy-chained SMC47 buttons per controller (SEH201 only)
  • If you need more than 5 buttons, refer to the SEH11-2M2 (40 buttons max)
  • Maximum 3 meters of active LEDs across all strips on a controller

SLS10 (LED Strip)

SLS10 LED strip

Important features of SLS10

  • 60 individually addressable RGB LEDs per meter
  • IP67 and IK07
  • Available in lengths of 980, 2050, 3100, and 5000 mm
  • Lead cable 4000 mm between the strip and the controller

SMC47 (Touch Buttons)

The buttons provided are capacitive touch buttons that are daisy chainable. They also have a 7-segment display that is controlled via MQTT. Commonly used in pick to light applications.

SMC47 touch button

Important features of SMC47

  • RGB illuminated ring (8 programmable colors)
  • 4-digit 7-segment display
  • Up to 5 buttons daisy-chained per SEH201 over a single M8 4-pin cable
  • 24 V DC supply (16.8-32 V range), 0.5 W per button

TB-6293 (Industrial PC)

The TB-6293 is an industrial computer that will act as our MQTT broker.

TB-6293 industrial PC

Important Features of Scout TB-6293

  • MQTT Broker
  • Power over ethernet port, PoE
  • Windows 11 IOT

MQTT Overview

MQTT stands for Message Queuing Telemetry Transport. It is a lightweight messaging protocol that is designed to provide efficient, reliable communication between devices in IoT (Internet of Things) and other resource-constrained environments. MQTT follows a publish/subscribe model, where publishers send messages to a broker that acts as an intermediary, and subscribers receive those messages from the broker. This allows for efficient distribution of messages to multiple recipients, without requiring each device to maintain a direct connection to every other device.

MQTT is designed to be highly scalable, flexible, and easy to implement on a wide range of devices, from simple microcontrollers to powerful servers. It is widely used in IoT applications, where devices need to communicate with each other over constrained networks and with limited processing power and memory resources.

MQTT publish/subscribe model


MQTT Architecture

In MQTT, a device that sends a message is called a publisher and a device that listens for messages is called a subscriber. Publishers send their messages to a topic, and subscribers tell the broker which topics they want to hear about; the broker handles the routing in between. The publisher does not need to know who is listening, and the subscriber does not need to know who sent the message. That decoupling is the whole point of the model: two devices can communicate without ever having a direct connection to each other, and new subscribers (loggers, dashboards, a second PLC) can be added at any time without changing anything on the publisher side.

Publish/Subscribe Model

Publisher

A publisher is any client that sends data to the broker. MQTT requires that publishers provide a topic "the address" and a payload "the data".

Subscriber

A subscriber is any client that is listening to incoming payloads, by listening at specific topics "the address". It does this by telling the broker what topics it wants to listen to and can listen to multiple topics at once.

Broker Client Relationship

MQTT decouples direct connections by using a broker. A broker in our case is an industrial PC. The industrial PC hosts the communication path between devices.

The Client can be either a publisher or subscriber. A device or service is considered a client if it uses the broker for communication.

Topics

Topics are the addressing system of MQTT. They tell the broker where a message should go and allows a subscriber to specify what data they are looking for.

A topic is a simple text string organized in levels separated by forward slashes, like a file path. For example:

conveyor/sensors/sensor1/temperature

Typos route to a topic that nothing is subscribed to, and the message is silently dropped — no error, no warning. This is the most common debugging trap.

Publishers send a message to a specific topic. Subscribers tell the broker which topics they want to receive. When a new message is published to a topic, the broker forwards it to every client subscribed to that topic.

Think of it like a library. The broker is the building. The topic is the shelf and position -- it tells you exactly where to find (or place) a specific book. A publisher puts a book on the shelf. A subscriber is then told when a new book is placed.

Wild Cards

Wild Cards allow clients to subscribe to broad topics. There are two annotations + and #. This feature only works for subscribers.

  • allows subscribers to address a single level. For example, conveyor/sensors/+/temperature. Would allow a subscriber to receive all messages from sensors with their temperatures.

# wild card for subscribing messages to every topic below that point. For example, if a subscriber is subscribed to conveyor/sensors/#. The subscriber will be listening to every topic below "sensors."

Payloads

The payload is the actual content of the message -- the data that the topic is delivering. If the topic is the address on an envelope, the payload is the letter inside.

MQTT itself does not care what is on the payload. It treats the payload as raw bytes and forwards it from publisher to subscriber unchanged. That means the format -- plain text, JSON, a single number, binary data. All will work with MQTT. The SEH devices use JSON formatting. The SEH controllers use case sensitive payloads.

QoS stands for Quality of Service and defines the reliability of message delivery. QoS is negotiated per-hop: once on the publisher-to-broker leg, and again on the broker-to-subscriber leg. A publisher publishing at QoS 2 does not guarantee that subscribers receive at QoS 2 -- each subscriber sets its own QoS level when it subscribes.

  • QoS 0 – (at most once). Fire and forget. Does not guarantee delivery.
  • QoS 1 – (at least once). Guarantees delivery by repeatedly sending the message until acknowledged but can cause duplicates.
  • QoS 2 – (exactly once). Uses a 4-step handshake. Guarantees the message is delivered once and only once.

Last Will

A Last Will and Testament (LWT) is a message that a client registers with the broker when it first connects. If that client later disconnects unexpectedly -- power loss, network drop, crash -- the broker publishes the LWT message on the client's behalf to a topic the client specified. This is how subscribers find out a device has gone offline without having to poll it. Important for monitoring devices in the field.


Why MQTT?

  • MQTT works over standard IT networks (no proprietary field or gate way). Reduces hardware
  • Supported natively by the majority of modern PLC's
  • Decouples direct connection, SEH controllers can be controlled by multiple sources

Disadvantages

  • MQTT requires broker usually hosted on Cloud or Industrial PC, while other protocols are directly connected. Broker is a single point of failure.
  • No schema enforcement. Meaning MQTT allows for malformed data, two clients can object to how data is formatted.

MQTT resources:


Smart LED architecture

The architecture for our trainer follows as such. The industrial computer (TB-6293) acts as our MQTT broker, broking messages between the PLC and SEH201. For this trainer there are two clients, SEH201 and PLC. The PLC publishes specific topics and specifies the output (colors/text) of LED strip and the button. The Controller subscribes to specific topics. Then SEH201 controls the LED strips and buttons based on the topic/payload.

Smart LED trainer architecture

Synopsis

  • PLC sends messages out
  • Broker receives messages and topics
  • SEH controller listens to specific topics, responds to the topics by outputting colors/effects on LED strips and touch buttons.

Trainer Walk Through

This walkthrough covers setting up the industrial PC as an MQTT broker, configuring the SEH201, and publishing your first message.

Prerequisites:

  • Monitor
  • HDMI cord
  • Keyboard
  • Mouse

Powering On Trainer

  1. Plug in the trainer using the power cord.
  2. Connect the monitor, mouse, and keyboard.
  3. Power on the trainer by pressing the small button next to the DC-in outlet on the computer.

Changing the Subnet

The first step is to change the PC's subnet to match the SEH201's default IP address, which is 169.254.101.201.

Why this is step one

Before the controller can talk to the broker, we first have to get onto it to change its settings. The SEH201 ships on the link-local address 169.254.101.201, so the PC has to be on that same 169.254.101.x subnet to reach the controller's built-in webserver.

  1. Go to Settings → Network & Internet → Ethernet.

Network & Internet → Ethernet settings page

  1. Next to IP assignment, click Edit.
  2. Change Automatic (DHCP) to Manual.
  3. Toggle IPv4 on, and enter:
FieldValue
IP address169.254.101.202
Subnet mask255.255.255.0
Gateway169.254.101.1
Preferred DNS8.8.8.8

Edit IP settings dialog set to Manual with the 169.254.101.202 values

  1. Click Save.
You will change the subnet twice

This 169.254.101.x address is only to reach the controller's default address and configure it. In the next section you'll move the SEH201 onto your production subnet (e.g. 192.168.1.x). After that, you'll come back here and set the PC to its production IP — 192.168.1.112, the same address the broker config binds to later.

Configuring the SEH201

With the PC on the 169.254.101.x subnet, we can now open the SEH201's built-in webserver and point the controller at our broker.

Open a web browser and navigate to http://169.254.101.201 to reach the controller.

SEH201 webserver configuration page on first boot

The 45-second save window

To change the controller's settings you must first power-cycle the controller (unplug its power/PoE, then plug it back in), and the configuration must be saved within 45 seconds of the controller booting. Miss the window and the controller ignores the change — just power-cycle and try again.

The page has two portions, and it's important to understand which is which:

  • Top portion — broker settings (MQTT Broker, MQTT Port, …). This tells the controller where the broker lives. Set MQTT Broker to the IP address of the industrial PC you'll use in production — for this example, 192.168.1.112.
  • Second portion — the controller's own network settings (DHCP, IP Address, Subnet). This is the controller's own identity on the network. Set its IP Address to the same subnet as your IPC — for this example, 192.168.1.26. Use whatever address fits your existing architecture.
Why two different IPs here?

The MQTT Broker field is the address the controller connects out to (your PC). The IP Address field is the controller's own address. They are two different devices, so they get two different addresses on the same subnet — don't set them the same.

Webserver password: pythonhead22

Enter the following settings:

SettingValue
MQTT Broker192.168.X.XXX — your IPC's IP (e.g. 192.168.1.112)
MQTT Port1883
MQTT UserLeave blank
MQTT PasswordLeave blank
MQTT TLSLeave blank
Power LimitLeave blank
Wifi SSIDLeave blank
Wifi PassphraseLeave blank
DHCPClick the checkbox
IP Address192.168.X.XXX — the controller's IP (e.g. 192.168.1.26)
Subnet Mask255.255.255.0
Gateway192.168.1.1
DNS8.8.8.8

SEH201 webserver with broker and network settings filled in

Don't skip Gateway and DNS

The device needs both entered to operate properly.

Why port 1883 and blank auth?

1883 is the standard unencrypted MQTT port — it matches the listener 1883 line in the broker config you'll write next. User / Password / TLS are left blank because the broker runs with allow_anonymous true on an isolated trainer network. (In production you'd set credentials here and turn off anonymous access on the broker.)

Confirming it saved: After you enter the password and save, the device resets itself. You'll know the configuration took because you can no longer reach the controller at http://169.254.101.201 — it has moved to its new IP on your production subnet. Your PC is still on 169.254.101.x, so it can't see the controller anymore — which is exactly the signal the change worked.

SEH201 LED Indicator

The SEH201 has an indicator light that reports its connection status at a glance:

ColorStatus
YellowMQTT connection attempt / no MQTT connection
RedNo ethernet/wifi connection
BlueNo ethernet/wifi connection
Cyan / green-blueMQTT connection established

The light stays yellow until the broker is running and the controller connects — you'll watch it turn cyan in Starting the Broker below.

Return the PC to the Production Subnet

The controller now lives on the production subnet (192.168.1.x), but the PC is still on the temporary 169.254.101.x address — so the two can no longer see each other. Move the PC onto the production subnet to rejoin it.

Repeat the Changing the Subnet steps (Settings → Network & Internet → Ethernet → IP assignment → EditManual), this time entering the production values:

FieldValue
IP address192.168.1.112
Subnet mask255.255.255.0
Gateway192.168.1.1
Preferred DNS8.8.8.8

Edit IP settings dialog set to the production 192.168.1.112 values

Why these values now

192.168.1.112 is the PC's permanent broker address (the one the broker config binds to in Setting up the MQTT Broker). The controller is at 192.168.1.26; the PC must not reuse that address.

Installing Eclipse Mosquitto

Eclipse Mosquitto is a free, open-source MQTT broker that we'll use throughout this walkthrough.

  1. Navigate to https://mosquitto.org/Download.

Eclipse Mosquitto download page showing the Windows x64 installer

  1. Download the Windows installer, e.g. mosquitto-2.1.2-install-windows-x64.exe.
  2. Go to File Explorer → Downloads → double-click the installer.
  3. Follow the installation setup until Mosquitto is installed. (Default install location: C:\Program Files\Mosquitto\.)

Installing MQTT Explorer

MQTT Explorer is a tool used to visualize MQTT messages. We'll use it to troubleshoot and to publish test messages.

  1. Navigate to https://mqtt-explorer.com → click the Windows installer.

MQTT Explorer download page with the Windows installer option

  1. Go to File Explorer → Downloads → double-click the installer.
  2. Follow the installation steps until MQTT Explorer is installed.

Setting up the MQTT Broker

The broker reads its settings from a configuration file. We'll create a folder for it, write the config, and point Mosquitto at it.

1. Create the broker folder

In File Explorer, go to This PC → Windows (C:) → Users → User, and create a new folder named mqttbroker.

File Explorer at This PC → Windows (C:) → Users

The full path will be:

C:\Users\User\mqttbroker\

2. Write the configuration file

Open Notepad (search for it in the Start bar) and type the following:

allow_anonymous true
listener 1883 192.168.1.112
listener 9001 0.0.0.0
protocol websockets
persistence true
persistence_file mosquitto.db
persistence_location C:\Users\User\mqttbroker\
log_type all

mosquitto.conf open in Notepad with the configuration lines

Watch the IP

The listener 1883 line must use the PC's production IP — the 192.168.1.112 you returned the PC to above, not the temporary 169.254.101.202 link-local address.

What each line does — and why it's here:

LineWhat it doesWhy we need it
allow_anonymous trueLets clients connect without a username/passwordFine for a trainer on an isolated network. Disable this in production.
listener 1883 192.168.1.112Standard MQTT port, bound to the PC's IP1883 is the default MQTT port the PLC/SEH201 connect to
listener 9001 0.0.0.0A second listener on port 9001, all interfacesUsed for the WebSockets protocol below
protocol websocketsEnables MQTT over WebSockets on that listenerLets browser-based dashboards connect
persistence trueSaves broker state to diskRetained messages/subscriptions survive a broker restart
persistence_file mosquitto.dbThe database filenameWhere persisted state is stored
persistence_location C:\Users\User\mqttbroker\Where to put that fileKeeps everything in our broker folder
log_type allLogs everythingMaximum visibility while learning/troubleshooting

To read more about Mosquitto configuration options, see https://mosquitto.org/man/mosquitto-conf-5.html

3. Save the config file correctly

  1. In Notepad go to File → Save As.
  2. Navigate into the mqttbroker folder you created.
  3. Set File name to mosquitto.conf.
  4. Important: change Save as type from "Text Documents (*.txt)" to "All Files (*.*)", then click Save.

Notepad Save As dialog saving mosquitto.conf into the mqttbroker folder

Why "All Files" matters

If you leave the type as "Text Documents," Notepad silently appends .txt, leaving you with mosquitto.conf.txt — which the broker won't recognize. Setting "All Files" saves it as a true .conf.

Starting the Broker

  1. In the Start search bar, open PowerShell → right-click → Run as Administrator.

  2. Change into the broker folder:

    cd C:\Users\User\mqttbroker
  3. Only if your file ended up named mosquitto.conf.txt, rename it. (If you saved as "All Files" above, skip this — the file is already correct.)

    Rename-Item ".\mosquitto.conf.txt" "mosquitto.conf"
  4. Start the broker, pointing it at your config:

    & "C:\Program Files\Mosquitto\mosquitto.exe" -c "mosquitto.conf"

You should see the broker boot up and stay running in the terminal, with log lines like:

mosquitto version 2.1.2 starting
Config loaded from mosquitto.conf.
Opening ipv4 listen socket on port 1883.
Opening ipv4 listen socket on port 9001.
mosquitto version 2.1.2 running

PowerShell running mosquitto.exe; the broker boots and stays running on ports 1883 and 9001

Leave the window open

While learning, you want to see the live log — every connection and message shows up here, which makes the earlier log_type all setting pay off. In production you'd instead install Mosquitto as a Windows service so it starts automatically in the background. Closing this PowerShell window stops the broker.

The SEH201 should now connect to the broker. You will see setup messages in the terminal from the SEH201.

Broker terminal showing the SEH201 connecting and exchanging setup messages

Using MQTT Explorer

Now we can start up MQTT Explorer and connect to the broker to help with visualization.

  1. Open MQTT Explorer.
  2. Enter the IP address of the IPC (the broker) under Host.
  3. Click Connect.

Once connected, you'll see any messages published between the SEH201 and the broker. For example, you can power-cycle the SEH201 to watch its startup messages appear.

Verifying the SEH201 Connection

The controller is already configured and the broker is running. This step confirms the controller actually reached the broker before you start sending payloads.

  1. Ping the SEH201's IP address — confirm the PC can reach the controller on the production subnet.

    ping 192.168.1.26

    A reply means the PC and SEH201 are on the same subnet and can talk. If ping fails, it's a wiring/subnet problem (or the PC is still on 169.254.101.x) — not an MQTT problem.

  2. Check the MQTT connection — confirm the SEH201 shows up as a connected client. Watch the broker's PowerShell log for a new client connection, or look for the controller's topic tree appearing in MQTT Explorer.

First Message

LED strips

On the right-hand side of MQTT Explorer there's a topic field and a message field. We'll use these to publish messages to the SEH controller and control the LED strips.

The topic. Every command to the LED strips uses this topic:

captron.com/<device>/nd/<unique-id>/Set/Data/LedStrip
  • <device> — the controller model you're using for your application (e.g. SEH11, SEH101, SEH201).
  • <unique-id> — the controller's unique ID (printed on the device; you'll also see it in the broker traffic).

For example, the topic is:

captron.com/SEH201/nd/EU-TiredSpiffyPotato/Set/Data/LedStrip

The payload. Every payload is in JSON format. The example payload for testing is below — it turns LEDs 0 through 15 green:

{
"LED_STRIP_1": {
"Active": true,
"Segments": [
{
"StartLED": 0,
"StopLED": 15,
"Speed": 100,
"Effect": 1,
"Colors": [
{ "R": 0, "G": 255, "B": 0 },
{ "R": 0, "G": 255, "B": 0 }
]
}
]
}
}
Payloads are case-sensitive JSON

"Active" works; "active" does not. A wrong-case key produces no error — the controller silently ignores it. Copy the example exactly.

Explanation of the payload:

FieldMeaning
LED_STRIP_1Which strip you're changing. If you have multiple LED strips, adjust the number.
Activetrue applies the change; false and the strip won't change.
SegmentsThe options for what the LED strip outputs.
StartLEDWhere the lit output starts. Oriented toward the start of the strip (the lead-cable end).
StopLEDWhere the lit output stops.
SpeedRange 1–250. Higher number = faster effect.
EffectRange 1–6 (plus 200). Each value is a different effect — see the table below.
ColorsTwo RGB values are listed. This is for the multi-picker effect (6). If multi-picker isn't selected, the first RGB listed is used.

Effect values:

ValueEffect
1FX_MODE_STATIC
2FX_MODE_BLINK
3FX_MODE_FLASH
4FX_MODE_LEADING_LINES
5FX_MODE_LEADING_LINES_REVERSE
6FX_MODE_MULTPICKER
200FX_MODE_CUSTOMER_KNIGHT_RIDER
Try it

Change StopLED, the Colors RGB values, or Effect and re-publish to the same topic — the strip's output changes. That is exactly what a PLC does in production: same topic, different payload as conditions change.

SMC47 push buttons

The SMC47 buttons are daisy-chained, so before you can talk to one individually you must give each button a unique address. This is a one-time sequence of MQTT messages you can send straight from MQTT Explorer.

Addresses persist; states don't

The buttons keep their assigned address even after a power loss — so you normally only run the assign sequence once. The button states (the look for each phase below), however, are not retained across a power cycle and must be re-sent. Your PLC must re-send the states on startup.

Each button has three possible states:

StateWhen it applies
PRE-pressedThe default/idle look before the button is touched.
POST-pressedThe look after the button is touched (confirmed).
LONG-pressedThe look after a long touch (when long-press mode is enabled).

Step 1 — Assign an address

In MQTT Explorer, publish these three messages in order, all to the topic:

captron.com/<device>/nd/<device-id>/Set/Data/Smc

(For our example: captron.com/SEH201/nd/EU-TiredSpiffyPotato/Set/Data/Smc.)

a. Show an effect on all buttons:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_PARAMETER",
"Offset": "PRE_BUTTON_MODE",
"PAYLOAD": "ENABLED//COLCYAN_CIRCLE_ANIMATED_CLOCK/@@@@"
}

b. Set all buttons to the PRE-pressed state:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_STATUS",
"Offset": "SPECIAL_COMMANDS",
"PAYLOAD": "PRE_PRESSED_STATE"
}

c. Send the address to assign:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_STATUS",
"Offset": "ADDRESS_TO_BE_ASSIGNED",
"PAYLOAD": "1000"
}

Then touch the button you want to give that address to. We recommend assigning the lowest address (1000) to the first button in the daisy-chain order. To assign the rest, increase the address by one (1001, 1002, …), publish, and touch the next button. Repeat for all buttons.

Step 2 — Set the pre-pressed state

Topic: captron.com/<device>/nd/<device-id>/Set/Data/Smc

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "PRE_BUTTON_MODE",
"Payload": "{Mode}/{Quantity}/{LED ring color}/{LED ring effect}/{Display text}"
}

Example — solid blue ring with the number 42 displayed:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "PRE_BUTTON_MODE",
"Payload": "ENABLED/42/COLBLUE/SOLID_RING"
}

Step 3 — Set the post-pressed state

Same topic — just change the Offset to POST_BUTTON_MODE:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "POST_BUTTON_MODE",
"Payload": "{Mode}/{Quantity}/{LED ring color}/{LED ring effect}/{Display text}"
}

Example — solid blue ring, display donE:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "POST_BUTTON_MODE",
"Payload": "ENABLED//COLBLUE/SOLID_RING/donE"
}

Payload option reference

The button Payload string is five fields separated by /:

{Mode}/{Quantity}/{LED ring color}/{LED ring effect}/{Display text}

1. Mode — whether the button can be confirmed:

ValueMeaning
ENABLEDButton can be confirmed; LED ring and display can be controlled.
DISABLEDButton can not be confirmed; LED ring and display can still be controlled.
LONGPRESS_ENABLEDButton enters the long-press state after a held touch (default ~2 s); set its long-press look via the POST_BUTTON_MODE offset.

2. Quantity — a number from 1 to 9999, automatically centered on the display. (Leave this field empty to use the Display text field instead.)

3. LED ring color:

COLREDCOLMAGENTA
COLGREENCOLCYAN
COLBLUECOLWHITE
COLYELLOWCOLOFF (ring off)

4. LED ring effect:

SOLID_RINGFLASH_ARROW_UP
FLASH_RINGFLASH_ARROW_DOWN
CONFIRMFLASH_ARROW_LEFT
POINT_ANIMATED_CLOCKFLASH_ARROW_RIGHT
CIRCLE_ANIMATED_CLOCKANIMATED_ARROW_UP
SOLID_ARROW_UPANIMATED_ARROW_DOWN
SOLID_ARROW_DOWNANIMATED_ARROW_LEFT
SOLID_ARROW_LEFTANIMATED_ARROW_RIGHT
SOLID_ARROW_RIGHT

5. Display text — up to 4 characters on the 7-segment display:

  • Use @ as a blank/space character.
  • If both Quantity and Display text are provided, Quantity wins. With Display text there's no auto-alignment — you place the characters yourself: left-aligned 42@@, right-aligned @@42. (Quantity aligns automatically.)
  • Examples: @Go@, donE.
7-segment limits

Some characters can't be shown due to 7-segment display limits.

Enabling polling

Polling lets the controller actively report when a button is pressed. Publish the same /Set/Data/Smc topic using the HUB address and a /-separated list of button addresses to poll (up to 6):

{
"Address": "HUB",
"CommandType": "SET_PARAMETER",
"Offset": "",
"Payload": "1000/1001/1002"
}
  • Use 0000 as the payload to turn polling off.
  • When polling is on and a button is touched, the controller publishes a response on Pub/Data/Smc with that button's address and Payload: POST_PRESSED_STATE.

A ready-to-copy version of each step is in Example topics and Payloads below.

Walkthrough Synopsis

A quick recap of everything the walkthrough covered, one line per step:

  1. Powered on the trainer — connected peripherals and booted the industrial PC.
  2. Changed the subnet — put the PC on 169.254.101.x to reach the SEH201's default address and open its webserver.
  3. Configured the SEH201 — pointed the controller at the broker's IP and gave it a production IP on the 192.168.1.x subnet.
  4. Returned the PC to the production subnet — moved the PC to 192.168.1.112 so it and the controller share the same network.
  5. Installed the software — Eclipse Mosquitto (the broker) and MQTT Explorer (the visualizer).
  6. Set up and started the broker — wrote mosquitto.conf, then launched Mosquitto so it listens on ports 1883 and 9001.
  7. Connected and verified — used MQTT Explorer to watch broker traffic and confirmed the SEH201 was online via ping and a live connection.
  8. Sent the first message — published payloads to drive the LED strip and configure the SMC47 buttons.

Scaling for your Application

Next Steps

  • Read about Python integration
  • Read about PLC integration (Allen-Bradley, Beckhoff, AutomationDirect)
  • CAPTRON Solutions Buying Guide

Application Examples

Example topics and Payloads

This section provides payloads and topics to copy and paste for integration purposes. The device ID is a unique identifier on each SEH controller. The ID is listed on the device.

LED strip activation. Payload turns LED's 0 through 80 green.

Topic:

captron.com/SEH201/nd/<device-id>/Set/Data/LedStrip

Message Payload Data:

{
"LED_STRIP_1": {
"Active": true,
"Segments": [
{
"StartLED": 0,
"StopLED": 80,
"Speed": 100,
"Effect": 1,
"Colors": [
{ "R": 0, "G": 255, "B": 0 },
{ "R": 0, "G": 255, "B": 0 }
]
}
]
}
}

First step in setting address of SMC. Send a message to show an effect.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_PARAMETER",
"Offset": "PRE_BUTTON_MODE",
"PAYLOAD": "ENABLED//COLCYAN_CIRCLE_ANIMATED_CLOCK/@@@@"
}

Second step in setting address of SMC. Set all SMC's to PRE-state.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_STATUS",
"Offset": "SPECIAL_COMMANDS",
"PAYLOAD": "PRE_PRESSED_STATE"
}

Third step in setting addresses of SMC. Send assign message with the address to be used.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_STATUS",
"Offset": "ADDRESS_TO_BE_ASSIGNED",
"PAYLOAD": "1000"
}

Reset address on all SMC buttons.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Address": "ALL_SENSORS",
"CommandType": "SET_PARAMETER",
"Offset": "ADDRESS_BTN_LOW_BYTE",
"PAYLOAD": "FFFE"
}
{
"Address": "ALL_SENSORS",
"CommandType": "SET_STATUS",
"Offset": "SPECIAL_COMMANDS",
"Payload": "REBOOT"
}

Enable Polling from the SMC buttons with the address 1008 and 1009.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Address": "HUB",
"CommandType": "SET_PARAMETER",
"Offset": "",
"Payload": "1008/1009"
}

Example setting pre pressed state for address 1000.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "PRE_BUTTON_MODE",
"Payload": "ENABLED/42/COLBLUE/SOLID_RING"
}

Setting post pressed state for address 1000.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_PARAMETER",
"Offset": "POST_BUTTON_MODE",
"Payload": "ENABLED//COLBLUE/SOLID_RING/donE"
}

Switching to prepressed state for address 1000.

Topic:

captron.com/SEH201/nd/Set/Data/Smc

Message Payload Data:

{
"Content": "/Set/Data/Smc",
"Address": "1000",
"CommandType": "SET_STATUS",
"Offset": "SPECIAL_COMMANDS",
"Payload": "PRE_PRESSED_STATE"
}

Trouble Shooting

SymptomLikely causeCheck
LEDs/buttons don't respond at allWrong subnet / no network pathping the SEH201; confirm the PC and controller share the same 192.168.1.x subnet
Message sent, nothing happens, no errorTypo'd topic (silently dropped)Subscribe to # in MQTT Explorer and verify the topic arrives
Payload ignoredWrong-case JSON keyMatch the example casing exactly (Active, not active)
Broker won't startConfig saved as .conf.txtConfirm the real filename; re-save as "All Files"
Everything resets after a power blipController state isn't persistedController state clears on power loss — the PLC must re-send states on startup
Clients can't connectBroker not running / window closedConfirm the PowerShell broker window is still open and "running"

Glossary

BrokerThe central MQTT server that receives every published message and routes it to subscribed clients. In this trainer, the TB-6293 running Mosquitto.
Daisy-chainWiring multiple devices in series off one cable/port. Up to 5 SMC47 buttons daisy-chain to one SEH201 over a single M8 cable.
DHCPDynamic Host Configuration Protocol. Automatically assigns IP addresses on a network. We disable it in favor of a static IP so the broker's address never changes.
DNSDomain Name System. Translates hostnames into IP addresses; entered on the PC and controller for the device to operate properly.
GatewayThe router IP address a device uses to reach addresses outside its own subnet.
IK07Impact protection rating defined by IEC 62262. "07" means the enclosure withstands a 2-joule impact (roughly a 500 g object dropped from 400 mm).
IoTInternet of Things. A network of physical devices — sensors, controllers, machines — that communicate over a network, typically using lightweight protocols like MQTT.
IP67Ingress protection rating defined by IEC 60529. "6" means fully dust-tight; "7" means protected against temporary immersion in water (up to 1 m for 30 minutes).
JSONJavaScript Object Notation. A lightweight, human-readable text format for structuring data as key/value pairs and arrays. SEH controllers expect payloads in JSON.
Link-local addressAn auto-assigned address in the 169.254.x.x range used when no DHCP server is present. The SEH201's default address (169.254.101.201) is link-local.
LWTLast Will and Testament. A message a client registers with the broker on connection. If the client disconnects unexpectedly, the broker publishes the LWT on its behalf so subscribers know the device went offline.
M8A circular industrial connector standard with an 8 mm thread diameter. The SEH201 uses a 4-pin M8 to daisy-chain SMC47 buttons.
MosquittoEclipse Mosquitto — the free, open-source MQTT broker software used as the broker in this trainer.
MQTTMessage Queuing Telemetry Transport. A lightweight publish/subscribe messaging protocol designed for IoT and resource-constrained devices.
MQTT ExplorerA free desktop tool that visualizes the broker's topic tree in real time and can publish test messages.
PayloadThe actual content/data of an MQTT message. SEH payloads are case-sensitive JSON.
Pick-to-lightAn order-picking method where lights/buttons direct an operator to the correct bin and confirm the pick. A primary SMC47 use case.
PLCProgrammable Logic Controller. An industrial computer used to automate machines and processes; in this trainer, it acts as the MQTT publisher.
PoEPower over Ethernet. Allows users to power hardware through an Ethernet switch/port, eliminating a separate power cable.
PublisherAny client that sends messages to the broker on a topic. In this trainer, the PLC.
QoSQuality of Service. The MQTT setting defines delivery reliability. Three levels: 0 (at most once), 1 (at least once), 2 (exactly once). Negotiated per-hop.
RGBRed, Green, Blue. The color model used to specify LED colors as three 0–255 channel values.
Static IPA manually-assigned, fixed IP address (as opposed to DHCP). Used so the broker and controller addresses stay constant.
SubnetA logical division of an IP network. Devices must share a subnet (e.g. 192.168.1.x) to communicate directly.
SubscriberAny client that listens for messages on chosen topics. In this trainer, the SEH201.
TCP/IPTransmission Control Protocol / Internet Protocol. The standard networking stack MQTT runs on top of.
TopicThe hierarchical address string (levels separated by /) that tells the broker where a message goes.
WebSocketsA protocol that carries MQTT over standard web connections, letting browser-based dashboards connect (port 9001 in the broker config).
WildcardA subscription symbol: + matches one topic level, # matches everything below a point. Subscribers only.