Message¶
The message module provides message types and builders for Kelvin applications.
Main Module¶
Kelvin Messages.
- class kelvin.message.Message(**kwargs)[source]¶
Bases:
BaseModel- Parameters:
type (KMessageType)
resource (KRN | None)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (Any)
- MESSAGE_TYPES_: ClassVar[Dict[KMessageType, Type[Message]]] = {KMessageTypeAction('custom-action-create', ''): <class 'kelvin.message.base_messages.CustomActionMsg'>, KMessageTypeActionAck('custom-action-result', ''): <class 'kelvin.message.base_messages.CustomActionResultMsg'>, KMessageTypeControl('control', ''): <class 'kelvin.message.base_messages.ControlChangeMsg'>, KMessageTypeControlAck('control-ack', ''): <class 'kelvin.message.base_messages.ControlChangeAck'>, KMessageTypeControlStatus('control-status', ''): <class 'kelvin.message.base_messages.ControlChangeStatus'>, KMessageTypeData('data', 'pt=boolean'): <class 'kelvin.message.primitives.Boolean'>, KMessageTypeData('data', 'pt=number'): <class 'kelvin.message.primitives.Number'>, KMessageTypeData('data', 'pt=object;icd=kelvin.sensor_data'): <class 'kelvin.message.base_messages.SensorDataMsg'>, KMessageTypeData('data', 'pt=string'): <class 'kelvin.message.primitives.String'>, KMessageTypeDataTag('datatag', ''): <class 'kelvin.message.base_messages.DataTagMsg'>, KMessageTypeParameter('parameter', 'pt=boolean'): <class 'kelvin.message.primitives.BooleanParameter'>, KMessageTypeParameter('parameter', 'pt=number'): <class 'kelvin.message.primitives.NumberParameter'>, KMessageTypeParameter('parameter', 'pt=string'): <class 'kelvin.message.primitives.StringParameter'>, KMessageTypeParameters('parameters', ''): <class 'kelvin.message.base_messages.ParametersMsg'>, KMessageTypeRecommendation('recommendation', ''): <class 'kelvin.message.base_messages.RecommendationMsg'>, KMessageTypeRuntimeManifest('runtime_manifest', ''): <class 'kelvin.message.runtime_manifest.RuntimeManifest'>}¶
- TYPE_: ClassVar[KMessageType | None] = None¶
- type: KMessageType¶
- __init__(**kwargs)[source]¶
Create a kelvin Message.
Parameters¶
- idstr, optional
UUID of the message. Optional, auto generated if not provided.
- typeKMessageType
Message Type
- trace_idstr, optional
Optional trace id. UUID
- sourceKRN, optional
Identifies the source of the message.
- timestampdatetime, optional
Sets a timestamp for the message. If not provided current time is used.
- resourceKRN, optional
Sets a resource that the message relates to.
- payloadAny
Payload of the message. Specific for each message sub type.
- Parameters:
kwargs (Any)
- Return type:
None
- dict(by_alias=True, exclude_none=True, exclude_unset=False, **kwargs)[source]¶
Generate a dictionary representation of the model.
- class kelvin.message.Boolean(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeData('data', 'pt=boolean')¶
- type: KMessageTypeData¶
- class kelvin.message.Number(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeData('data', 'pt=number')¶
- type: KMessageTypeData¶
- class kelvin.message.String(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeData('data', 'pt=string')¶
- type: KMessageTypeData¶
- class kelvin.message.NumberParameter(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeParameter('parameter', 'pt=number')¶
- type: KMessageTypeParameter¶
- class kelvin.message.BooleanParameter(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeParameter('parameter', 'pt=boolean')¶
- type: KMessageTypeParameter¶
- class kelvin.message.StringParameter(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeParameter('parameter', 'pt=string')¶
- type: KMessageTypeParameter¶
- class kelvin.message.KMessageType(msg_type=None, components=None)[source]¶
Bases:
objectKelvin Message Type representation
- class kelvin.message.KMessageTypeData(primitive='object', icd=None)[source]¶
Bases:
KMessageTypePrimitive- Parameters:
primitive (PrimitiveTypes)
icd (str | None)
- class kelvin.message.KMessageTypePrimitive(primitive='object', icd=None)[source]¶
Bases:
KMessageType- Parameters:
primitive (PrimitiveTypes)
icd (str | None)
- primitive: PrimitiveTypes¶
- class kelvin.message.KMessageTypeParameter(primitive='object', icd=None)[source]¶
Bases:
KMessageTypePrimitive- Parameters:
primitive (PrimitiveTypes)
icd (str | None)
- class kelvin.message.KMessageTypeControl(msg_type=None, components=None)[source]¶
Bases:
KMessageType
- class kelvin.message.KMessageTypeRecommendation(msg_type=None, components=None)[source]¶
Bases:
KMessageType
- class kelvin.message.KMessageTypeControlStatus(msg_type=None, components=None)[source]¶
Bases:
KMessageType
- class kelvin.message.RecommendationMsg(**kwargs)[source]¶
Bases:
Message- Parameters:
type (KMessageTypeRecommendation)
resource (KRN | None)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (RecommendationPayload)
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeRecommendation('recommendation', '')¶
- payload: RecommendationPayload¶
- class kelvin.message.RecommendationActions(**data)[source]¶
Bases:
BaseModel- Parameters:
control_changes (List[RecommendationControlChange])
custom_actions (List[RecommendationCustomAction])
- control_changes: List[RecommendationControlChange]¶
- class kelvin.message.RecommendationControlChange(**data)[source]¶
Bases:
ControlChangePayload- Parameters:
- class kelvin.message.ControlChangeMsg(**kwargs)[source]¶
Bases:
MessageGeneric Control Change Message
- Parameters:
type (KMessageTypeControl)
resource (KRN | None)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (ControlChangePayload)
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeControl('control', '')¶
- type: KMessageTypeControl¶
- payload: ControlChangePayload¶
- class kelvin.message.ControlChangePayload(**data)[source]¶
Bases:
BaseModel- Parameters:
timeout (int | None)
retries (int | None)
expiration_date (datetime)
payload (Any)
from_value (ValuePoint | None)
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- from_value: ValuePoint | None¶
- class kelvin.message.ControlChangeStatus(**kwargs)[source]¶
Bases:
MessageControl Change Status
- Parameters:
type (KMessageTypeControlStatus)
resource (KRN | None)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (ControlChangeStatusPayload)
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeControlStatus('control-status', '')¶
- payload: ControlChangeStatusPayload¶
- class kelvin.message.ControlChangeAckPayload(**data)[source]¶
Bases:
ControlChangeStatusPayloadControl Change Ack Payload
- Parameters:
- class kelvin.message.ControlChangeAck(**kwargs)[source]¶
Bases:
MessageControl Change Ack
- Parameters:
type (KMessageTypeControlAck)
resource (KRN | None)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (ControlChangeAckPayload)
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeControlAck('control-ack', '')¶
- type: KMessageTypeControlAck¶
- payload: ControlChangeAckPayload¶
- class kelvin.message.StateEnum(*values)[source]¶
-
- ready = 'ready'¶
- sent = 'sent'¶
- failed = 'failed'¶
- processed = 'processed'¶
- applied = 'applied'¶
- rejected = 'rejected'¶
- class kelvin.message.Recommendation(*args, **kwargs)[source]¶
Bases:
MessageBuilder[RecommendationMsg]Recommendation Builder. Use this helper class to build a Kelvin Recommendation.
- Parameters:
resource (KRNAsset) – The kelvin asset resource targeted by the recommendation
type (str) – the type of the recommendation, chose one from the available on the kelvin platform (eg generic, speed_inc, speed_dec, …)
expiration_date (datetime | timedelta) – The absolute time in the future when the recommendation expires. Provide either a absolute datetime or a timedelta from now
description (str) – An optional description for the recommendation
confidence (int) – Optional confidence of the recommendation (from 1 to 4)
control_changes (List[ControlChanges]) – the list of ControlChanges associated with the recommendation
metadata (Dict | None) – (Dict[str, Any]): Optional metadata for the recommendation
auto_accepted (bool) – Sets the Recommendation as auto accepted. Default is False
evidences (List[Evidence]) – List of evidences associated with the recommendation
custom_identifier (str) – Optional custom identifier for the recommendation
actions (List[CustomAction]) – List of custom actions associated with the recommendation
trace_id (str) – Optional trace ID for the recommendation
- resource: KRNAsset¶
- control_changes: List[ControlChange] = FieldInfo(annotation=NoneType, required=False, default_factory=list)¶
- actions: List[CustomAction] = FieldInfo(annotation=NoneType, required=False, default_factory=list)¶
- class kelvin.message.ControlChange(*args, **kwargs)[source]¶
Bases:
MessageBuilder[ControlChangeMsg]Control change builder Use this helper class to build a Kelvin Control change.
- Parameters:
resource (KRN) – The kelvin resource targeted by the control change, represented by a KRN (usually KRNAssetDataStream)
expiration_date (datetime | timedelta) – The absolute time in the future when the Control Change expires. Provide either a absolute datetime or a timedelta from now
payload (bool, int, float, str) – The desired target value for the control change
retries (int) – Optional number of retries
timeout (int) – Optional timeout time (for retries)
control_change_id (UUID) – Optional UUID to set an specific ID for the control change
from_value (ValuePoint) – Optional initial value for the control change
trace_id (str) – Optional trace ID for the control change
- resource: KRN¶
- from_value: ValuePoint | None = None¶
- classmethod from_message(msg)[source]¶
- Return type:
- Parameters:
msg (ControlChangeMsg)
- class kelvin.message.AssetParameter(*args, **kwargs)[source]¶
Bases:
AppParameter[Deprecated] Use AppParameter instead Asset Parameter Helper.
- class kelvin.message.AssetParameters(*args, **kwargs)[source]¶
Bases:
AppParameters[Deprecated] Use AppParameters instead Parameters Builder. Set application parameters in bulk.
- Parameters:
resource (Optional[KRNAppVersion]) – Optional Kelvin Resource name for the target App Version. Defaults to current app.
parameters (List[AssetParameters]) – list of single asset parameters
- class kelvin.message.AssetDataMessage(**kwargs)[source]¶
Bases:
MessageA message containing data for an asset datastream.
This type represents messages that carry data values (numbers, strings, booleans) for a specific datastream on an asset.
- Parameters:
type (KMessageTypeData)
resource (KRNAssetDataStream)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (Any)
- type¶
The data message type (includes primitive type information).
- resource¶
The KRN identifying the asset and datastream.
- type: KMessageTypeData¶
- resource: KRNAssetDataStream¶
- class kelvin.message.DataTag(*args, **kwargs)[source]¶
Bases:
MessageBuilderData Tag.
- Parameters:
start_date (datetime) – The start date of the data tag.
tag_name (str) – The name of the data tag.
resource (KRNAsset) – The asset resource associated with the data tag.
end_date (Optional[datetime]) – The end date of the data tag. If not specified, the data tag is
time (considered one point in)
start_date. (the)
contexts (Optional[List[KRN]]) – The list of contexts associated with the data tag.
description (Optional[str]) – The description of the data tag. Truncated to 256 characters.
- resource: KRNAsset¶
- class kelvin.message.DataTagMsg(**kwargs)[source]¶
Bases:
Message- Parameters:
type (KMessageTypeDataTag)
resource (KRNAsset)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (DataTagPayload)
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeDataTag('datatag', '')¶
- type: KMessageTypeDataTag¶
- resource: KRNAsset¶
- payload: DataTagPayload¶
- class kelvin.message.KMessageTypeDataTag(msg_type=None, components=None)[source]¶
Bases:
KMessageType
- class kelvin.message.ControlAck(*args, **kwargs)[source]¶
Bases:
MessageBuilderControl Change Ack
- Parameters:
resource (KRNAssetDataStream) – The resource associated with the control change
state (StateEnum) – The state of the control change
message (Optional[str]) – Optional message
before (Optional[ValuePoint]) – Optional value point before the control change
after (Optional[ValuePoint]) – Optional value point after the control change
metadata (Optional[Dict]) – Optional metadata for the control change ack
- resource: KRNAssetDataStream¶
- before: ValuePoint | None = None¶
- after: ValuePoint | None = None¶
- class kelvin.message.AppParameters(*args, **kwargs)[source]¶
Bases:
MessageBuilderParameters Builder. Set application parameters in bulk.
- Parameters:
resource (Optional[KRNAppVersion]) – Optional Kelvin Resource name for the target App Version. Defaults to current app.
parameters (List[AssetParameters]) – list of single asset parameters
- parameters: List[AppParameter]¶
- class kelvin.message.AppParameter(*args, **kwargs)[source]¶
Bases:
objectApp Parameter Helper.
- Parameters:
- resource: KRNAssetParameter¶
- class kelvin.message.CustomActionMsg(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeAction('custom-action-create', '')¶
- type: KMessageTypeAction¶
- payload: CustomActionPayload¶
- class kelvin.message.CustomActionResultMsg(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeActionAck('custom-action-result', '')¶
- type: KMessageTypeActionAck¶
- payload: CustomActionResultPayload¶
- class kelvin.message.CustomAction(*args, **kwargs)[source]¶
Bases:
MessageBuilder[CustomActionMsg]Custom Action Builder. Use this helper class to build a Kelvin custom action.
- Parameters:
resource (KRN) – The kelvin resource targeted by the action, represented by a KRN (usually KRNAssetData)
type (str) – The type of the action
title (str) – The title of the action
description (Optional[str]) – Optional description for the action
expiration_date (Union[datetime, timedelta]) – Expiration date for the action. Provide either a absolute datetime or a timedelta from now
payload (Dict) – Optional payload for the action
trace_id (Optional[str]) – Optional trace ID for the action
custom_action_id (UUID) – Optional UUID to set an specific ID for the control change
- resource: KRN¶
- classmethod from_message(msg)[source]¶
- Return type:
- Parameters:
msg (CustomActionMsg)
- class kelvin.message.CustomActionResult(*args, **kwargs)[source]¶
Bases:
MessageBuilder[CustomActionResultMsg]Custom Action Result Builder. Use this helper class to build a Kelvin custom action ack. :param resource: The kelvin resource targeted by the action, represented by a KRN (usually
KRNAssetDataStream)
- Parameters:
- resource: KRN¶
- classmethod from_message(msg)[source]¶
- Return type:
- Parameters:
msg (CustomActionResultMsg)
- class kelvin.message.RuntimeManifest(**kwargs)[source]¶
Bases:
Message- Parameters:
- TYPE_: ClassVar[KMessageType | None] = KMessageTypeRuntimeManifest('runtime_manifest', '')¶
- type: KMessageTypeRuntimeManifest¶
- payload: RuntimeManifestPayload¶
- class kelvin.message.WayEnum(*values)[source]¶
-
- output = 'output'¶
- input_cc = 'input-cc'¶
- input_cc_output = 'input-cc+output'¶
- input = 'input'¶
- output_cc = 'output-cc'¶
- input_output_cc = 'input+output-cc'¶
- class kelvin.message.AssetDataQualityMessage(**kwargs)[source]¶
Bases:
MessageA message containing data quality information for an asset.
- Parameters:
type (KMessageTypeData)
resource (KRNAssetDataQuality)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (Any)
- type¶
The data message type.
- resource¶
The KRN identifying the asset and data quality metric.
- type: KMessageTypeData¶
- resource: KRNAssetDataQuality¶
- class kelvin.message.AssetDataStreamDataQualityMessage(**kwargs)[source]¶
Bases:
MessageA message containing data quality information for a specific asset datastream.
- Parameters:
type (KMessageTypeData)
resource (KRNAssetDataStreamDataQuality)
id (UUID)
trace_id (str | None)
source (KRN | None)
timestamp (datetime)
payload (Any)
- type¶
The data message type.
- resource¶
The KRN identifying the asset, datastream, and data quality metric.
- type: KMessageTypeData¶
- resource: KRNAssetDataStreamDataQuality¶
Utils¶
Utility functions.