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

Added quality of service(qos) parameter in tb_gateway.yaml qos can be 0 or 1

This commit is contained in:
zbeacon
2020-09-01 15:17:23 +03:00
parent d095cd4b9e
commit 3c5e47050d
3 changed files with 8 additions and 6 deletions

View File

@@ -5,6 +5,7 @@ thingsboard:
remoteConfiguration: false remoteConfiguration: false
security: security:
accessToken: PUT_YOUR_GW_ACCESS_TOKEN_HERE accessToken: PUT_YOUR_GW_ACCESS_TOKEN_HERE
qos: 1
storage: storage:
type: memory type: memory
read_records_count: 100 read_records_count: 100

View File

@@ -30,7 +30,7 @@ class TBClient(threading.Thread):
self.__config = config self.__config = config
self.__host = config["host"] self.__host = config["host"]
self.__port = config.get("port", 1883) self.__port = config.get("port", 1883)
self.__default_quality_of_service = config.get("qos",1) self.__default_quality_of_service = config.get("qos", 1)
credentials = config["security"] credentials = config["security"]
self.__min_reconnect_delay = 1 self.__min_reconnect_delay = 1
self.__tls = bool(credentials.get('tls', False) or credentials.get('caCert', False)) self.__tls = bool(credentials.get('tls', False) or credentials.get('caCert', False))

View File

@@ -235,8 +235,7 @@ class TBDeviceMqttClient:
self._client.reconnect_delay_set(min_delay, max_delay) self._client.reconnect_delay_set(min_delay, max_delay)
def send_rpc_reply(self, req_id, resp, quality_of_service=None, wait_for_publish=False): def send_rpc_reply(self, req_id, resp, quality_of_service=None, wait_for_publish=False):
if quality_of_service is None: quality_of_service = quality_of_service if quality_of_service is not None else self.__default_quality_of_service
quality_of_service = self.__default_quality_of_service
if quality_of_service not in (0, 1): if quality_of_service not in (0, 1):
log.error("Quality of service (qos) value must be 0 or 1") log.error("Quality of service (qos) value must be 0 or 1")
return None return None
@@ -252,7 +251,7 @@ class TBDeviceMqttClient:
payload = {"method": method, "params": params} payload = {"method": method, "params": params}
self._client.publish(RPC_REQUEST_TOPIC + str(rpc_request_id), self._client.publish(RPC_REQUEST_TOPIC + str(rpc_request_id),
dumps(payload), dumps(payload),
qos=1) qos=self.__default_quality_of_service)
def set_server_side_rpc_request_handler(self, handler): def set_server_side_rpc_request_handler(self, handler):
self.__device_on_server_side_rpc_response = handler self.__device_on_server_side_rpc_response = handler
@@ -266,12 +265,14 @@ class TBDeviceMqttClient:
raise TBQoSException("Quality of service (qos) value must be 0 or 1") raise TBQoSException("Quality of service (qos) value must be 0 or 1")
return TBPublishInfo(self._client.publish(topic, data, qos)) return TBPublishInfo(self._client.publish(topic, data, qos))
def send_telemetry(self, telemetry, quality_of_service=1): def send_telemetry(self, telemetry, quality_of_service=None):
quality_of_service = quality_of_service if quality_of_service is not None else self.__default_quality_of_service
if not isinstance(telemetry, list) and not (isinstance(telemetry, dict) and telemetry.get("ts") is not None): if not isinstance(telemetry, list) and not (isinstance(telemetry, dict) and telemetry.get("ts") is not None):
telemetry = [telemetry] telemetry = [telemetry]
return self.publish_data(telemetry, TELEMETRY_TOPIC, quality_of_service) return self.publish_data(telemetry, TELEMETRY_TOPIC, quality_of_service)
def send_attributes(self, attributes, quality_of_service=1): def send_attributes(self, attributes, quality_of_service=None):
quality_of_service = quality_of_service if quality_of_service is not None else self.__default_quality_of_service
return self.publish_data(attributes, ATTRIBUTES_TOPIC, quality_of_service) return self.publish_data(attributes, ATTRIBUTES_TOPIC, quality_of_service)
def unsubscribe_from_attribute(self, subscription_id): def unsubscribe_from_attribute(self, subscription_id):