KEEP TOPIC Functional Keyword
| Feature | Since Version | Notes |
|---|---|---|
KEEP TOPIC |
>v1.5.5 | Stores data internally |
1. Overview
- Description:
Stores data internally within the broker, associated with a specified MQTT topic. Unlike
PUBLISH TOPIC, this data is not broadcast to external subscribers but is accessible within the broker usingGET TOPICfor use in other Actions or Models.
2. Signature
- Syntax:
3. Parameters
"<topicPath>": The internal topic path (string) where the data will be stored.<value>: The data to store. Can be a literal (string, number), an Entity likePAYLOADorTIMESTAMP, or the result of an Expression.
4. Usage Examples
Basic Example
Stores the incoming payload internally when an event occurs.
DEFINE ACTION StoreSensorValueInternally
ON TOPIC "sensors/+/temperature" DO
KEEP TOPIC "internal/last_temp" WITH PAYLOAD
- Scenario: A message
25.5arrives onsensors/A/temperature. The value25.5is stored internally atinternal/last_temp.
Intermediate Example
Keeps track of the last command received.
DEFINE ACTION TrackLastCommand
ON TOPIC "commands/device/set" DO
KEEP TOPIC "internal/device/last_command" WITH PAYLOAD
KEEP TOPIC "internal/device/last_command_time" WITH TIMESTAMP WITH "ISO"
Advanced Example
Stores a calculated value internally.
DEFINE ACTION StoreAverage
ON TOPIC "data/point" DO
SET "current_sum" WITH GET TOPIC "internal/sum"
SET "current_count" WITH GET TOPIC "internal/count"
IF {current_sum} EQUALS EMPTY THEN SET "current_sum" WITH 0
IF {current_count} EQUALS EMPTY THEN SET "current_count" WITH 0
SET "new_sum" WITH ({current_sum} + PAYLOAD)
SET "new_count" WITH ({current_count} + 1)
SET "new_average" WITH ({new_sum} / {new_count})
KEEP TOPIC "internal/sum" WITH {new_sum}
KEEP TOPIC "internal/count" WITH {new_count}
KEEP TOPIC "internal/average" WITH {new_average}
5. Notes & Additional Information
KEEP TOPICis essential for maintaining state or storing intermediate values within the broker without exposing them externally.- The stored value can be retrieved using
GET TOPIC "<topicPath>".