def connect_device(self):
"""
Connects to device using provided connection arguments
Returns: True/False depending on the result of connection
"""
if not self.config:
self.parse_config()
self.client = mqtt.Client(clean_session=True, protocol=mqtt.MQTTv311, userdata=self)
self.client.username_pw_set(self.serial_number, self._hashed_password())
self.client.on_connect = self.on_connect
self.client.on_disconnect = self.on_disconnect
self.client.on_message = self.on_message
self.client.connect(self.ip_address, port=self.port_number)
self.client.loop_start()
try:
if self.connected.get(timeout=self.connectivity_timeout):
self._request_state()
try:
self.state_data = self.state_data_available.get(timeout=5)
self.sensor_data = self.sensor_data_available.get(timeout=5)
# Return True in case of successful connect and data retrieval
return True
except Empty:
self.errors.append(DataRetrieveError())
except Empty:
self.errors.append(ConnectionError(99))
# If any issue occurred return False
self.client = None
return False
评论列表
文章目录