From ad80d3db908898c36ac910e2370184f947636e67 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 26 Jan 2025 18:37:31 +0000 Subject: [PATCH 1/9] Remove hard-coded device ip --- examples/upgrade.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/upgrade.py b/examples/upgrade.py index 095050f3..f23f335c 100644 --- a/examples/upgrade.py +++ b/examples/upgrade.py @@ -2,6 +2,7 @@ """Asynchronous Python client for WLED.""" import asyncio +import sys from wled import WLED, WLEDReleases @@ -17,7 +18,7 @@ async def main() -> None: print("No stable version found") return - async with WLED("10.10.11.54") as led: + async with WLED(sys.argv[1]) as led: device = await led.update() print(f"Current version: {device.info.version}") From 64f892fd527e2b6a9650ecf0bbdf1417c2ca778d Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 26 Jan 2025 19:10:06 +0000 Subject: [PATCH 2/9] Use release name to define bin name, where provided --- src/wled/models.py | 3 +++ src/wled/wled.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/wled/models.py b/src/wled/models.py index 7acea0f2..689fc35b 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -425,6 +425,9 @@ 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 releae name, e.g ESP32_Ethernet, ESP8266_160""" + 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..bcf2e389 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -635,11 +635,16 @@ 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}" + else: + update_file = f"WLED_{version}_{architecture}{ethernet}.bin{gzip}" + download_url = ( "https://github.com/Aircoookie/WLED/releases/download" f"/v{version}/{update_file}" ) + msg(f"Downloading {download_url} to {url}") try: async with ( From d0352a619cf99a8a601d15d391c8fb53c31cdc21 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 26 Jan 2025 19:11:38 +0000 Subject: [PATCH 3/9] Remove debug --- src/wled/wled.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/wled/wled.py b/src/wled/wled.py index bcf2e389..3e2fb344 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -644,7 +644,6 @@ async def upgrade(self, *, version: str | AwesomeVersion) -> None: "https://github.com/Aircoookie/WLED/releases/download" f"/v{version}/{update_file}" ) - msg(f"Downloading {download_url} to {url}") try: async with ( From 913ebc83f778f300a1ed9763df7eeae4d6bbfa6d Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 16 Feb 2025 11:48:33 +0000 Subject: [PATCH 4/9] Apply coderabbit suggestions --- examples/upgrade.py | 4 ++++ src/wled/models.py | 7 +++++++ src/wled/wled.py | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/examples/upgrade.py b/examples/upgrade.py index f23f335c..7ec02ee2 100644 --- a/examples/upgrade.py +++ b/examples/upgrade.py @@ -8,6 +8,10 @@ async def main() -> None: + if len(sys.argv) < 2: + print("Usage: python upgrade.py ") + sys.exit(1) + """Show example on upgrade your WLED device.""" async with WLEDReleases() as releases: latest = await releases.releases() diff --git a/src/wled/models.py b/src/wled/models.py index 689fc35b..6c563c28 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -427,6 +427,13 @@ class Info(BaseModel): # pylint: disable=too-many-instance-attributes release: str | None = None """The releae name, e.g ESP32_Ethernet, ESP8266_160""" + """The release name of the WLED device. + + 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 3e2fb344..179f139b 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -635,7 +635,7 @@ 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() - if(self._device.info.release is not None): + if self._device.info.release is not None: update_file = f"{self._device.info.brand}_{version}_{self._device.info.release}.bin{gzip}" else: update_file = f"WLED_{version}_{architecture}{ethernet}.bin{gzip}" From ccedaf96a816de030919351dd3699a1b23dc025a Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Fri, 21 Feb 2025 09:49:13 +0000 Subject: [PATCH 5/9] Code cleanup --- src/wled/models.py | 3 +-- src/wled/wled.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/wled/models.py b/src/wled/models.py index 6c563c28..c3378621 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -426,8 +426,7 @@ class Info(BaseModel): # pylint: disable=too-many-instance-attributes """The producer/vendor of the light. Always WLED for standard installations.""" release: str | None = None - """The releae name, e.g ESP32_Ethernet, ESP8266_160""" - """The release name of the WLED device. + """The release name of the WLED device firmware. Examples: - ESP32_Ethernet diff --git a/src/wled/wled.py b/src/wled/wled.py index 179f139b..688befc1 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -635,10 +635,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}" - else: - update_file = f"WLED_{version}_{architecture}{ethernet}.bin{gzip}" download_url = ( "https://github.com/Aircoookie/WLED/releases/download" From 436f1ee2f939c2084b0ab6a8dcb363de1a5ad293 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 23 Feb 2025 20:59:48 +0000 Subject: [PATCH 6/9] Include filename in error so clearer why update failes when specific release type is needed --- src/wled/wled.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wled/wled.py b/src/wled/wled.py index 688befc1..40ee75a0 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -662,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}'" From 9b938e10e2c08593c48b3825e17f3111e70f93b4 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 26 Jul 2025 20:36:01 +0100 Subject: [PATCH 7/9] Revert "Remove hard-coded device ip" This reverts commit ad80d3db908898c36ac910e2370184f947636e67. --- examples/upgrade.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/upgrade.py b/examples/upgrade.py index 7ec02ee2..0674b375 100644 --- a/examples/upgrade.py +++ b/examples/upgrade.py @@ -2,7 +2,6 @@ """Asynchronous Python client for WLED.""" import asyncio -import sys from wled import WLED, WLEDReleases @@ -22,7 +21,7 @@ async def main() -> None: print("No stable version found") return - async with WLED(sys.argv[1]) as led: + async with WLED("10.10.11.54") as led: device = await led.update() print(f"Current version: {device.info.version}") From 6a421754a162c4c46170625084f6d792c64e1c32 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 26 Jul 2025 20:40:55 +0100 Subject: [PATCH 8/9] Revert "Remove hard-coded device ip" --- examples/upgrade.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/examples/upgrade.py b/examples/upgrade.py index 0674b375..1f5e02ef 100644 --- a/examples/upgrade.py +++ b/examples/upgrade.py @@ -7,9 +7,6 @@ async def main() -> None: - if len(sys.argv) < 2: - print("Usage: python upgrade.py ") - sys.exit(1) """Show example on upgrade your WLED device.""" async with WLEDReleases() as releases: From 43788964b047fdad0e55bc5e2a5c262348aebd16 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 26 Jul 2025 20:41:31 +0100 Subject: [PATCH 9/9] Revert "Remove hard-coded device ip" --- examples/upgrade.py | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/upgrade.py b/examples/upgrade.py index 1f5e02ef..095050f3 100644 --- a/examples/upgrade.py +++ b/examples/upgrade.py @@ -7,7 +7,6 @@ async def main() -> None: - """Show example on upgrade your WLED device.""" async with WLEDReleases() as releases: latest = await releases.releases()