1
0
mirror of https://github.com/thingsboard/thingsboard-gateway synced 2025-10-26 22:31:42 +08:00

Added ability to use timestamp from devices message (if "ts" found in converter output dictionary.)

To use this feature, converted data structure must be like:
{
  "deviceName": "Device",
  "deviceType": "default",
  "attributes": [],
  "telemetry": {
    "ts": 1580214207748,
    "values": {
      "telemetry1": 400,
      "telemetry2": 200
    }
  }
}
This commit is contained in:
zbeacon
2020-01-28 14:30:36 +02:00
parent d4a6cdb65e
commit 95c1c0c2af
2 changed files with 15 additions and 3 deletions

View File

@@ -262,9 +262,16 @@ class TBGatewayService:
self.__connector_incoming_messages[connector_name] += 1 self.__connector_incoming_messages[connector_name] += 1
telemetry = {} telemetry = {}
telemetry_with_ts = []
for item in data["telemetry"]: for item in data["telemetry"]:
telemetry = {**telemetry, **item} if item.get("ts") is None:
data["telemetry"] = {"ts": int(time.time() * 1000), "values": telemetry} 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) json_data = dumps(data)
save_result = self._event_storage.put(json_data) save_result = self._event_storage.put(json_data)

View File

@@ -108,12 +108,17 @@ class TBUtility:
full_value = None full_value = None
try: try:
if value_type == "string": 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: if full_value is None:
try: try:
full_value = search(expression, body).group(0) full_value = search(expression, body).group(0)
except Exception as e: except Exception as e:
full_value = None full_value = None
if full_value is None:
full_value = expression
else: else:
try: try:
full_value = body.get(target_str.split()[0]) full_value = body.get(target_str.split()[0])