diff --git a/thingsboard_gateway/gateway/tb_gateway_service.py b/thingsboard_gateway/gateway/tb_gateway_service.py index 63ff5d96..a7807ab6 100644 --- a/thingsboard_gateway/gateway/tb_gateway_service.py +++ b/thingsboard_gateway/gateway/tb_gateway_service.py @@ -262,9 +262,16 @@ class TBGatewayService: self.__connector_incoming_messages[connector_name] += 1 telemetry = {} + telemetry_with_ts = [] for item in data["telemetry"]: - telemetry = {**telemetry, **item} - data["telemetry"] = {"ts": int(time.time() * 1000), "values": telemetry} + if item.get("ts") is None: + telemetry = {**telemetry, **item} + else: + telemetry_with_ts.append({"ts": item["ts"], "values": {**item["values"]}}) + if telemetry_with_ts: + data["telemetry"] = telemetry_with_ts + else: + data["telemetry"] = {"ts": int(time.time() * 1000), "values": telemetry} json_data = dumps(data) save_result = self._event_storage.put(json_data) diff --git a/thingsboard_gateway/tb_utility/tb_utility.py b/thingsboard_gateway/tb_utility/tb_utility.py index d98ad773..8ea66b9d 100644 --- a/thingsboard_gateway/tb_utility/tb_utility.py +++ b/thingsboard_gateway/tb_utility/tb_utility.py @@ -108,12 +108,17 @@ class TBUtility: full_value = None try: if value_type == "string": - full_value = expression[0: min(abs(p1 - 2), 0)] + body[target_str.split()[0]] + expression[p2 + 1:len(expression)] + try: + full_value = expression[0: min(abs(p1 - 2), 0)] + body[target_str.split()[0]] + expression[p2 + 1:len(expression)] + except KeyError: + pass if full_value is None: try: full_value = search(expression, body).group(0) except Exception as e: full_value = None + if full_value is None: + full_value = expression else: try: full_value = body.get(target_str.split()[0])