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

Further fix for #692

This commit is contained in:
Jeffrey Lau
2022-01-24 17:02:23 +08:00
parent 9e492ff382
commit 146b717103
2 changed files with 33 additions and 18 deletions

View File

@@ -546,6 +546,7 @@ class TBGatewayService:
self.__connector_incoming_messages[connector_name] += 1
else:
data["deviceName"] = "currentThingsBoardGateway"
data['deviceType'] = "gateway"
data = self.__convert_telemetry_to_ts(data)
@@ -555,25 +556,27 @@ class TBGatewayService:
"deviceType": data['deviceType'],
"attributes": {},
"telemetry": []}
for attribute in data['attributes']:
adopted_data_size = self.__get_data_size(adopted_data)
if adopted_data_size >= max_data_size:
self.__send_data_pack_to_storage(adopted_data, connector_name)
adopted_data['attributes'] = {}
adopted_data['attributes'].update({attribute: data['attributes'][attribute]})
for ts_kv_list in data['telemetry']:
ts = ts_kv_list['ts']
for kv in ts_kv_list['values']:
if 'attributes' in data:
for attribute in data['attributes']:
adopted_data_size = self.__get_data_size(adopted_data)
if adopted_data_size >= max_data_size:
self.__send_data_pack_to_storage(adopted_data, connector_name)
adopted_data['telemetry'] = []
if len(adopted_data['telemetry']) == 0:
adopted_data['telemetry'] = [{'ts': ts, 'values': {kv: ts_kv_list['values'][kv]}}]
else:
for adopted_kv in adopted_data['telemetry']:
if adopted_kv['ts'] == ts:
adopted_kv['values'].update({kv: ts_kv_list['values'][kv]})
adopted_data['attributes'] = {}
adopted_data['attributes'].update({attribute: data['attributes'][attribute]})
if 'telemetry' in data:
for ts_kv_list in data['telemetry']:
ts = ts_kv_list['ts']
for kv in ts_kv_list['values']:
adopted_data_size = self.__get_data_size(adopted_data)
if adopted_data_size >= max_data_size:
self.__send_data_pack_to_storage(adopted_data, connector_name)
adopted_data['telemetry'] = []
if len(adopted_data['telemetry']) == 0:
adopted_data['telemetry'] = [{'ts': ts, 'values': {kv: ts_kv_list['values'][kv]}}]
else:
for adopted_kv in adopted_data['telemetry']:
if adopted_kv['ts'] == ts:
adopted_kv['values'].update({kv: ts_kv_list['values'][kv]})
else:
self.__send_data_pack_to_storage(data, connector_name)

View File

@@ -16,7 +16,7 @@ from base64 import b64decode, b64encode
from configparser import ConfigParser
from logging import getLogger
from logging.config import fileConfig
from os import linesep, remove
from os import linesep, remove, stat
from os.path import dirname, exists
from re import findall
from time import sleep, time
@@ -60,6 +60,12 @@ class RemoteConfigurator:
self.__new_configuration = loads(decoded_configuration)
self.__old_connectors_configs = self.__gateway.connectors_configs
self.__new_general_configuration_file = self.__new_configuration.get("thingsboard")
# To maintain RemoteShell status
old_general_configuration = loads(b64decode(self.__old_configuration))
if old_general_configuration.get("thingsboard").get("thingsboard").get("remoteShell"):
self.__new_configuration["thingsboard"]["thingsboard"]["remoteShell"] = True
self.__new_logs_configuration = b64decode(self.__new_general_configuration_file.pop("logs")).decode('UTF-8').replace('}}', '\n')
if self.__old_configuration != decoded_configuration:
LOG.info("Remote configuration received: \n %s", decoded_configuration)
@@ -136,8 +142,14 @@ class RemoteConfigurator:
if input_connector['name'] == connector['name']:
if not self.__gateway.connectors_configs.get(connector['type']):
self.__gateway.connectors_configs[connector['type']] = []
config_file_path = self.__gateway._config_dir + connector['configuration']
# Create the configuration json file if not exists
open(config_file_path, 'w')
self.__gateway.connectors_configs[connector['type']].append(
{"name": connector["name"], "config": {connector['configuration']: input_connector["config"]}})
{"name": connector["name"],
"config": {connector['configuration']: input_connector["config"]},
"config_updated": stat(config_file_path),
"config_file_path": config_file_path})
connector_class = TBModuleLoader.import_module(connector["type"],
self.__gateway._default_connectors.get(connector["type"], connector.get("class")))
self.__gateway._implemented_connectors[connector["type"]] = connector_class