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
security:
accessToken: PUT_YOUR_GW_ACCESS_TOKEN_HERE
qos: 1
storage:
type: memory
read_records_count: 100

View File

@@ -30,7 +30,7 @@ class TBClient(threading.Thread):
self.__config = config
self.__host = config["host"]
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"]
self.__min_reconnect_delay = 1
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)
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 = self.__default_quality_of_service
quality_of_service = quality_of_service if quality_of_service is not None else self.__default_quality_of_service
if quality_of_service not in (0, 1):
log.error("Quality of service (qos) value must be 0 or 1")
return None
@@ -252,7 +251,7 @@ class TBDeviceMqttClient:
payload = {"method": method, "params": params}
self._client.publish(RPC_REQUEST_TOPIC + str(rpc_request_id),
dumps(payload),
qos=1)
qos=self.__default_quality_of_service)
def set_server_side_rpc_request_handler(self, 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")
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):
telemetry = [telemetry]
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)
def unsubscribe_from_attribute(self, subscription_id):