Skip to content

Commit ce9b285

Browse files
committed
Added metadata to messages
1 parent 325e98a commit ce9b285

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

tb_device_mqtt.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -758,12 +758,12 @@ def __get_rate_limits_by_topic(self, topic, device=None, msg_rate_limit=None, dp
758758

759759
def __send_publish_with_limitations(self, kwargs, timeout, device=None, msg_rate_limit: RateLimit = None,
760760
dp_rate_limit: RateLimit = None):
761-
data_for_analysis = data = kwargs.get("payload")
761+
data = kwargs.get("payload")
762762
if isinstance(data, str):
763-
data_for_analysis = loads(data)
763+
data = loads(data)
764764
datapoints = -1
765765
if dp_rate_limit.has_limit():
766-
datapoints = self._count_datapoints_in_message(data_for_analysis, device=device)
766+
datapoints = self._count_datapoints_in_message(data, device=device)
767767
payload = data
768768
if dp_rate_limit.has_limit() and datapoints >= 0 and dp_rate_limit.get_minimal_limit() < datapoints:
769769
log.debug("Rate limit is too low, cannot send message with %i datapoints, "
@@ -779,10 +779,12 @@ def __send_publish_with_limitations(self, kwargs, timeout, device=None, msg_rate
779779
device_split_messages = self._split_message(device_data, dp_rate_limit.get_minimal_limit(),
780780
self.max_payload_size)
781781
split_messages = [
782-
{'message': {device: [split_message['data']]}, 'datapoints': split_message['datapoints']}
783-
for split_message in device_split_messages]
782+
{'message': {device: [split_message['data']]}, 'datapoints': split_message['datapoints'],
783+
'metadata': split_message.get('metadata')} for split_message in device_split_messages]
784+
784785
if len(split_messages) == 0:
785786
log.debug("Cannot split message to smaller parts!")
787+
786788
results = []
787789
for part in split_messages:
788790
dp_rate_limit.increase_rate_limit_counter(part['datapoints'])
@@ -1036,6 +1038,7 @@ def _split_message(message_pack, max_size, max_payload_size):
10361038
values = message.get("values")
10371039
else:
10381040
values = message
1041+
10391042
values_data_keys = tuple(values.keys())
10401043
if len(values_data_keys) == 1:
10411044
if ts is not None:
@@ -1065,7 +1068,8 @@ def _split_message(message_pack, max_size, max_payload_size):
10651068
or current_data_key_index == len(values_data_keys) - 1) or len(
10661069
str(message_item_values_with_allowed_size)) >= max_payload_size:
10671070
if ts is not None:
1068-
final_message_item['data'] = {"ts": ts, "values": message_item_values_with_allowed_size}
1071+
final_message_item['data'] = {"ts": ts, "values": message_item_values_with_allowed_size,
1072+
'metadata': message.get('metadata')}
10691073
else:
10701074
final_message_item['data'] = message_item_values_with_allowed_size
10711075
final_message_item['datapoints'] = len(message_item_values_with_allowed_size)

0 commit comments

Comments
 (0)