diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 09655ababda..5898b1918a2 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -10,6 +10,7 @@ import os import ssl import time from typing import Any, Callable, List, Optional, Union +import uuid import attr import certifi @@ -711,9 +712,10 @@ class MQTT: client_id = self.conf.get(CONF_CLIENT_ID) if client_id is None: - self._mqttc = mqtt.Client(protocol=proto) - else: - self._mqttc = mqtt.Client(client_id, protocol=proto) + # PAHO MQTT relies on the MQTT server to generate random client IDs. + # However, that feature is not mandatory so we generate our own. + client_id = mqtt.base62(uuid.uuid4().int, padding=22) + self._mqttc = mqtt.Client(client_id, protocol=proto) # Enable logging self._mqttc.enable_logger()