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.
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.
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 (Protocolmqtt://, Port1883). 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):
DEFINE ACTION TemperatureSimulatorON EVERY 5 SECONDS DO PUBLISH TOPIC "sensors/zone1/temperature" WITH "{\"temperature\": 72}"
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.
The VS Code extension provides syntax highlighting, auto-completion, and real-time validation for LoT actions. See the LoT Notebooks Setup Guide for full installation and configuration details.
1
Ensure you have the LoT Notebooks extension installed
Open the extension panel, search for ‘LoT Notebooks’, and install.
2
Create a new LoT Notebook file
Click on File > New File…, give it it to a descriptive name (e.g., temperature-monitor).
Creating a new LoT Notebook file in VS Code
3
Connect to Your Broker
Enter your broker credentials (host, port, username, password) and click Connect.
Connecting to your Coreflux broker from VS Code
Default Broker Credentials
If you haven’t changed your broker credentials, use these defaults:
Setting
Value
Host
localhost or your server IP
Port
1883 (unencrypted) / 8883 (TLS)
Username
root
Password
coreflux (change immediately!)
4
Create a New Action
Create a new code block and add your code.
Creating a new LoT code cell in the notebook
5
Paste the Action Code
DEFINE ACTION TemperatureSimulatorON EVERY 5 SECONDS DO PUBLISH TOPIC "sensors/zone1/temperature" WITH "{\"temperature\": 72}"
6
Deploy
Click the Run Button on that specific cell to publish the action to your broker.
Running the LoT action from the notebook cell
If you’re using any external MQTT client, publish to the system command topic:
1
Connect
Connect to your broker with your credentials.
2
Publish the Action
Publish the following to $SYS/Coreflux/Command:
-addAction DEFINE ACTION TemperatureSimulatorON EVERY 5 SECONDS DO PUBLISH TOPIC "sensors/zone1/temperature" WITH "{\"temperature\": 72}"
3
Check the Response
Subscribe to $SYS/Coreflux/Command/Output. A successful deploy looks like:
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 sensors → zone1 → temperature. You should see {"temperature": 72} arriving every 5 seconds in the payload viewer.
Data Viewer showing live temperature messages on sensors/zone1/temperature
The LoT extension automatically shows debug values for MQTT topics, so you can verify in two ways:
1
Check the Actions list
If the action appears in your Actions list under the Coreflux Entities tab, it should be running.
2
Check live values in the extension
After deploying, the extension automatically subscribes to the action’s topics and displays live MQTT messages. You should see temperature readings (e.g. {"temperature": 72}) on sensors/zone1/temperature arriving every 5 seconds.
TemperatureSimulator action listed in the Coreflux Entities panel
Subscribe to sensors/zone1/temperature. You should see temperature readings arriving every 5 seconds:
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:
Trigger — The action fires whenever a message is published to any topic matching sensors/+/temperature (e.g. sensors/zone1/temperature).
Extract — It reads the temperature value (in Fahrenheit) from the incoming JSON payload.
Convert — It transforms Fahrenheit to Celsius using the standard formula: (F − 32) × 5 / 9.
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.
DEFINE ACTION TemperatureAlarmON TOPIC "sensors/+/temperature" DO SET "temp_f" WITH (GET JSON "temperature" IN PAYLOAD AS DOUBLE) SET "temp_c" WITH (({temp_f} - 32) * 5 / 9) IF {temp_c} > 35 THEN PUBLISH TOPIC "alerts/high_temp" WITH ("Alert: " + {temp_c} + "°C exceeds threshold") ELSE PUBLISH TOPIC "sensors/normalized" WITH {temp_c}
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 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.
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.
Role
Topic
Description
Input
sensors/zone1/temperature
Publish test payloads here (must match sensors/+/temperature)
Output (normal)
sensors/normalized
Receives the Celsius value when temperature is at or below 35°C
Output (alert)
alerts/high_temp
Receives the alert message when temperature exceeds 35°C (e.g. 95°F)
Sample payloads (copy-paste):
Below threshold — publish to sensors/zone1/temperature:
{"temperature": 77}
Expect: a message on sensors/normalized with the Celsius value (about 25).
Above threshold — publish to sensors/zone1/temperature:
{"temperature": 95}
Expect: a message on alerts/high_temp with text like “Alert: 35°C exceeds threshold”.
Coreflux HUB
VS Code Extension
MQTT Client
1
Deploy the Temperature Alarm action
In LoT → LoT Editor → Actions, 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 MQTT → Data 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).
1
Deploy the Temperature Alarm action
Paste the action code in a LoT cell and run it. Confirm success in the Actions list.
2
Observe output topics
After deploying, the extension automatically subscribes to the action’s output topics and displays their values. Look for messages on sensors/normalized and alerts/high_temp once test data is published.
3
Send test data
Use the HUB Data Viewer, the VS Code extension publish tools, or any MQTT client to publish one of the sample JSON payloads above to sensors/zone1/temperature. If the Temperature Simulator from the previous section is still running, it already publishes every 5 seconds and you will see results on sensors/normalized (72°F is below 35°C). Check the topic tree displayed below the code cell to see incoming values update in real time.
4
Confirm output
Check that the corresponding output topic received the expected message (normalized value or alert).
1
Deploy the Temperature Alarm action
Publish the action to $SYS/Coreflux/Command with the -addAction prefix. On $SYS/Coreflux/Command/Output, confirm "success": true and that message reports Action TemperatureAlarm added.
2
Subscribe to output topics
Subscribe to sensors/normalized and alerts/high_temp so you can see responses.
3
Publish a test payload
Publish to topic sensors/zone1/temperature with payload {"temperature": 77} or {"temperature": 95} (use one of the sample payloads above).
4
Confirm output
You should see a message on sensors/normalized (for 77°F) or on alerts/high_temp (for 95°F).
This confirms your broker transforms data and applies conditional logic in real time.
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.
On the Coreflux Entities tab, right-click the desired action in your Actions list and select “Remove”.
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
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Coreflux Documentation","colors":{"primary":"#eb470b","light":"#fc833b","dark":"#c3330b"},"logo":{"light":"https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/logo/logo_light_docs_glyph.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=56a469c914780a6d8c40a4329c0b0879","dark":"https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/logo/logo_dark_docs_glyph.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=b14cc68d9c3e2e98017af536fefc8670"},"favicon":"https://mintcdn.com/coreflux/A0D_IE52Pl2ItO0u/images/favicon.ico?fit=max\u0026auto=format\u0026n=A0D_IE52Pl2ItO0u\u0026q=85\u0026s=e8416ed10b42351291ab50f0dcdb31a8","appearance":{"default":"dark"},"background":{"color":{"light":"#FFFFFF","dark":"#010c10"}},"navbar":{"primary":{"type":"button","label":"Start Free","href":"https://portal.coreflux.org/"}},"footer":{"socials":{"github":"https://github.com/CorefluxCommunity","discord":"https://discord.com/invite/A3pPrptNMm","linkedin":"https://www.linkedin.com/company/coreflux","youtube":"https://www.youtube.com/@Coreflux","website":"https://www.coreflux.org/"}},"fonts":{"family":"Plus Jakarta Sans"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"css-variables","dark":"css-variables"},"languages":{"custom":["/languages/lot.json"]}},"latex":true},"integrations":{"ga4":{"measurementId":"G-1WXMSGSFY6"}},"contextual":{"options":["chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"coreflux","hasAudioNarration":false,"actualSubdomain":"coreflux","customDomains":["docs.coreflux.org"],"gitSource":{"type":"github","owner":"corefluxcommunity","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9ead522dab27fc6c08e73","collectionId":"39f75df1-2165-4dbf-a8f1-1f58a210f369","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9ead522dab27fc6c08e73"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9ead522dab27fc6c08e73","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"LoT Language","count":608},{"language":"default","tag":"LoT CONNECTOR","count":307},{"language":"default","tag":"REST API apps","count":268},{"language":"default","tag":"LoT ROUTE","count":146},{"language":"default","tag":"Coreflux MQTT Broker","count":82},{"language":"default","tag":"Developing and Managing Coreflux","count":72},{"language":"default","tag":"Coreflux HUB","count":71},{"language":"default","tag":"Best Practices and Usage Patterns","count":54},{"language":"default","tag":"Industrial Routes","count":52},{"language":"default","tag":"Quick Start","count":50}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"joao.leiriao@coreflux.org","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"695521f38da86e410a42ce70","deploymentId":"69317161c82f64ea7c1871b0","questionText":"What is LoT and how does it work?","status":"active","generatedBy":"manual","createdAt":"2025-12-31T13:15:31.284Z","updatedAt":"2025-12-31T13:15:31.284Z","__v":0},{"_id":"695521ec8da86e410a42ce3c","deploymentId":"69317161c82f64ea7c1871b0","questionText":"How do I install Coreflux locally?","status":"active","generatedBy":"manual","createdAt":"2025-12-31T13:15:24.487Z","updatedAt":"2025-12-31T13:15:24.487Z","__v":0},{"_id":"695521e68da86e410a42ce23","deploymentId":"69317161c82f64ea7c1871b0","questionText":"How do I create my first action?","status":"active","generatedBy":"manual","createdAt":"2025-12-31T13:15:18.088Z","updatedAt":"2025-12-31T13:15:18.088Z","__v":0}],"googleFontsInlined":true},"customCss":[{"filePath":"global.css","href":"/_mintlify/custom/coreflux/f4aab090f5b55e96/global.css"}],"page":{"pagePath":"latest/quick-start/getting-started","slug":"/latest/quick-start/getting-started","pageMetadata":{"title":"Getting Started","description":"Go from zero to your first working LoT Action in under 15 minutes.","keywords":["getting started","quickstart","first action","tutorial","15 minutes","LoT action","temperature","MQTT Explorer","VS Code","deploy","verify","getting","started"],"icon":"rocket","href":"/latest/quick-start/getting-started"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Go from zero to your first working LoT Action in under 15 minutes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,em:`em`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Info,Note,OptimizedImage,Step,Steps,Tab,Table,Tabs,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Frame,{caption:`Coreflux HUB overview — start here`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=bab525c05994ccb1c98530f1b50f40e1`,alt:`Coreflux HUB overview screen with a 'Start here' arrow pointing to the first navigation icon in the bottom toolbar`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`639`,height:`639`,\"data-path\":`images/overview/hub-overview-start.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=280\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=56223b1235f1f1aec504d51dc3032288 280w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=560\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=dac02d805fa9d65394a9fdc1ba81ce2e 560w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=840\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=d92e88313ab0ebcdc5f8444ebe6c5fff 840w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=2223d90f2d101c1ad24751db4572e69a 1100w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=51a04ccbd494f717d1db03f09206a6e5 1650w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/overview/hub-overview-start.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=3e0b9111cb2299a651a28acaa67cf85e 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`why-this-guide`,children:`Why This Guide?`}),`\n`,_jsxs(_components.p,{children:[`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 `,_jsx(_components.a,{href:`/latest/index`,children:`Overview`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`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.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Before you begin, ensure you have:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A running Coreflux Broker`}),` — See the `,_jsx(_components.a,{href:`/latest/quick-start/installation`,children:`Installation Guide`}),` if you haven’t set one up yet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`VS Code`}),` with the LoT Notebooks extension `,_jsx(_components.em,{children:`or`}),` access to the `,_jsx(_components.a,{href:`/hub/overview`,children:`Coreflux HUB`}),` in your browser — see the `,_jsx(_components.a,{href:`/latest/quick-start/vscode`,children:`VS Code Setup Guide`}),` for the extension`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Basic MQTT knowledge`}),` — Understanding of topics, publish/subscribe patterns`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(_components.p,{children:`Ready? Here’s what you’ll build and deploy.`}),`\n`,_jsx(Heading,{level:`2`,id:`your-first-lot-action-in-15-minutes`,children:`Your First LoT Action in 15 Minutes`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Concept Refresher`}),`: You are about to write an action that lives and runs `,_jsx(_components.strong,{children:`inside`}),` the broker, not on your laptop.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Let’s create a `,_jsx(_components.strong,{children:`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.`]}),`\n`,_jsx(Heading,{level:`3`,id:`understanding-the-action`,children:`Understanding the Action`}),`\n`,_jsx(_components.p,{children:`LoT Actions have three parts:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Definition`}),` — `,_jsx(_components.code,{children:`DEFINE ACTION \u003cname>`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Trigger`}),` — When to run (`,_jsx(_components.code,{children:`ON EVERY \u003ctime>`}),`, `,_jsx(_components.code,{children:`ON TOPIC \"\u003ctopic>\"`}),`, or `,_jsx(_components.code,{children:`ON CHANGE \"\u003ctopic>\"`}),` for value-change-only)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Logic`}),` — What to do (publish data, conditional logic, etc.)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Here’s what we’re building:`}),`\n`,_jsx(CodeBlock,{filename:`Temperature Simulator`,wrap:`true`,numberOfLines:`3`,language:`lot`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`lot`,children:_jsxs(_components.code,{language:`lot`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DEFINE`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ACTION`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` TemperatureSimulator`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`ON`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` EVERY`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 5`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` SECONDS `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DO`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/zone1/temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"{\\\\\"temperature\\\\\": 72}\"`})]}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Line`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEFINE ACTION TemperatureSimulator`})}),_jsx(_components.td,{children:`Creates an action named “TemperatureSimulator”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ON EVERY 5 SECONDS DO`})}),_jsx(_components.td,{children:`Sets a time-based trigger (runs every 5 seconds)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PUBLISH TOPIC ... WITH \"{\\\\\"temperature\\\\\": 72}\"`})}),_jsx(_components.td,{children:`Publishes a JSON payload with temperature in Fahrenheit (72°F)`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Quotes inside strings must be escaped with backslashes (e.g. `,_jsx(_components.code,{children:`\"{\\\\\"temperature\\\\\": 72}\"`}),`).`]})}),`\n`,_jsxs(_components.p,{children:[`For a complete reference on triggers, operations, and advanced patterns, see the `,_jsx(_components.a,{href:`/latest/lot-language/actions/overview`,children:`Actions documentation`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`deploy-the-action`,children:`Deploy the Action`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Coreflux HUB`,icon:`globe`,id:`coreflux-hub`,children:[_jsxs(_components.p,{children:[`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 `,_jsx(_components.a,{href:`/latest/quick-start/installation`,children:`Installation`}),` and the `,_jsx(_components.a,{href:`/hub/overview`,children:`Coreflux HUB Overview`}),`.`]}),_jsxs(Steps,{children:[_jsx(Step,{title:`Open the HUB`,children:_jsxs(_components.p,{children:[`In your browser, open `,_jsx(_components.code,{children:`http://localhost:3000`}),` for Docker Compose. Click `,_jsx(_components.strong,{children:`New Connection`}),` and set `,_jsx(_components.strong,{children:`Host`}),` to `,_jsx(_components.code,{children:`broker`}),` (`,_jsx(_components.strong,{children:`Protocol`}),` `,_jsx(_components.code,{children:`mqtt://`}),`, `,_jsx(_components.strong,{children:`Port`}),` `,_jsx(_components.code,{children:`1883`}),`). For the standalone desktop app, run the executable and create a connection to your broker.`]})}),_jsx(Step,{title:`Go to LoT Editor`,children:_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`LoT Editor`}),` in the HUB dock. In the `,_jsx(_components.strong,{children:`WORKSPACE`}),` section of the sidebar, click `,_jsx(_components.strong,{children:`+ New`}),` to create a project, then add a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`+ Code`})}),` cell to its notebook. See `,_jsx(_components.a,{href:`/hub/lot-editor`,children:`LoT Editor`}),` for the full editor reference.`]})}),_jsxs(Step,{title:`Paste the Action Code`,children:[_jsxs(_components.p,{children:[`Paste the following code into the cell (no `,_jsx(_components.code,{children:`-addAction`}),` prefix needed—the HUB handles registration):`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`3`,language:`lot`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`lot`,children:_jsxs(_components.code,{language:`lot`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DEFINE`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ACTION`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` TemperatureSimulator`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`ON`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` EVERY`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 5`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` SECONDS `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DO`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/zone1/temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"{\\\\\"temperature\\\\\": 72}\"`})]}),`\n`]})})})]}),_jsx(Step,{title:`Run the cell`,children:_jsxs(_components.p,{children:[`Click the cell’s `,_jsx(_components.strong,{children:`run`}),` button (or press `,_jsx(_components.code,{children:`Shift`}),`+`,_jsx(_components.code,{children:`Enter`}),`) to deploy it. The cell’s badge changes to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`SYNCED`})}),` and the Action appears under `,_jsx(_components.strong,{children:`Broker → Entities → Actions`}),` — it is now running on the broker.`]})})]})]}),_jsxs(Tab,{title:`VS Code Extension`,icon:`code`,id:`vs-code-extension`,children:[_jsx(Tip,{children:_jsxs(_components.p,{children:[`The VS Code extension provides syntax highlighting, auto-completion, and real-time validation for LoT actions. See the `,_jsx(_components.a,{href:`/latest/quick-start/vscode`,children:`LoT Notebooks Setup Guide`}),` for full installation and configuration details.`]})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Ensure you have the LoT Notebooks extension installed`,children:_jsx(_components.p,{children:`Open the extension panel, search for ‘LoT Notebooks’, and install.`})}),_jsxs(Step,{title:`Create a new LoT Notebook file`,children:[_jsx(_components.p,{children:`Click on File > New File…, give it it to a descriptive name (e.g., temperature-monitor).`}),_jsx(Frame,{caption:`Creating a new LoT Notebook file in VS Code`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/XSOUAWqOWS4Y2_FQ/images/extension/extension-lotnb-create-new.gif?s=6f76d28d7999e12459a044e460d414bc`,alt:`Animated walkthrough of creating a new .lotnb file in VS Code`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`1032`,height:`1032`,\"data-path\":`images/extension/extension-lotnb-create-new.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]}),_jsxs(Step,{title:`Connect to Your Broker`,children:[_jsx(_components.p,{children:`Enter your broker credentials (host, port, username, password) and click Connect.`}),_jsx(Frame,{caption:`Connecting to your Coreflux broker from VS Code`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/XSOUAWqOWS4Y2_FQ/images/extension/extension-broker-connect.gif?s=faf63084741fb786ec1807145f691a89`,alt:`Animated walkthrough of entering broker credentials and connecting in VS Code`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`688`,height:`688`,\"data-path\":`images/extension/extension-broker-connect.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),_jsxs(Accordion,{title:`Default Broker Credentials`,id:`default-broker-credentials`,children:[_jsx(_components.p,{children:`If you haven’t changed your broker credentials, use these defaults:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Host`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`localhost`}),` or your server IP`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Port`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`1883`}),` (unencrypted) / `,_jsx(_components.code,{children:`8883`}),` (TLS)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Username`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`root`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Password`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`coreflux`}),` (change immediately!)`]})]})]})]})]})]}),_jsxs(Step,{title:`Create a New Action`,children:[_jsx(_components.p,{children:`Create a new code block and add your code.`}),_jsx(Frame,{caption:`Creating a new LoT code cell in the notebook`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/XSOUAWqOWS4Y2_FQ/images/extension/extension-create-basic-action.gif?s=f0a99e24fb50a62f34539d706812f912`,alt:`Animated walkthrough of creating a new code block`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`1032`,height:`1032`,\"data-path\":`images/extension/extension-create-basic-action.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]}),_jsx(Step,{title:`Paste the Action Code`,children:_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`3`,language:`lot`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`lot`,children:_jsxs(_components.code,{language:`lot`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DEFINE`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ACTION`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` TemperatureSimulator`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`ON`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` EVERY`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 5`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` SECONDS `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DO`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/zone1/temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"{\\\\\"temperature\\\\\": 72}\"`})]}),`\n`]})})})}),_jsxs(Step,{title:`Deploy`,children:[_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`Run Button`}),` on that specific cell to publish the action to your broker.`]}),_jsx(Frame,{caption:`Running the LoT action from the notebook cell`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/XSOUAWqOWS4Y2_FQ/images/extension/extension-deploy-basic-action.gif?s=d7edcd18dc774cad66ff4969543e29ae`,alt:`Animated walkthrough of clicking the Run button to deploy the action to the broker`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`1032`,height:`1032`,\"data-path\":`images/extension/extension-deploy-basic-action.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]})]})]}),_jsxs(Tab,{title:`MQTT Client`,icon:`terminal`,id:`mqtt-client`,children:[_jsx(_components.p,{children:`If you’re using any external MQTT client, publish to the system command topic:`}),_jsxs(Steps,{children:[_jsx(Step,{title:`Connect`,children:_jsx(_components.p,{children:`Connect to your broker with your credentials.`})}),_jsxs(Step,{title:`Publish the Action`,children:[_jsxs(_components.p,{children:[`Publish the following to `,_jsx(_components.code,{children:`$SYS/Coreflux/Command`}),`:`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`3`,language:`lot`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`lot`,children:_jsxs(_components.code,{language:`lot`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`-`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`addAction `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DEFINE`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ACTION`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` TemperatureSimulator`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`ON`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` EVERY`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 5`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` SECONDS `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DO`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/zone1/temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"{\\\\\"temperature\\\\\": 72}\"`})]}),`\n`]})})})]}),_jsxs(Step,{title:`Check the Response`,children:[_jsxs(_components.p,{children:[`Subscribe to `,_jsx(_components.code,{children:`$SYS/Coreflux/Command/Output`}),`. A successful deploy looks like:`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` true`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"command\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"AddAction\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"Action 'TemperatureSimulator' added successfully.\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"entityType\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"Action\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"entityName\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"TemperatureSimulator\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` {}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`}`})}),`\n`]})})})]})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Note the `,_jsx(_components.code,{children:`-addAction`}),` prefix — this tells Coreflux to register the action definition that follows.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`verify-it’s-running`,children:`Verify It’s Running`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Coreflux HUB`,icon:`globe`,id:`coreflux-hub-2`,children:[_jsxs(_components.p,{children:[`If you deployed via the HUB, verify using the built-in Data Viewer. In the top navigation, select `,_jsx(_components.strong,{children:`MQTT`}),`, then `,_jsx(_components.strong,{children:`Data Viewer`}),`. In the Topic Tree, navigate to `,_jsx(_components.strong,{children:`sensors`}),` → `,_jsx(_components.strong,{children:`zone1`}),` → `,_jsx(_components.strong,{children:`temperature`}),`. You should see `,_jsx(_components.code,{children:`{\"temperature\": 72}`}),` arriving every 5 seconds in the payload viewer.`]}),_jsx(Frame,{caption:`Data Viewer showing live temperature messages on sensors/zone1/temperature`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=25ff42296df2fa4236ffe15b6cbdeaed`,alt:`Coreflux HUB Data Viewer with the topic tree and live payload for a sensor temperature topic`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`1199`,height:`1199`,\"data-path\":`images/mqtt/data-viewer/mqtt-explorer-topic.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=280\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=b1e98586f780500db2209c52673394bb 280w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=560\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=a18a8054208dd738a8d14b3e4ee6f9ad 560w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=840\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=5cc2078b5cee6fc06ddf7c79d3e355bb 840w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=b582c9bb622379e7d781f5f14aeeb452 1100w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=9c90d3ae9accc65fb4079595e36ee184 1650w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-topic.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=6845386f49ba3072188bbe74b2f3cf71 2500w`})})]}),_jsxs(Tab,{title:`VS Code Extension`,icon:`code`,id:`vs-code-extension-2`,children:[_jsx(_components.p,{children:`The LoT extension automatically shows debug values for MQTT topics, so you can verify in two ways:`}),_jsxs(Steps,{children:[_jsx(Step,{title:`Check the Actions list`,children:_jsx(_components.p,{children:`If the action appears in your Actions list under the Coreflux Entities tab, it should be running.`})}),_jsx(Step,{title:`Check live values in the extension`,children:_jsxs(_components.p,{children:[`After deploying, the extension automatically subscribes to the action’s topics and displays live MQTT messages. You should see temperature readings (e.g. `,_jsx(_components.code,{children:`{\"temperature\": 72}`}),`) on `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),` arriving every 5 seconds.`]})})]}),_jsx(Frame,{caption:`TemperatureSimulator action listed in the Coreflux Entities panel`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/XSOUAWqOWS4Y2_FQ/images/extension/extension-verify-basic-action.gif?s=39e19beef3d939f9f6c9a2d5ceeb7d7b`,alt:`Coreflux Entities panel in VS Code showing TemperatureSimulator under the Actions list`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`1032`,height:`1032`,\"data-path\":`images/extension/extension-verify-basic-action.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]}),_jsxs(Tab,{title:`MQTT Client`,icon:`terminal`,id:`mqtt-client-2`,children:[_jsxs(_components.p,{children:[`Subscribe to `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`. You should see temperature readings arriving every 5 seconds:`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`\"temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 72`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`}`})]}),`\n`]})})})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Congratulations!`}),` Your first LoT Action is live.`]}),`\n`,_jsx(Heading,{level:`2`,id:`example-real-scenario-temperature-alarm`,children:`Example Real Scenario: Temperature Alarm`}),`\n`,_jsxs(_components.p,{children:[`Now let’s create a `,_jsx(_components.strong,{children:`reactive action`}),` that transforms sensor data and checks thresholds. This demonstrates data transformation and conditional logic—common patterns in industrial monitoring.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`This action runs `,_jsx(_components.strong,{children:`only when a message arrives`}),` on `,_jsx(_components.code,{children:`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.`]})}),`\n`,_jsx(_components.p,{children:`Here’s what the action does each time a new temperature reading arrives:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Trigger`}),` — The action fires whenever a message is published to any topic matching `,_jsx(_components.code,{children:`sensors/+/temperature`}),` (e.g. `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Extract`}),` — It reads the `,_jsx(_components.code,{children:`temperature`}),` value (in Fahrenheit) from the incoming JSON payload.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Convert`}),` — It transforms Fahrenheit to Celsius using the standard formula: `,_jsx(_components.code,{children:`(F − 32) × 5 / 9`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Decide`}),` — If the Celsius value exceeds 35 °C, it publishes an alert to `,_jsx(_components.code,{children:`alerts/high_temp`}),`. Otherwise, it publishes the normalized Celsius reading to `,_jsx(_components.code,{children:`sensors/normalized`}),`.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`8`,language:`lot`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`lot`,children:_jsxs(_components.code,{language:`lot`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`DEFINE`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ACTION`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` TemperatureAlarm`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`ON`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/+/temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` DO`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` SET`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"temp_f\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` (`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`GET`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` JSON`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` IN`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` PAYLOAD`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` AS`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` DOUBLE`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` SET`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"temp_c\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` (({temp_f} `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`-`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 32`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`) `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`*`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 5`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` /`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 9`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` IF`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` {temp_c} `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`>`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 35`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` THEN`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"alerts/high_temp\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` (`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"Alert: \"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` +`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` {temp_c} `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`+`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"°C exceeds threshold\"`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` ELSE`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` PUBLISH`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` TOPIC`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"sensors/normalized\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` WITH`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` {temp_c}`})]}),`\n`]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`{}`}),` denotes variable substitution, and expressions must be wrapped in parentheses. The `,_jsx(_components.code,{children:`+`}),` in the topic pattern is a single-level MQTT wildcard — it matches any value in that position (e.g. `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`, `,_jsx(_components.code,{children:`sensors/zone2/temperature`}),`).`]})}),`\n`,_jsx(Heading,{level:`3`,id:`deploy-and-test`,children:`Deploy and Test`}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`3`,id:`how-to-test-the-logic`,children:`How to Test the Logic`}),`\n`,_jsxs(_components.p,{children:[`The action subscribes to any topic matching `,_jsx(_components.code,{children:`sensors/+/temperature`}),` (e.g. `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`). It expects a JSON payload with a `,_jsx(_components.code,{children:`temperature`}),` key (Fahrenheit). It then converts to Celsius and either publishes an alert (if > 35°C) or the normalized value.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Role`}),_jsx(_components.th,{children:`Topic`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Input`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sensors/zone1/temperature`})}),_jsxs(_components.td,{children:[`Publish test payloads here (must match `,_jsx(_components.code,{children:`sensors/+/temperature`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Output (normal)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sensors/normalized`})}),_jsx(_components.td,{children:`Receives the Celsius value when temperature is at or below 35°C`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Output (alert)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`alerts/high_temp`})}),_jsx(_components.td,{children:`Receives the alert message when temperature exceeds 35°C (e.g. 95°F)`})]})]})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Sample payloads (copy-paste):`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Below threshold`}),` — publish to `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`:`,`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`\"temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 77`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`}`})]}),`\n`]})})}),`\n`,`Expect: a message on `,_jsx(_components.code,{children:`sensors/normalized`}),` with the Celsius value (about 25).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Above threshold`}),` — publish to `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`:`,`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`\"temperature\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` 95`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`}`})]}),`\n`]})})}),`\n`,`Expect: a message on `,_jsx(_components.code,{children:`alerts/high_temp`}),` with text like “Alert: 35°C exceeds threshold”.`]}),`\n`]}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Coreflux HUB`,icon:`globe`,id:`coreflux-hub-3`,children:_jsxs(Steps,{children:[_jsx(Step,{title:`Deploy the Temperature Alarm action`,children:_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`LoT`}),` → `,_jsx(_components.strong,{children:`LoT Editor`}),` → `,_jsx(_components.strong,{children:`Actions`}),`, create a new action or open an existing one, paste the Temperature Alarm code, and save. Confirm it appears in the Actions list.`]})}),_jsxs(Step,{title:`Open the Data Viewer`,children:[_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`MQTT`}),` → `,_jsx(_components.strong,{children:`Data Viewer`}),`. In the Topic Tree, watch `,_jsx(_components.code,{children:`sensors/normalized`}),` and `,_jsx(_components.code,{children:`alerts/high_temp`}),` (add them to your tracked view if needed).`]}),_jsx(Frame,{caption:`Coreflux HUB Data Viewer — Publish panel, Topic Tree, and live topic details`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=e9fdfa778a5c182a4c8a3404a3707f30`,alt:`Coreflux HUB Data Viewer with the Publish panel on the left, Topic Tree in the center, and a tracked topic with live values on the right`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`639`,height:`639`,\"data-path\":`images/mqtt/data-viewer/mqtt-explorer-overview.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=280\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=7d31caf79033256b723489994af01a26 280w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=560\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=4af3d5dee350c67edde2f59ec4c0fa3f 560w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=840\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=e944f760157d0131bdbfe3451ac8d897 840w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=9d70020c2593e7a7fe4ab8470f42f758 1100w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=05dd4f6c66daa109a33c03cbd76fbd1a 1650w, https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/mqtt/data-viewer/mqtt-explorer-overview.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=b56baad7954c8c996c3525706d047baf 2500w`})})]}),_jsx(Step,{title:`Send test data`,children:_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`Publish`}),` panel, set the topic to `,_jsx(_components.code,{children:`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 `,_jsx(_components.code,{children:`sensors/normalized`}),` (72°F is below 35°C).`]})}),_jsx(Step,{title:`Confirm output`,children:_jsx(_components.p,{children:`Select the output topic in the tree and verify the payload in the viewer (normalized value or alert text).`})})]})}),_jsx(Tab,{title:`VS Code Extension`,icon:`code`,id:`vs-code-extension-3`,children:_jsxs(Steps,{children:[_jsx(Step,{title:`Deploy the Temperature Alarm action`,children:_jsx(_components.p,{children:`Paste the action code in a LoT cell and run it. Confirm success in the Actions list.`})}),_jsx(Step,{title:`Observe output topics`,children:_jsxs(_components.p,{children:[`After deploying, the extension automatically subscribes to the action’s output topics and displays their values. Look for messages on `,_jsx(_components.code,{children:`sensors/normalized`}),` and `,_jsx(_components.code,{children:`alerts/high_temp`}),` once test data is published.`]})}),_jsx(Step,{title:`Send test data`,children:_jsxs(_components.p,{children:[`Use the HUB Data Viewer, the VS Code extension publish tools, or any MQTT client to publish one of the sample JSON payloads above to `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),`. If the Temperature Simulator from the previous section is still running, it already publishes every 5 seconds and you will see results on `,_jsx(_components.code,{children:`sensors/normalized`}),` (72°F is below 35°C). Check the topic tree displayed below the code cell to see incoming values update in real time.`]})}),_jsx(Step,{title:`Confirm output`,children:_jsx(_components.p,{children:`Check that the corresponding output topic received the expected message (normalized value or alert).`})})]})}),_jsx(Tab,{title:`MQTT Client`,icon:`terminal`,id:`mqtt-client-3`,children:_jsxs(Steps,{children:[_jsx(Step,{title:`Deploy the Temperature Alarm action`,children:_jsxs(_components.p,{children:[`Publish the action to `,_jsx(_components.code,{children:`$SYS/Coreflux/Command`}),` with the `,_jsx(_components.code,{children:`-addAction`}),` prefix. On `,_jsx(_components.code,{children:`$SYS/Coreflux/Command/Output`}),`, confirm `,_jsx(_components.code,{children:`\"success\": true`}),` and that `,_jsx(_components.code,{children:`message`}),` reports Action `,_jsx(_components.code,{children:`TemperatureAlarm`}),` added.`]})}),_jsx(Step,{title:`Subscribe to output topics`,children:_jsxs(_components.p,{children:[`Subscribe to `,_jsx(_components.code,{children:`sensors/normalized`}),` and `,_jsx(_components.code,{children:`alerts/high_temp`}),` so you can see responses.`]})}),_jsx(Step,{title:`Publish a test payload`,children:_jsxs(_components.p,{children:[`Publish to topic `,_jsx(_components.code,{children:`sensors/zone1/temperature`}),` with payload `,_jsx(_components.code,{children:`{\"temperature\": 77}`}),` or `,_jsx(_components.code,{children:`{\"temperature\": 95}`}),` (use one of the sample payloads above).`]})}),_jsx(Step,{title:`Confirm output`,children:_jsxs(_components.p,{children:[`You should see a message on `,_jsx(_components.code,{children:`sensors/normalized`}),` (for 77°F) or on `,_jsx(_components.code,{children:`alerts/high_temp`}),` (for 95°F).`]})})]})})]}),`\n`,_jsx(_components.p,{children:`This confirms your broker transforms data and applies conditional logic in real time.`}),`\n`,_jsx(Heading,{level:`3`,id:`clean-up-optional`,children:`Clean Up (Optional)`}),`\n`,_jsx(_components.p,{children:`To remove the test action:`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Coreflux HUB`,icon:`globe`,id:`coreflux-hub-4`,children:_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`LoT Editor`}),`, expand `,_jsx(_components.strong,{children:`Broker → Entities → Actions`}),` in the sidebar, right-click the action, and choose `,_jsx(_components.strong,{children:`Remove from broker…`}),`. Confirm—the action is removed from the broker immediately. See `,_jsx(_components.a,{href:`/hub/lot-editor#removal-four-different-operations`,children:`Removal`}),` for the other flows.`]})}),_jsx(Tab,{title:`VS Code Extension`,icon:`code`,id:`vs-code-extension-4`,children:_jsxs(_components.p,{children:[`On the Coreflux Entities tab, right-click the desired action in your Actions list and select `,_jsx(_components.strong,{children:`“Remove”`}),`.`]})}),_jsxs(Tab,{title:`MQTT Client`,icon:`terminal`,id:`mqtt-client-4`,children:[_jsxs(_components.p,{children:[`Publish to `,_jsx(_components.code,{children:`$SYS/Coreflux/Command`}),`:`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`-removeAction TemperatureAlarm`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`quick-examples`,children:`Quick Examples`}),`\n`,_jsxs(_components.p,{children:[`Looking for inspiration? Check out the `,_jsx(_components.a,{href:`https://github.com/CorefluxCommunity/Language-Of-Things-Training`,children:_jsx(_components.strong,{children:`Language of Things Training Repository`})}),` for common patterns like:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Topic-Based Triggers`}),`: Echo messages between topics`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`State Machines`}),`: Toggle switches and conditional logic`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Event Counters`}),`: Track and aggregate system events`]}),`\n`]}),`\n`,_jsx(Card,{title:`Language of Things Training`,icon:`github`,href:`https://github.com/CorefluxCommunity/Language-Of-Things-Training`,children:_jsx(_components.p,{children:`Explore a collection of ready-to-use LoT Action examples and templates.`})}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Action not executing?`,id:`action-not-executing`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify the broker is running and you’re connected`}),`\n`,_jsxs(_components.li,{children:[`Check `,_jsx(_components.code,{children:`$SYS/Coreflux/Command/Output`}),` for error messages`]}),`\n`,_jsx(_components.li,{children:`Ensure proper indentation in your LoT action (use consistent tabs or spaces)`}),`\n`,_jsxs(_components.li,{children:[`Confirm the action appears in `,_jsx(_components.code,{children:`$SYS/Coreflux/Actions`}),` or in the HUB LoT Editor Actions list`]}),`\n`]})}),_jsx(Accordion,{title:`Can't connect to the broker?`,id:`cant-connect-to-the-broker`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify the broker hostname/IP and port are correct`}),`\n`,_jsx(_components.li,{children:`Check that port 1883 (or 8883 for TLS) is open`}),`\n`,_jsx(_components.li,{children:`Confirm your username and password are correct`}),`\n`,_jsx(_components.li,{children:`If using TLS, ensure certificates are properly configured`}),`\n`]})}),_jsx(Accordion,{title:`Messages not appearing on subscribed topics?`,id:`messages-not-appearing-on-subscribed-topics`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify you’re subscribed to the exact topic (including case sensitivity)`}),`\n`,_jsx(_components.li,{children:`Check if any Rules are blocking access to the topic`}),`\n`,_jsxs(_components.li,{children:[`Use wildcards (`,_jsx(_components.code,{children:`+`}),` or `,_jsx(_components.code,{children:`#`}),`) to debug topic hierarchies`]}),`\n`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsx(_components.p,{children:`Now that you have a working setup, explore the core LoT components:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Actions`,icon:`bolt`,href:`/latest/lot-language/actions/syntax`,children:_jsx(_components.p,{children:`React to events and publish data. Create time-based automations or respond to topic changes.`})}),_jsx(Card,{title:`Introduction to LoT`,icon:`book`,href:`/latest/lot-language/introduction`,children:_jsx(_components.p,{children:`Understand the core concepts and architecture of the Language of Things.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"css-variables","dark":"css-variables"},"languages":{"custom":["/languages/lot.json"]}},"config":{},"pageMetadata":{"title":"Getting Started","description":"Go from zero to your first working LoT Action in under 15 minutes.","keywords":["getting started","quickstart","first action","tutorial","15 minutes","LoT action","temperature","MQTT Explorer","VS Code","deploy","verify","getting","started"],"icon":"rocket","href":"/latest/quick-start/getting-started"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Why This Guide?","slug":"why-this-guide","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Your First LoT Action in 15 Minutes","slug":"your-first-lot-action-in-15-minutes","depth":2,"children":[{"title":"Understanding the Action","slug":"understanding-the-action","depth":3,"children":[]},{"title":"Deploy the Action","slug":"deploy-the-action","depth":3,"children":[]},{"title":"Verify It’s Running","slug":"verify-it’s-running","depth":3,"children":[]}]},{"title":"Example Real Scenario: Temperature Alarm","slug":"example-real-scenario-temperature-alarm","depth":2,"children":[{"title":"Deploy and Test","slug":"deploy-and-test","depth":3,"children":[]},{"title":"How to Test the Logic","slug":"how-to-test-the-logic","depth":3,"children":[]},{"title":"Clean Up (Optional)","slug":"clean-up-optional","depth":3,"children":[]}]},{"title":"Quick Examples","slug":"quick-examples","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/coreflux/a521143ded12b642/scripts/mermaid-flow.js"],"subdomain":"coreflux","siteName":"Coreflux Documentation","title":"Getting Started - Coreflux Documentation","contextualStarterQuestions":[{"_id":"6ada2e5d918154a2cbd6342f","deploymentId":"69317161c82f64ea7c1871b0","questionText":"What is a LoT Action exactly?","status":"active","generatedBy":"contextual","path":"latest/quick-start/getting-started","createdAt":"2026-10-22T15:40:13.685Z","updatedAt":"2026-10-22T15:40:13.685Z","__v":0},{"_id":"6ada2e5d918154a2cbd63430","deploymentId":"69317161c82f64ea7c1871b0","questionText":"How long does setup take?","status":"active","generatedBy":"contextual","path":"latest/quick-start/getting-started","createdAt":"2026-10-22T15:40:13.685Z","updatedAt":"2026-10-22T15:40:13.685Z","__v":0},{"_id":"6ada2e5d918154a2cbd6342e","deploymentId":"69317161c82f64ea7c1871b0","questionText":"How do I create my first LoT Action?","status":"active","generatedBy":"contextual","path":"latest/quick-start/getting-started","createdAt":"2026-10-22T15:40:13.685Z","updatedAt":"2026-10-22T15:40:13.685Z","__v":0}],"navMaps":{"firstHrefInVersion":{"v2.22":{"href":"/latest/quick-start/getting-started","matchLevel":0},"v2.14":{"href":"/v2.14/quick-start/getting-started","matchLevel":1},"v2.2":{"href":"/v2.2/quick-start/getting-started","matchLevel":1},"v2.1":{"href":"/v2.1/quick-start/getting-started","matchLevel":1},"v2.0":{"href":"/v2.0/quick-start/getting-started","matchLevel":1},"v1.10":{"href":"/v1.10/quick-start/getting-started","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T15:38:59.618Z","gitLastModified":"2026-09-04T10:27:25.000Z","originalFileLocation":"latest/quick-start/getting-started.md"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Go from zero to your first working LoT Action in under 15 minutes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Coreflux Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Getting Started - Coreflux Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Go from zero to your first working LoT Action in under 15 minutes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Coreflux Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.coreflux.org/latest/quick-start/getting-started\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://coreflux.mintlify.app/_mintlify/api/og/v2?division=Quick+Start\u0026amp;title=Getting+Started\u0026amp;description=Go+from+zero+to+your+first+working+LoT+Action+in+under+15+minutes.\u0026amp;theme=b63f1147494e66c8a7509625\u0026amp;signature=117a85974425db187774b51def124576c1f8e105604967c3194533fd7417596e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Getting Started - Coreflux Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Go from zero to your first working LoT Action in under 15 minutes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://coreflux.mintlify.app/_mintlify/api/og/v2?division=Quick+Start\u0026amp;title=Getting+Started\u0026amp;description=Go+from+zero+to+your+first+working+LoT+Action+in+under+15+minutes.\u0026amp;theme=b63f1147494e66c8a7509625\u0026amp;signature=117a85974425db187774b51def124576c1f8e105604967c3194533fd7417596e\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/coreflux/ZsajMlQvPJiYnJ5s/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Coreflux Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#eb470b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.coreflux.org/latest/quick-start/getting-started\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/latest/quick-start/getting-started.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.coreflux.org/#organization\",\"name\":\"Coreflux Documentation\",\"url\":\"https://docs.coreflux.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/coreflux/7tBTxEEkDVX4IRGH/images/logo/logo_light_docs_glyph.png?fit=max\u0026auto=format\u0026n=7tBTxEEkDVX4IRGH\u0026q=85\u0026s=56a469c914780a6d8c40a4329c0b0879\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.coreflux.org#website\",\"name\":\"Coreflux Documentation\",\"url\":\"https://docs.coreflux.org\",\"publisher\":{\"@id\":\"https://docs.coreflux.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.coreflux.org/latest/quick-start/getting-started#webpage\",\"url\":\"https://docs.coreflux.org/latest/quick-start/getting-started\",\"name\":\"Getting Started\",\"description\":\"Go from zero to your first working LoT Action in under 15 minutes.\",\"dateModified\":\"2026-09-04T10:27:25.000Z\",\"isPartOf\":{\"@id\":\"https://docs.coreflux.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.coreflux.org/latest/quick-start/getting-started#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.coreflux.org/latest/quick-start/getting-started#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Quick Start\",\"item\":\"https://docs.coreflux.org/latest/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started\",\"item\":\"https://docs.coreflux.org/latest/quick-start/getting-started\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.coreflux.org/latest/quick-start/getting-started#article\",\"headline\":\"Getting Started\",\"name\":\"Getting Started\",\"description\":\"Go from zero to your first working LoT Action in under 15 minutes.\",\"url\":\"https://docs.coreflux.org/latest/quick-start/getting-started\",\"mainEntityOfPage\":{\"@id\":\"https://docs.coreflux.org/latest/quick-start/getting-started#webpage\"},\"dateModified\":\"2026-09-04T10:27:25.000Z\",\"keywords\":\"getting started, quickstart, first action, tutorial, 15 minutes, LoT action, temperature, MQTT Explorer, VS Code, deploy, verify, getting, started\",\"publisher\":{\"@id\":\"https://docs.coreflux.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.coreflux.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Coreflux Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Coreflux Documentation","nav":{"global":null,"versions":[{"version":"v2.22","default":true,"tag":"Latest","groups":[{"group":"Quick Start","pages":[{"title":"Welcome to Coreflux","sidebarTitle":"Welcome","icon":"house","mode":"frame","href":"/latest"},{"title":"Installation","icon":"download","href":"/latest/quick-start/installation"},{"title":"Updating Your Coreflux","description":"Upgrade the broker on Docker, Windows, or Linux. The Coreflux HUB desktop app updates itself.","icon":"rotate","href":"/latest/updating-coreflux"},{"title":"Getting Started","icon":"rocket","href":"/latest/quick-start/getting-started"},{"title":"Using Coreflux HUB","description":"Access the Coreflux HUB and manage your broker — MQTT topics, LoT code, connectors, and system settings in one place.","icon":"globe","href":"/latest/quick-start/using-hub"},{"title":"Using LoT Notebooks","sidebarTitle":"Using LoT Notebooks","icon":"code","href":"/latest/quick-start/vscode"},{"title":"Using AI with Coreflux","icon":"wand-magic-sparkles","href":"/latest/quick-start/using-ai"},{"title":"Build Your First Dashboard","icon":"rocket","href":"/latest/quick-start/building-dashboards"},{"title":"Creating Agents in Coreflux","icon":"robot","href":"/latest/quick-start/creating-agents"},{"title":"Best Practices \u0026 Patterns","icon":"book-open","href":"/latest/quick-start/best-practices"}]},{"group":"Coreflux MQTT Broker","pages":[{"title":"MQTT Broker","href":"/latest/mqtt-broker/overview"},{"title":"MQTT Protocol","href":"/latest/mqtt-broker/protocol"},{"title":"High-Availability Clustering","href":"/latest/mqtt-broker/clustering"},{"group":"Configuring the Broker","pages":[{"title":"Broker Configuration","href":"/latest/mqtt-broker/configuration"},{"title":"OIDC and Bearer Authentication","href":"/latest/mqtt-broker/oidc-authentication"},{"title":"MCP Server","href":"/latest/mqtt-broker/mcp-server"},{"title":"MQTT State Durability","href":"/latest/mqtt-broker/durability"},{"title":"Environment Variables \u0026 Secrets","href":"/latest/mqtt-broker/secrets-and-env"},{"title":"Startup Options \u0026 Deployment","href":"/latest/mqtt-broker/startup-options"},{"title":"Licensing and Enrollment","href":"/latest/mqtt-broker/licensing"}]},{"group":"Operating the Broker","pages":[{"title":"Operational Endpoints","href":"/latest/mqtt-broker/operational-endpoints"},{"title":"System ($SYS) Topics","href":"/latest/mqtt-broker/sys-topics"},{"title":"Broker Commands","href":"/latest/mqtt-broker/commands"}]}]},{"group":"LoT Language","pages":[{"title":"Introduction to LoT","href":"/latest/lot-language/introduction"},{"group":"LoT ACTION","pages":[{"title":"ACTION Overview","href":"/latest/lot-language/actions/overview"},{"title":"ACTION Syntax Reference","href":"/latest/lot-language/actions/syntax"},{"title":"ACTION Triggers","href":"/latest/lot-language/actions/events"},{"title":"Callable ACTIONs","href":"/latest/lot-language/actions/callable-actions"},{"title":"ACTION Operations Reference","href":"/latest/lot-language/actions/operations"},{"title":"ACTION Python Integration","href":"/latest/lot-language/actions/python-integration"}]},{"group":"LoT MODEL","pages":[{"title":"MODEL Overview","href":"/latest/lot-language/models/overview"},{"title":"MODEL Syntax and Components","href":"/latest/lot-language/models/schema-definition"},{"title":"MODEL Publishing","href":"/latest/lot-language/models/publish-model"},{"title":"MODEL Inheritance","href":"/latest/lot-language/models/model-inheritance"},{"title":"MODEL Protobuf","href":"/latest/lot-language/models/protobuf"},{"title":"MODEL Examples","href":"/latest/lot-language/models/examples"}]},{"group":"LoT CONNECTOR","pages":[{"title":"Connectors Overview","href":"/latest/lot-language/routes/overview"},{"title":"Store and Forward Configuration","href":"/latest/lot-language/routes/store-and-forward"},{"group":"System Connectors","pages":[{"title":"System Connectors","href":"/latest/lot-language/routes/system-routes"},{"title":"MQTT Bridge Connector","href":"/latest/lot-language/routes/system/mqtt-bridge"},{"title":"Sparkplug B Connector","href":"/latest/lot-language/routes/system/sparkplug-b"},{"title":"Sparkplug Host Connector","href":"/latest/lot-language/routes/system/sparkplug-host"}]},{"group":"Industrial Connectors","pages":[{"title":"Industrial Connectors Overview","href":"/latest/lot-language/routes/industrial/overview"},{"title":"Modbus TCP Client Connector","href":"/latest/lot-language/routes/industrial/modbus-tcp-client"},{"title":"Modbus Serial Client Connector","href":"/latest/lot-language/routes/industrial/modbus-serial-client"},{"title":"Modbus TCP Server Connector","href":"/latest/lot-language/routes/industrial/modbus-tcp-server"},{"title":"Siemens S7 Connector","href":"/latest/lot-language/routes/industrial/siemens-s7"},{"title":"OPC UA Client Connector","href":"/latest/lot-language/routes/industrial/opcua-client"},{"title":"OPC UA Server Connector","href":"/latest/lot-language/routes/industrial/opcua-server"},{"title":"ADS Connector (Beckhoff)","href":"/latest/lot-language/routes/industrial/ads"},{"title":"Allen-Bradley Connector","href":"/latest/lot-language/routes/industrial/allen-bradley"},{"title":"EtherNet/IP Connector","href":"/latest/lot-language/routes/industrial/ethernetip"},{"title":"FINS Connector (Omron)","href":"/latest/lot-language/routes/industrial/fins"},{"title":"BACnet/IP Connector","href":"/latest/lot-language/routes/industrial/bacnet"}]},{"group":"Data Storage Connectors","pages":[{"title":"Data Storage Connectors Overview","href":"/latest/lot-language/routes/data-storage/overview"},{"title":"PostgreSQL Connector","href":"/latest/lot-language/routes/data-storage/postgresql"},{"title":"MySQL Connector","href":"/latest/lot-language/routes/data-storage/mysql"},{"title":"MariaDB Connector","href":"/latest/lot-language/routes/data-storage/mariadb"},{"title":"SQL Server Connector","href":"/latest/lot-language/routes/data-storage/sqlserver"},{"title":"MongoDB Connector","href":"/latest/lot-language/routes/data-storage/mongodb"},{"title":"OpenSearch Connector","href":"/latest/lot-language/routes/data-storage/opensearch"},{"title":"CrateDB Connector","href":"/latest/lot-language/routes/data-storage/cratedb"},{"title":"Snowflake Connector","href":"/latest/lot-language/routes/data-storage/snowflake"},{"title":"File Storage Connector","href":"/latest/lot-language/routes/data-storage/file-storage"}]},{"group":"Streaming Connectors","pages":[{"title":"Kafka Connector","href":"/latest/lot-language/routes/streaming/kafka"},{"title":"gRPC Connector","href":"/latest/lot-language/routes/streaming/grpc"}]},{"group":"Notification Connectors","pages":[{"title":"Email Connector","href":"/latest/lot-language/routes/notifications/email"}]},{"title":"REST API Connectors","href":"/latest/lot-language/routes/rest-api-routes"},{"group":"REST API apps","pages":[{"title":"REST API Apps","href":"/latest/lot-language/routes/rest-api-apps/index"},{"title":"Acumatica Cloud ERP REST API","href":"/latest/lot-language/routes/rest-api-apps/acumatica-cloud-erp"},{"title":"Airtable","href":"/latest/lot-language/routes/rest-api-apps/airtable"},{"title":"Amazon Bedrock Control","href":"/latest/lot-language/routes/rest-api-apps/amazon-bedrock-control"},{"title":"Amazon Bedrock Runtime","href":"/latest/lot-language/routes/rest-api-apps/amazon-bedrock-runtime"},{"title":"Amazon CloudWatch","href":"/latest/lot-language/routes/rest-api-apps/amazon-cloudwatch"},{"title":"Amazon DynamoDB","href":"/latest/lot-language/routes/rest-api-apps/amazon-dynamodb"},{"title":"Amazon S3","href":"/latest/lot-language/routes/rest-api-apps/amazon-s3"},{"title":"Amazon SNS","href":"/latest/lot-language/routes/rest-api-apps/amazon-sns"},{"title":"Anaplan","href":"/latest/lot-language/routes/rest-api-apps/anaplan"},{"title":"Anthropic","href":"/latest/lot-language/routes/rest-api-apps/anthropic"},{"title":"Apache Superset","href":"/latest/lot-language/routes/rest-api-apps/apache-superset"},{"title":"Apprise API","href":"/latest/lot-language/routes/rest-api-apps/apprise-api"},{"title":"Aras Innovator Api","href":"/latest/lot-language/routes/rest-api-apps/aras-innovator-api"},{"title":"Asana","href":"/latest/lot-language/routes/rest-api-apps/asana"},{"title":"Auth0","href":"/latest/lot-language/routes/rest-api-apps/auth0"},{"title":"Autodesk Platform Services Api","href":"/latest/lot-language/routes/rest-api-apps/autodesk-platform-services-api"},{"title":"AVEVA CONNECT data services","href":"/latest/lot-language/routes/rest-api-apps/aveva-connect-data-services"},{"title":"Aveva Mes Api","href":"/latest/lot-language/routes/rest-api-apps/aveva-mes-api"},{"title":"AVEVA PI Web API","href":"/latest/lot-language/routes/rest-api-apps/aveva-pi-web-api"},{"title":"AWS IoT Core","href":"/latest/lot-language/routes/rest-api-apps/aws-iot-core"},{"title":"AWS IoT SiteWise","href":"/latest/lot-language/routes/rest-api-apps/aws-iot-sitewise"},{"title":"Azure Blob Storage and Data Lake Gen2","href":"/latest/lot-language/routes/rest-api-apps/azure-blob-storage-and-data-lake-gen2"},{"title":"Azure Cosmos DB","href":"/latest/lot-language/routes/rest-api-apps/azure-cosmos-db"},{"title":"Azure Data Explorer and Fabric Eventhouse","href":"/latest/lot-language/routes/rest-api-apps/azure-data-explorer-and-fabric-eventhouse"},{"title":"Azure DevOps","href":"/latest/lot-language/routes/rest-api-apps/azure-devops"},{"title":"Azure Digital Twins","href":"/latest/lot-language/routes/rest-api-apps/azure-digital-twins"},{"title":"Azure Event Hubs","href":"/latest/lot-language/routes/rest-api-apps/azure-event-hubs"},{"title":"Azure IoT Hub","href":"/latest/lot-language/routes/rest-api-apps/azure-iot-hub"},{"title":"Azure Monitor","href":"/latest/lot-language/routes/rest-api-apps/azure-monitor"},{"title":"Azure OpenAI and Azure AI Foundry","href":"/latest/lot-language/routes/rest-api-apps/azure-openai-and-azure-ai-foundry"},{"title":"Azure Service Bus","href":"/latest/lot-language/routes/rest-api-apps/azure-service-bus"},{"title":"balena","href":"/latest/lot-language/routes/rest-api-apps/balena"},{"title":"Bar Tender Actions","href":"/latest/lot-language/routes/rest-api-apps/bar-tender-actions"},{"title":"Bar Tender Cloud","href":"/latest/lot-language/routes/rest-api-apps/bar-tender-cloud"},{"title":"Bar Tender Print Portal","href":"/latest/lot-language/routes/rest-api-apps/bar-tender-print-portal"},{"title":"Blynk Device Api","href":"/latest/lot-language/routes/rest-api-apps/blynk-device-api"},{"title":"Blynk Platform Api","href":"/latest/lot-language/routes/rest-api-apps/blynk-platform-api"},{"title":"BMC Helix ITSM","href":"/latest/lot-language/routes/rest-api-apps/bmc-helix-itsm"},{"title":"Box Upload","href":"/latest/lot-language/routes/rest-api-apps/box-upload"},{"title":"Box","href":"/latest/lot-language/routes/rest-api-apps/box"},{"title":"Canary Read","href":"/latest/lot-language/routes/rest-api-apps/canary-read"},{"title":"Canary Write","href":"/latest/lot-language/routes/rest-api-apps/canary-write"},{"title":"ChirpStack v4","href":"/latest/lot-language/routes/rest-api-apps/chirpstack-v4"},{"title":"Clarify (Searis)","href":"/latest/lot-language/routes/rest-api-apps/clarify"},{"title":"ClickHouse","href":"/latest/lot-language/routes/rest-api-apps/clickhouse"},{"title":"Cloud Firestore","href":"/latest/lot-language/routes/rest-api-apps/cloud-firestore"},{"title":"Coupa","href":"/latest/lot-language/routes/rest-api-apps/coupa"},{"title":"Critical Manufacturing MES","href":"/latest/lot-language/routes/rest-api-apps/critical-manufacturing-mes"},{"title":"Cumulocity","href":"/latest/lot-language/routes/rest-api-apps/cumulocity"},{"title":"Databricks","href":"/latest/lot-language/routes/rest-api-apps/databricks"},{"title":"Datacake","href":"/latest/lot-language/routes/rest-api-apps/datacake"},{"title":"Datadog","href":"/latest/lot-language/routes/rest-api-apps/datadog"},{"title":"DELMIA Apriso (Dassault Systèmes)","href":"/latest/lot-language/routes/rest-api-apps/delmia-apriso"},{"title":"Dhl Api","href":"/latest/lot-language/routes/rest-api-apps/dhl-api"},{"title":"Dhl Location Finder","href":"/latest/lot-language/routes/rest-api-apps/dhl-location-finder"},{"title":"Dhl Parcel De","href":"/latest/lot-language/routes/rest-api-apps/dhl-parcel-de"},{"title":"Discord","href":"/latest/lot-language/routes/rest-api-apps/discord"},{"title":"Docker Hub","href":"/latest/lot-language/routes/rest-api-apps/docker-hub"},{"title":"Docu Sign ESignature","href":"/latest/lot-language/routes/rest-api-apps/docu-sign-esignature"},{"title":"Docu Sign OAuth","href":"/latest/lot-language/routes/rest-api-apps/docu-sign-oauth"},{"title":"Domo","href":"/latest/lot-language/routes/rest-api-apps/domo"},{"title":"Dropbox Content","href":"/latest/lot-language/routes/rest-api-apps/dropbox-content"},{"title":"Dropbox Notify","href":"/latest/lot-language/routes/rest-api-apps/dropbox-notify"},{"title":"Dropbox","href":"/latest/lot-language/routes/rest-api-apps/dropbox"},{"title":"Dynamics 365 Field Service and Connected Field Service","href":"/latest/lot-language/routes/rest-api-apps/dynamics-365-field-service-and-connected-field-service"},{"title":"Dynamics 365 Business Central","href":"/latest/lot-language/routes/rest-api-apps/dynamics365-bc"},{"title":"Microsoft Dynamics 365 Finance and Supply Chain","href":"/latest/lot-language/routes/rest-api-apps/dynamics365-fscm"},{"title":"Dynamics 365 Dataverse Web API","href":"/latest/lot-language/routes/rest-api-apps/dynamics365"},{"title":"Dynatrace","href":"/latest/lot-language/routes/rest-api-apps/dynatrace"},{"title":"EasyPost","href":"/latest/lot-language/routes/rest-api-apps/easypost"},{"title":"Eclipse Ditto (digital twins)","href":"/latest/lot-language/routes/rest-api-apps/eclipse-ditto"},{"title":"Eclipse hawkBit (OTA)","href":"/latest/lot-language/routes/rest-api-apps/eclipse-hawkbit"},{"title":"Elasticsearch and Elastic Cloud","href":"/latest/lot-language/routes/rest-api-apps/elasticsearch-and-elastic-cloud"},{"title":"Electricity Maps","href":"/latest/lot-language/routes/rest-api-apps/electricity-maps"},{"title":"Enphase Enlighten API v4","href":"/latest/lot-language/routes/rest-api-apps/enphase-enlighten-api-v4"},{"title":"Enphase","href":"/latest/lot-language/routes/rest-api-apps/enphase"},{"title":"ENTSO-E Transparency Platform REST API","href":"/latest/lot-language/routes/rest-api-apps/entso-e-transparency-platform"},{"title":"Epicor Kinetic REST API","href":"/latest/lot-language/routes/rest-api-apps/epicor-kinetic"},{"title":"ERedes Open Data","href":"/latest/lot-language/routes/rest-api-apps/eredes-open-data"},{"title":"Excel Online","href":"/latest/lot-language/routes/rest-api-apps/excel-online"},{"title":"Fed Ex Api","href":"/latest/lot-language/routes/rest-api-apps/fed-ex-api"},{"title":"Fed Ex Auth","href":"/latest/lot-language/routes/rest-api-apps/fed-ex-auth"},{"title":"Fed Ex Docs","href":"/latest/lot-language/routes/rest-api-apps/fed-ex-docs"},{"title":"Firebase Cloud Messaging (HTTP v1)","href":"/latest/lot-language/routes/rest-api-apps/firebase-cloud-messaging"},{"title":"Firebase Realtime Database and Cloud Firestore","href":"/latest/lot-language/routes/rest-api-apps/firebase-realtime-database-and-cloud-firestore"},{"title":"Firebase Realtime Database","href":"/latest/lot-language/routes/rest-api-apps/firebase-realtime-database"},{"title":"Flow Fuse Api","href":"/latest/lot-language/routes/rest-api-apps/flow-fuse-api"},{"title":"Fracttal One Api","href":"/latest/lot-language/routes/rest-api-apps/fracttal-one-api"},{"title":"Freshdesk and Freshservice REST API","href":"/latest/lot-language/routes/rest-api-apps/freshdesk-and-freshservice"},{"title":"Fronius Solar API (local)","href":"/latest/lot-language/routes/rest-api-apps/fronius-solar-api"},{"title":"GE Vernova Proficy Historian","href":"/latest/lot-language/routes/rest-api-apps/ge-vernova-proficy-historian"},{"title":"Gemini Api","href":"/latest/lot-language/routes/rest-api-apps/gemini-api"},{"title":"Geotab (MyGeotab API) REST API","href":"/latest/lot-language/routes/rest-api-apps/geotab"},{"title":"GitHub REST API","href":"/latest/lot-language/routes/rest-api-apps/github"},{"title":"GitLab","href":"/latest/lot-language/routes/rest-api-apps/gitlab"},{"title":"Golioth","href":"/latest/lot-language/routes/rest-api-apps/golioth"},{"title":"Google Address Validation","href":"/latest/lot-language/routes/rest-api-apps/google-address-validation"},{"title":"Google Air Quality","href":"/latest/lot-language/routes/rest-api-apps/google-air-quality"},{"title":"Google BigQuery","href":"/latest/lot-language/routes/rest-api-apps/google-bigquery"},{"title":"Google Cloud Pub/Sub","href":"/latest/lot-language/routes/rest-api-apps/google-cloud-pub-sub"},{"title":"Google Cloud Storage","href":"/latest/lot-language/routes/rest-api-apps/google-cloud-storage"},{"title":"Google Drive","href":"/latest/lot-language/routes/rest-api-apps/google-drive"},{"title":"Google Geolocation","href":"/latest/lot-language/routes/rest-api-apps/google-geolocation"},{"title":"Google Maps Web Services","href":"/latest/lot-language/routes/rest-api-apps/google-maps-web-services"},{"title":"Google Places","href":"/latest/lot-language/routes/rest-api-apps/google-places"},{"title":"Google Roads","href":"/latest/lot-language/routes/rest-api-apps/google-roads"},{"title":"Google Routes","href":"/latest/lot-language/routes/rest-api-apps/google-routes"},{"title":"Google Sheets","href":"/latest/lot-language/routes/rest-api-apps/google-sheets"},{"title":"Google Weather","href":"/latest/lot-language/routes/rest-api-apps/google-weather"},{"title":"Grafana Loki","href":"/latest/lot-language/routes/rest-api-apps/grafana-loki"},{"title":"Grafana","href":"/latest/lot-language/routes/rest-api-apps/grafana"},{"title":"Help Scout","href":"/latest/lot-language/routes/rest-api-apps/help-scout"},{"title":"Here Browse","href":"/latest/lot-language/routes/rest-api-apps/here-browse"},{"title":"Here Discover","href":"/latest/lot-language/routes/rest-api-apps/here-discover"},{"title":"Here Geocode","href":"/latest/lot-language/routes/rest-api-apps/here-geocode"},{"title":"HERE Geocoding","href":"/latest/lot-language/routes/rest-api-apps/here-geocoding"},{"title":"Here Isoline","href":"/latest/lot-language/routes/rest-api-apps/here-isoline"},{"title":"Here Lookup","href":"/latest/lot-language/routes/rest-api-apps/here-lookup"},{"title":"Here Matrix","href":"/latest/lot-language/routes/rest-api-apps/here-matrix"},{"title":"Here Multi Reverse Geocode","href":"/latest/lot-language/routes/rest-api-apps/here-multi-reverse-geocode"},{"title":"Here Reverse Geocode","href":"/latest/lot-language/routes/rest-api-apps/here-reverse-geocode"},{"title":"Here Route Matching","href":"/latest/lot-language/routes/rest-api-apps/here-route-matching"},{"title":"Here Routing","href":"/latest/lot-language/routes/rest-api-apps/here-routing"},{"title":"Here Tour Planning","href":"/latest/lot-language/routes/rest-api-apps/here-tour-planning"},{"title":"Here Traffic","href":"/latest/lot-language/routes/rest-api-apps/here-traffic"},{"title":"Here Waypoints Sequence","href":"/latest/lot-language/routes/rest-api-apps/here-waypoints-sequence"},{"title":"High Byte Config","href":"/latest/lot-language/routes/rest-api-apps/high-byte-config"},{"title":"High Byte Data","href":"/latest/lot-language/routes/rest-api-apps/high-byte-data"},{"title":"Home Assistant","href":"/latest/lot-language/routes/rest-api-apps/home-assistant"},{"title":"HTTPBin REST API","href":"/latest/lot-language/routes/rest-api-apps/httpbin"},{"title":"HubSpot CRM API","href":"/latest/lot-language/routes/rest-api-apps/hubspot"},{"title":"Hugging Face Dedicated Endpoint","href":"/latest/lot-language/routes/rest-api-apps/hugging-face-dedicated-endpoint"},{"title":"Hugging Face Hub","href":"/latest/lot-language/routes/rest-api-apps/hugging-face-hub"},{"title":"Hugging Face Inference Endpoints","href":"/latest/lot-language/routes/rest-api-apps/hugging-face-inference-endpoints"},{"title":"Hugging Face Inference Providers","href":"/latest/lot-language/routes/rest-api-apps/hugging-face-inference-providers"},{"title":"HxGN EAM (Hexagon, formerly Infor EAM)","href":"/latest/lot-language/routes/rest-api-apps/hxgn-eam"},{"title":"IBM Maximo Manage","href":"/latest/lot-language/routes/rest-api-apps/ibm-maximo-manage"},{"title":"IFS Cloud REST API","href":"/latest/lot-language/routes/rest-api-apps/ifs-cloud"},{"title":"Ignition (Inductive Automation)","href":"/latest/lot-language/routes/rest-api-apps/ignition"},{"title":"InfluxDB","href":"/latest/lot-language/routes/rest-api-apps/influxdb"},{"title":"Infor CloudSuite via ION API Gateway REST API","href":"/latest/lot-language/routes/rest-api-apps/infor-cloudsuite-via-ion-api-gateway"},{"title":"Intercom","href":"/latest/lot-language/routes/rest-api-apps/intercom"},{"title":"Jira Cloud (Software)","href":"/latest/lot-language/routes/rest-api-apps/jira-cloud"},{"title":"Jira Service Management","href":"/latest/lot-language/routes/rest-api-apps/jira-service-management"},{"title":"JSONPlaceholder REST API","href":"/latest/lot-language/routes/rest-api-apps/jsonplaceholder"},{"title":"Kepware Config","href":"/latest/lot-language/routes/rest-api-apps/kepware-config"},{"title":"Kepware Iot Gateway","href":"/latest/lot-language/routes/rest-api-apps/kepware-iot-gateway"},{"title":"Limble CMMS","href":"/latest/lot-language/routes/rest-api-apps/limble-cmms"},{"title":"Litmus Edge","href":"/latest/lot-language/routes/rest-api-apps/litmus-edge"},{"title":"Looker","href":"/latest/lot-language/routes/rest-api-apps/looker"},{"title":"Losant","href":"/latest/lot-language/routes/rest-api-apps/losant"},{"title":"MachineMetrics","href":"/latest/lot-language/routes/rest-api-apps/machinemetrics"},{"title":"Mailgun","href":"/latest/lot-language/routes/rest-api-apps/mailgun"},{"title":"MaintainX","href":"/latest/lot-language/routes/rest-api-apps/maintainx"},{"title":"Mapbox","href":"/latest/lot-language/routes/rest-api-apps/mapbox"},{"title":"Mattermost","href":"/latest/lot-language/routes/rest-api-apps/mattermost"},{"title":"Memfault","href":"/latest/lot-language/routes/rest-api-apps/memfault"},{"title":"Mender","href":"/latest/lot-language/routes/rest-api-apps/mender"},{"title":"Metabase","href":"/latest/lot-language/routes/rest-api-apps/metabase"},{"title":"Microsoft Power BI","href":"/latest/lot-language/routes/rest-api-apps/microsoft-power-bi"},{"title":"Microsoft Teams","href":"/latest/lot-language/routes/rest-api-apps/microsoft-teams"},{"title":"MinIO","href":"/latest/lot-language/routes/rest-api-apps/minio"},{"title":"Mistral AI","href":"/latest/lot-language/routes/rest-api-apps/mistral-ai"},{"title":"monday.com","href":"/latest/lot-language/routes/rest-api-apps/monday-com"},{"title":"My Dhl Express","href":"/latest/lot-language/routes/rest-api-apps/my-dhl-express"},{"title":"N3uron","href":"/latest/lot-language/routes/rest-api-apps/n3uron"},{"title":"Oracle NetSuite (SuiteTalk REST)","href":"/latest/lot-language/routes/rest-api-apps/netsuite"},{"title":"New Relic","href":"/latest/lot-language/routes/rest-api-apps/new-relic"},{"title":"Nextcloud","href":"/latest/lot-language/routes/rest-api-apps/nextcloud"},{"title":"Node Red Admin","href":"/latest/lot-language/routes/rest-api-apps/node-red-admin"},{"title":"Node Red Http In","href":"/latest/lot-language/routes/rest-api-apps/node-red-http-in"},{"title":"Notion","href":"/latest/lot-language/routes/rest-api-apps/notion"},{"title":"ntfy","href":"/latest/lot-language/routes/rest-api-apps/ntfy"},{"title":"OCPI 2.2.1 (EV charging roaming)","href":"/latest/lot-language/routes/rest-api-apps/ocpi-2-2-1"},{"title":"Odoo","href":"/latest/lot-language/routes/rest-api-apps/odoo"},{"title":"Okta","href":"/latest/lot-language/routes/rest-api-apps/okta"},{"title":"Ollama (local models)","href":"/latest/lot-language/routes/rest-api-apps/ollama"},{"title":"Open-Meteo REST API","href":"/latest/lot-language/routes/rest-api-apps/open-meteo"},{"title":"OpenADR 3.0 (demand response)","href":"/latest/lot-language/routes/rest-api-apps/openadr-3-0"},{"title":"OpenAI","href":"/latest/lot-language/routes/rest-api-apps/openai"},{"title":"OpenAQ","href":"/latest/lot-language/routes/rest-api-apps/openaq"},{"title":"OpenEI","href":"/latest/lot-language/routes/rest-api-apps/openei"},{"title":"OpenWeatherMap REST API","href":"/latest/lot-language/routes/rest-api-apps/openweathermap"},{"title":"Opsgenie","href":"/latest/lot-language/routes/rest-api-apps/opsgenie"},{"title":"Oracle E-Business Suite (Integrated SOA Gateway)","href":"/latest/lot-language/routes/rest-api-apps/oracle-e-business-suite"},{"title":"Oracle Fusion Cloud ERP and SCM","href":"/latest/lot-language/routes/rest-api-apps/oracle-fusion-erp"},{"title":"Oracle JD Edwards EnterpriseOne","href":"/latest/lot-language/routes/rest-api-apps/oracle-jd-edwards"},{"title":"Osm Nominatim","href":"/latest/lot-language/routes/rest-api-apps/osm-nominatim"},{"title":"Osm Osrm","href":"/latest/lot-language/routes/rest-api-apps/osm-osrm"},{"title":"PagerDuty","href":"/latest/lot-language/routes/rest-api-apps/pagerduty"},{"title":"Particle","href":"/latest/lot-language/routes/rest-api-apps/particle"},{"title":"Pipedrive","href":"/latest/lot-language/routes/rest-api-apps/pipedrive"},{"title":"Postman Echo REST API","href":"/latest/lot-language/routes/rest-api-apps/postman-echo"},{"title":"Project Haystack","href":"/latest/lot-language/routes/rest-api-apps/project-haystack"},{"title":"Prometheus, Alertmanager and Pushgateway","href":"/latest/lot-language/routes/rest-api-apps/prometheus-alertmanager-and-pushgateway"},{"title":"PTC Windchill (Windchill REST Services)","href":"/latest/lot-language/routes/rest-api-apps/ptc-windchill"},{"title":"PurpleAir","href":"/latest/lot-language/routes/rest-api-apps/purpleair"},{"title":"Pushover","href":"/latest/lot-language/routes/rest-api-apps/pushover"},{"title":"QAD Adaptive ERP","href":"/latest/lot-language/routes/rest-api-apps/qad-adaptive-erp"},{"title":"QAD Redzone","href":"/latest/lot-language/routes/rest-api-apps/qad-redzone"},{"title":"Qlik Cloud","href":"/latest/lot-language/routes/rest-api-apps/qlik-cloud"},{"title":"QuestDB","href":"/latest/lot-language/routes/rest-api-apps/questdb"},{"title":"QuickBooks Online","href":"/latest/lot-language/routes/rest-api-apps/quickbooks-online"},{"title":"Ren Data Hub","href":"/latest/lot-language/routes/rest-api-apps/ren-data-hub"},{"title":"Rhize Api","href":"/latest/lot-language/routes/rest-api-apps/rhize-api"},{"title":"Rockwell Plex Smart Manufacturing Platform","href":"/latest/lot-language/routes/rest-api-apps/rockwell-plex-smart-manufacturing-platform"},{"title":"Salesforce","href":"/latest/lot-language/routes/rest-api-apps/salesforce"},{"title":"Samsara REST API","href":"/latest/lot-language/routes/rest-api-apps/samsara"},{"title":"Sap Ariba Open Api","href":"/latest/lot-language/routes/rest-api-apps/sap-ariba-open-api"},{"title":"SAP Business One Service Layer","href":"/latest/lot-language/routes/rest-api-apps/sap-b1"},{"title":"SAP Digital Manufacturing","href":"/latest/lot-language/routes/rest-api-apps/sap-digital-manufacturing"},{"title":"SAP Field Service Management","href":"/latest/lot-language/routes/rest-api-apps/sap-field-service-management"},{"title":"SAP S/4HANA Cloud","href":"/latest/lot-language/routes/rest-api-apps/sap-s4hana-cloud"},{"title":"SAP S/4HANA on-premise / ECC (Gateway)","href":"/latest/lot-language/routes/rest-api-apps/sap-s4hana-onprem"},{"title":"SAP SuccessFactors","href":"/latest/lot-language/routes/rest-api-apps/sap-successfactors"},{"title":"Seeq","href":"/latest/lot-language/routes/rest-api-apps/seeq"},{"title":"SendGrid","href":"/latest/lot-language/routes/rest-api-apps/sendgrid"},{"title":"Sentry","href":"/latest/lot-language/routes/rest-api-apps/sentry"},{"title":"Sepasoft MES for Ignition","href":"/latest/lot-language/routes/rest-api-apps/sepasoft-mes-for-ignition"},{"title":"Service Titan Api","href":"/latest/lot-language/routes/rest-api-apps/service-titan-api"},{"title":"ServiceMax (PTC)","href":"/latest/lot-language/routes/rest-api-apps/servicemax"},{"title":"ServiceNow","href":"/latest/lot-language/routes/rest-api-apps/servicenow"},{"title":"SharePoint and OneDrive (Microsoft Graph)","href":"/latest/lot-language/routes/rest-api-apps/sharepoint-and-onedrive"},{"title":"Shelly Cloud Control","href":"/latest/lot-language/routes/rest-api-apps/shelly-cloud-control"},{"title":"Shelly Gen2 Rpc","href":"/latest/lot-language/routes/rest-api-apps/shelly-gen2-rpc"},{"title":"Shopify","href":"/latest/lot-language/routes/rest-api-apps/shopify"},{"title":"Siemens Industrial Edge Management","href":"/latest/lot-language/routes/rest-api-apps/siemens-industrial-edge-management"},{"title":"Siemens Insights Hub","href":"/latest/lot-language/routes/rest-api-apps/siemens-insights-hub"},{"title":"Siemens Opcenter Execution","href":"/latest/lot-language/routes/rest-api-apps/siemens-opcenter-execution"},{"title":"Siemens Teamcenter","href":"/latest/lot-language/routes/rest-api-apps/siemens-teamcenter"},{"title":"Siemens WinCC Unified (GraphQL server)","href":"/latest/lot-language/routes/rest-api-apps/siemens-wincc-unified"},{"title":"Sight Machine","href":"/latest/lot-language/routes/rest-api-apps/sight-machine"},{"title":"Slack REST API","href":"/latest/lot-language/routes/rest-api-apps/slack"},{"title":"Smartsheet","href":"/latest/lot-language/routes/rest-api-apps/smartsheet"},{"title":"Snowflake SQL API","href":"/latest/lot-language/routes/rest-api-apps/snowflake-sql-api"},{"title":"SolarEdge Monitoring API","href":"/latest/lot-language/routes/rest-api-apps/solaredge-monitoring-api"},{"title":"SolarEdge","href":"/latest/lot-language/routes/rest-api-apps/solaredge"},{"title":"Soracom","href":"/latest/lot-language/routes/rest-api-apps/soracom"},{"title":"Splunk Enterprise and Cloud","href":"/latest/lot-language/routes/rest-api-apps/splunk-enterprise-and-cloud"},{"title":"Stripe REST API","href":"/latest/lot-language/routes/rest-api-apps/stripe"},{"title":"SugarCRM","href":"/latest/lot-language/routes/rest-api-apps/sugarcrm"},{"title":"Supabase","href":"/latest/lot-language/routes/rest-api-apps/supabase"},{"title":"Tableau (Server and Cloud)","href":"/latest/lot-language/routes/rest-api-apps/tableau"},{"title":"TDengine","href":"/latest/lot-language/routes/rest-api-apps/tdengine"},{"title":"Telegram Bot API","href":"/latest/lot-language/routes/rest-api-apps/telegram-bot-api"},{"title":"Teltonika RMS","href":"/latest/lot-language/routes/rest-api-apps/teltonika-rms"},{"title":"The Things Stack","href":"/latest/lot-language/routes/rest-api-apps/the-things-stack"},{"title":"ThingsBoard","href":"/latest/lot-language/routes/rest-api-apps/thingsboard"},{"title":"Traccar (open-source GPS server) REST API","href":"/latest/lot-language/routes/rest-api-apps/traccar"},{"title":"Trackunit Iris","href":"/latest/lot-language/routes/rest-api-apps/trackunit-iris"},{"title":"Trello","href":"/latest/lot-language/routes/rest-api-apps/trello"},{"title":"Tulip","href":"/latest/lot-language/routes/rest-api-apps/tulip"},{"title":"Twilio (SMS, Voice, WhatsApp)","href":"/latest/lot-language/routes/rest-api-apps/twilio"},{"title":"Ubidots","href":"/latest/lot-language/routes/rest-api-apps/ubidots"},{"title":"UpKeep","href":"/latest/lot-language/routes/rest-api-apps/upkeep"},{"title":"Ups Api","href":"/latest/lot-language/routes/rest-api-apps/ups-api"},{"title":"Veeva Vault Api","href":"/latest/lot-language/routes/rest-api-apps/veeva-vault-api"},{"title":"Vertex Ai","href":"/latest/lot-language/routes/rest-api-apps/vertex-ai"},{"title":"Victron VRM API","href":"/latest/lot-language/routes/rest-api-apps/victron-vrm-api"},{"title":"WattTime","href":"/latest/lot-language/routes/rest-api-apps/watttime"},{"title":"Webfleet (Bridgestone)","href":"/latest/lot-language/routes/rest-api-apps/webfleet"},{"title":"WhatsApp Business Platform (Meta Cloud API)","href":"/latest/lot-language/routes/rest-api-apps/whatsapp-business-platform"},{"title":"Workday","href":"/latest/lot-language/routes/rest-api-apps/workday"},{"title":"Xero","href":"/latest/lot-language/routes/rest-api-apps/xero"},{"title":"Zabbix","href":"/latest/lot-language/routes/rest-api-apps/zabbix"},{"title":"Zendesk Support","href":"/latest/lot-language/routes/rest-api-apps/zendesk-support"},{"title":"Zoho CRM REST API","href":"/latest/lot-language/routes/rest-api-apps/zoho-crm"}]},{"title":"MCP Connectors","href":"/latest/lot-language/routes/mcp-routes"},{"title":"AI Connectors and Agents","href":"/latest/lot-language/routes/ai-routes"},{"group":"Media Connectors","pages":[{"title":"Media Connectors","href":"/latest/lot-language/routes/media/overview"},{"title":"Barcode Connector","href":"/latest/lot-language/routes/media/barcode"},{"title":"Video Input Connector","href":"/latest/lot-language/routes/media/video-input"},{"title":"Audio Input Connector","href":"/latest/lot-language/routes/media/audio-input"}]},{"title":"Connector Examples","href":"/latest/lot-language/routes/examples"}]},{"group":"LoT AGENT","pages":[{"title":"Agents Overview","href":"/latest/lot-language/agents/overview"},{"title":"Agent Syntax","href":"/latest/lot-language/agents/syntax"},{"title":"Agent Examples","href":"/latest/lot-language/agents/examples"}]},{"group":"LoT THING","pages":[{"title":"Things Overview","href":"/latest/lot-language/things/overview"},{"title":"Thing Syntax","href":"/latest/lot-language/things/syntax"},{"title":"Thing Examples","href":"/latest/lot-language/things/examples"}]},{"group":"LoT RULE","pages":[{"title":"RULE Overview","href":"/latest/lot-language/rules/overview"},{"title":"RULE Syntax","href":"/latest/lot-language/rules/syntax"},{"title":"RBAC with LoT Rules","href":"/latest/lot-language/rules/rbac"}]},{"group":"LoT PANEL","pages":[{"title":"Defining a Panel","href":"/latest/lot-language/panels/defining-panels"},{"title":"Data Binding","href":"/latest/lot-language/panels/data-binding"},{"title":"Actions \u0026 Events","href":"/latest/lot-language/panels/actions-events"}]},{"group":"Best Practices and Usage Patterns","pages":[{"title":"Naming conventions","href":"/latest/lot-language/usage-patterns/naming-conventions"},{"title":"Designing your data layer","href":"/latest/lot-language/usage-patterns/data-layer"},{"title":"Working with JSON","href":"/latest/lot-language/usage-patterns/working-with-json"},{"title":"Writing reusable logic","href":"/latest/lot-language/usage-patterns/reusable-logic"},{"title":"Alarms and monitoring","href":"/latest/lot-language/usage-patterns/alarms-and-monitoring"},{"title":"Connecting to the outside world","href":"/latest/lot-language/usage-patterns/integrations"},{"title":"Production architecture","href":"/latest/lot-language/usage-patterns/production-architecture"},{"title":"Project organization","href":"/latest/lot-language/usage-patterns/project-organization"},{"title":"Anti-patterns","href":"/latest/lot-language/usage-patterns/anti-patterns"}]}]},{"group":"Coreflux HUB","tag":"2.12","pages":[{"title":"Coreflux HUB Overview","href":"/hub/overview"},{"title":"Connections Manager","href":"/hub/connections"},{"title":"Account, Fleet, and Cloud Mode","href":"/hub/account-and-fleet"},{"title":"AI Assistant","href":"/hub/ai-assistant"},{"group":"Viewing MQTT Data","pages":[{"title":"MQTT Overview","href":"/hub/mqtt/overview"},{"title":"Data Viewer","href":"/hub/mqtt/data-viewer"},{"title":"UNS Viewer","href":"/hub/mqtt/uns-viewer"},{"title":"Connected Clients","href":"/hub/mqtt/connected-clients"}]},{"title":"LoT Editor","href":"/hub/lot-editor"},{"title":"LoT Flow","href":"/hub/lot-flow"},{"title":"Cluster Viewer","href":"/hub/cluster-viewer"},{"group":"Dashboards","pages":[{"title":"Dashboards in the HUB","href":"/hub/dashboards/overview"},{"title":"Dashboard Manager","href":"/hub/dashboards/manager"},{"group":"Component Reference","pages":[{"title":"Display Components","href":"/hub/dashboards/components/display"},{"title":"Input \u0026 Control Components","href":"/hub/dashboards/components/inputs"},{"title":"Container Components","href":"/hub/dashboards/components/containers"}]},{"title":"Common Patterns","href":"/hub/dashboards/patterns"}]},{"group":"Managing Connectors","pages":[{"title":"Connectors Overview","href":"/hub/routes/overview"},{"title":"Connector Configuration","href":"/hub/routes/configuration"},{"title":"Connectors Monitoring","href":"/hub/routes/monitoring"}]},{"group":"Administering the Broker","pages":[{"title":"System Overview","href":"/hub/system/overview"},{"title":"System Configuration","href":"/hub/system/configuration"},{"title":"Certificates","href":"/hub/system/certificates"},{"title":"User Management","href":"/hub/system/user-management"},{"title":"Command Console","href":"/hub/system/command-console"},{"title":"Broker Logs","href":"/hub/system/broker-logs"}]}]},{"group":"VS Code - LoT Notebooks","tag":"1.0","pages":[{"title":"How to Use a LoT Notebook","href":"/lot-notebooks/usage"},{"title":"How to Debug in LoT Notebooks","href":"/lot-notebooks/debug"},{"title":"Tutorials","href":"/lot-notebooks/tutorials"},{"title":"File Format","href":"/lot-notebooks/file-format"}]},{"group":"Coreflux Portal","pages":[{"title":"Coreflux Portal","href":"/portal/overview"},{"title":"Getting Started with the Portal","href":"/portal/getting-started"},{"title":"Fleet","href":"/portal/fleet"},{"title":"Licensing","href":"/portal/licensing"},{"title":"Team and Settings","href":"/portal/team-and-settings"}]},{"group":"Using AI with Coreflux","pages":[{"title":"Model Context Protocol (MCP)","href":"/ai/mcp"},{"title":"Coreflux Agent Skills","href":"/ai/agent-skills"},{"title":"Developing with LoT Using AI","href":"/ai/developing-with-lot"},{"title":"AI-Assisted Development Best Practices","href":"/ai/best-practices"}]},{"group":"Product Updates","pages":[{"title":"Release Notes","href":"/product-updates/release-notes"}]}]},{"version":"v2.14","default":false,"pages":[{"title":"v2.14","href":"/v2.14/quick-start/getting-started"}]},{"version":"v2.2","pages":[{"title":"v2.2","href":"/v2.2/quick-start/getting-started"}]},{"version":"v2.1","default":false,"pages":[{"title":"v2.1","href":"/v2.1/quick-start/getting-started"}]},{"version":"v2.0","default":false,"pages":[{"title":"v2.0","href":"/v2.0/quick-start/getting-started"}]},{"version":"v1.10","default":false,"pages":[{"title":"v1.10","href":"/v1.10/quick-start/getting-started"}]}]},"basePath":"","title":"Getting Started - Coreflux Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}