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

Improvement for connection

This commit is contained in:
imbeacon
2024-02-29 15:33:37 +02:00
parent f2af60a141
commit 7d15213bd2
2 changed files with 26 additions and 21 deletions

View File

@@ -31,6 +31,8 @@ except ImportError:
TBUtility.install_package('tb-mqtt-client')
from tb_gateway_mqtt import TBGatewayMqttClient, TBDeviceMqttClient
import tb_device_mqtt
tb_device_mqtt.DEFAULT_TIMEOUT = 1
class TBClient(threading.Thread):
def __init__(self, config, config_folder_path, logger):

View File

@@ -175,11 +175,10 @@ class TBGatewayService:
]
def __init__(self, config_file=None):
self.__subscribed_to_rpc_topics = False
self.__init_variables()
if current_thread() is main_thread():
signal(SIGINT, lambda _, __: self.__stop_gateway())
self.stopped = False
self.__lock = RLock()
self.async_device_actions = {
DeviceActions.CONNECT: self.add_device,
@@ -242,7 +241,6 @@ class TBGatewayService:
self.tb_client.client.send_telemetry({"ts": time() * 1000, "values": {
"LOGS": "Logging loading exception, logs.json is wrong: %s" % (str(logging_error),)}})
TBLoggerHandler.set_default_handler()
self.__rpc_reply_sent = False
self.remote_handler = TBLoggerHandler(self)
log.addHandler(self.remote_handler)
# self.main_handler.setTarget(self.remote_handler)
@@ -267,10 +265,8 @@ class TBGatewayService:
"device_deleted": self.__process_deleted_gateway_devices,
}
self.__remote_shell = None
self.init_remote_shell(self.__config["thingsboard"].get("remoteShell"))
self.__rpc_remote_shell_command_in_progress = None
self.__scheduled_rpc_calls = []
self.__rpc_processing_queue = SimpleQueue()
self.__rpc_scheduled_methods_functions = {
@@ -282,18 +278,9 @@ class TBGatewayService:
self.__rpc_processing_thread.start()
self._event_storage = self._event_storage_types[self.__config["storage"]["type"]](self.__config["storage"])
self.connectors_configs = {}
self.__remote_configurator = None
self.__request_config_after_connect = False
self.__grpc_config = None
self.__grpc_connectors = None
self.__grpc_manager = None
self.init_grpc_service(self.__config.get('grpc'))
self._load_connectors()
self.__connect_with_connectors()
self.__load_persistent_devices()
self.__devices_idle_checker = self.__config['thingsboard'].get('checkingDeviceActivity', {})
self.__check_devices_idle = self.__devices_idle_checker.get('checkDeviceInactivity', False)
if self.__check_devices_idle:
@@ -301,8 +288,6 @@ class TBGatewayService:
thread.start()
log.info('Start checking devices idle time')
self.__statistics = None
self.__statistics_service = None
self.init_statistics_service(self.__config['thingsboard'].get('statistics', DEFAULT_STATISTIC))
self._published_events = SimpleQueue()
@@ -315,20 +300,21 @@ class TBGatewayService:
name="Send data to Thingsboard Thread")
self._send_thread.start()
self.__device_filter_config = None
self.__device_filter = None
self.__grpc_manager = None
self.init_device_filtering(self.__config['thingsboard'].get('deviceFiltering', DEFAULT_DEVICE_FILTER))
self.__duplicate_detector = DuplicateDetector(self.available_connectors_by_name)
self.__init_remote_configuration()
log.info("Gateway started.")
self._watchers_thread = Thread(target=self._watchers, name='Watchers', daemon=True)
self._watchers_thread.start()
self._load_connectors()
self.__connect_with_connectors()
self.__load_persistent_devices()
self.__init_remote_configuration()
if path.exists('/tmp/gateway'):
try:
# deleting old manager if it was closed incorrectly
@@ -350,6 +336,23 @@ class TBGatewayService:
self.server = self.manager.get_server()
self.server.serve_forever()
def __init_variables(self):
self.stopped = False
self.__device_filter_config = None
self.__device_filter = None
self.__grpc_manager = None
self.__remote_shell = None
self.__statistics = None
self.__statistics_service = None
self.__grpc_config = None
self.__grpc_connectors = None
self.__grpc_manager = None
self.__remote_configurator = None
self.__request_config_after_connect = False
self.__rpc_reply_sent = False
self.__subscribed_to_rpc_topics = False
self.__rpc_remote_shell_command_in_progress = None
@staticmethod
def __load_general_config(config_file):
file_extension = config_file.split('.')[-1]