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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user