diff --git a/src/wled/models.py b/src/wled/models.py index 15e02908..f43608c4 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -425,6 +425,15 @@ class Info(BaseModel): # pylint: disable=too-many-instance-attributes brand: str = "WLED" """The producer/vendor of the light. Always WLED for standard installations.""" + release: str | None = None + """The release name of the WLED device firmware. + + Examples: + - ESP32_Ethernet + - ESP8266_160 + - ESP8266_compat + """ + build: str = field(default="Unknown", metadata=field_options(alias="vid")) """Build ID (YYMMDDB, B = daily build index).""" diff --git a/src/wled/wled.py b/src/wled/wled.py index aa3b53d2..40ee75a0 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -636,6 +636,9 @@ async def upgrade(self, *, version: str | AwesomeVersion) -> None: url = URL.build(scheme="http", host=self.host, port=80, path="/update") architecture = self._device.info.architecture.upper() update_file = f"WLED_{version}_{architecture}{ethernet}.bin{gzip}" + if self._device.info.release is not None: + update_file = f"{self._device.info.brand}_{version}_{self._device.info.release}.bin{gzip}" + download_url = ( "https://github.com/Aircoookie/WLED/releases/download" f"/v{version}/{update_file}" @@ -659,7 +662,7 @@ async def upgrade(self, *, version: str | AwesomeVersion) -> None: raise WLEDConnectionTimeoutError(msg) from exception except aiohttp.ClientResponseError as exception: if exception.status == 404: - msg = f"Requested WLED version '{version}' does not exists" + msg = f"Requested file {update_file} does not exists" raise WLEDUpgradeError(msg) from exception msg = ( f"Could not download requested WLED version '{version}'"