Skip to main content

Coreflux HUB overview — start here

Why This Guide?

This is the fastest way to validate your Coreflux setup: in under 15 minutes you’ll have a live LoT (Language of Things) Action running inside your broker—proof that your installation works and logic executes at the edge. New to Coreflux? Start with the Overview.
Like installing an app on your router instead of your phone. LoT Actions run directly inside the broker — your logic executes at the edge without an external script or server.

Prerequisites

Before you begin, ensure you have:
  • A running Coreflux Broker — See the Installation Guide if you haven’t set one up yet
  • VS Code with the LoT Notebooks extension or access to the Coreflux HUB in your browser — see the VS Code Setup Guide for the extension
  • Basic MQTT knowledge — Understanding of topics, publish/subscribe patterns

Ready? Here’s what you’ll build and deploy.

Your First LoT Action in 15 Minutes

Concept Refresher: You are about to write an action that lives and runs inside the broker, not on your laptop.
Let’s create a simulated temperature sensor that publishes a temperature reading every 5 seconds. You’ll see data on a topic as soon as you deploy—no external input required. This keeps the whole guide in a single “temperature monitoring” flow.

Understanding the Action

LoT Actions have three parts:
  1. DefinitionDEFINE ACTION <name>
  2. Trigger — When to run (ON EVERY <time>, ON TOPIC "<topic>", or ON CHANGE "<topic>" for value-change-only)
  3. Logic — What to do (publish data, conditional logic, etc.)
Here’s what we’re building:
Temperature Simulator
Quotes inside strings must be escaped with backslashes (e.g. "{\"temperature\": 72}").
For a complete reference on triggers, operations, and advanced patterns, see the Actions documentation.

Deploy the Action

If you have the Coreflux HUB running—via Docker Compose or the standalone desktop app for Windows or Linux—you can deploy actions directly from the HUB. See Installation and the Coreflux HUB Overview.
1

Open the HUB

In your browser, open http://localhost:3000 for Docker Compose. Click New Connection and set Host to broker (Protocol mqtt://, Port 1883). For the standalone desktop app, run the executable and create a connection to your broker.
2

Go to LoT Editor

Select LoT Editor in the HUB dock. In the WORKSPACE section of the sidebar, click + New to create a project, then add a + Code cell to its notebook. See LoT Editor for the full editor reference.
3

Paste the Action Code

Paste the following code into the cell (no -addAction prefix needed—the HUB handles registration):
4

Run the cell

Click the cell’s run button (or press Shift+Enter) to deploy it. The cell’s badge changes to SYNCED and the Action appears under Broker → Entities → Actions — it is now running on the broker.

Verify It’s Running

If you deployed via the HUB, verify using the built-in Data Viewer. In the top navigation, select MQTT, then Data Viewer. In the Topic Tree, navigate to sensorszone1temperature. You should see {"temperature": 72} arriving every 5 seconds in the payload viewer.

Data Viewer showing live temperature messages on sensors/zone1/temperature

Congratulations! Your first LoT Action is live.

Example Real Scenario: Temperature Alarm

Now let’s create a reactive action that transforms sensor data and checks thresholds. This demonstrates data transformation and conditional logic—common patterns in industrial monitoring.
This action runs only when a message arrives on sensors/+/temperature. After you deploy it, you will see no output until something publishes to that topic—for example, the Temperature Simulator from the previous section (if both are running), or a manual publish from the HUB Data Viewer or any MQTT client.
Here’s what the action does each time a new temperature reading arrives:
  1. Trigger — The action fires whenever a message is published to any topic matching sensors/+/temperature (e.g. sensors/zone1/temperature).
  2. Extract — It reads the temperature value (in Fahrenheit) from the incoming JSON payload.
  3. Convert — It transforms Fahrenheit to Celsius using the standard formula: (F − 32) × 5 / 9.
  4. Decide — If the Celsius value exceeds 35 °C, it publishes an alert to alerts/high_temp. Otherwise, it publishes the normalized Celsius reading to sensors/normalized.
The {} denotes variable substitution, and expressions must be wrapped in parentheses. The + in the topic pattern is a single-level MQTT wildcard — it matches any value in that position (e.g. sensors/zone1/temperature, sensors/zone2/temperature).

Deploy and Test

Deploy this action using the same method as above (Coreflux HUB, VS Code extension, or MQTT client). Once deployed, use the steps below to verify reactive logic.

How to Test the Logic

The action subscribes to any topic matching sensors/+/temperature (e.g. sensors/zone1/temperature). It expects a JSON payload with a temperature key (Fahrenheit). It then converts to Celsius and either publishes an alert (if > 35°C) or the normalized value. Sample payloads (copy-paste):
  • Below threshold — publish to sensors/zone1/temperature:
    Expect: a message on sensors/normalized with the Celsius value (about 25).
  • Above threshold — publish to sensors/zone1/temperature:
    Expect: a message on alerts/high_temp with text like “Alert: 35°C exceeds threshold”.
1

Deploy the Temperature Alarm action

In LoTLoT EditorActions, create a new action or open an existing one, paste the Temperature Alarm code, and save. Confirm it appears in the Actions list.
2

Open the Data Viewer

Select MQTTData Viewer. In the Topic Tree, watch sensors/normalized and alerts/high_temp (add them to your tracked view if needed).

Coreflux HUB Data Viewer — Publish panel, Topic Tree, and live topic details

3

Send test data

In the Publish panel, set the topic to sensors/zone1/temperature and paste one of the sample JSON payloads above. Click publish. If the Temperature Simulator is still running, it already publishes every 5 seconds—you will see results on sensors/normalized (72°F is below 35°C).
4

Confirm output

Select the output topic in the tree and verify the payload in the viewer (normalized value or alert text).
This confirms your broker transforms data and applies conditional logic in real time.

Clean Up (Optional)

To remove the test action:
In the LoT Editor, expand Broker → Entities → Actions in the sidebar, right-click the action, and choose Remove from broker…. Confirm—the action is removed from the broker immediately. See Removal for the other flows.

Quick Examples

Looking for inspiration? Check out the Language of Things Training Repository for common patterns like:
  • Topic-Based Triggers: Echo messages between topics
  • State Machines: Toggle switches and conditional logic
  • Event Counters: Track and aggregate system events

Language of Things Training

Explore a collection of ready-to-use LoT Action examples and templates.

Troubleshooting

  • Verify the broker is running and you’re connected
  • Check $SYS/Coreflux/Command/Output for error messages
  • Ensure proper indentation in your LoT action (use consistent tabs or spaces)
  • Confirm the action appears in $SYS/Coreflux/Actions or in the HUB LoT Editor Actions list
  • Verify the broker hostname/IP and port are correct
  • Check that port 1883 (or 8883 for TLS) is open
  • Confirm your username and password are correct
  • If using TLS, ensure certificates are properly configured
  • Verify you’re subscribed to the exact topic (including case sensitivity)
  • Check if any Rules are blocking access to the topic
  • Use wildcards (+ or #) to debug topic hierarchies

Next Steps

Now that you have a working setup, explore the core LoT components:

Actions

React to events and publish data. Create time-based automations or respond to topic changes.

Introduction to LoT

Understand the core concepts and architecture of the Language of Things.
Last modified on September 4, 2026