Compare commits

...

6 Commits

Author SHA1 Message Date
Lukas Svoboda a6cb121b4a
Bump version from 1.8.1 to 1.8.2 2026-02-26 19:38:03 +01:00
SchiZzA 048bd6bd4c
Fix Windy credential validation for None/blank options
Normalize Windy station ID and password from config options and require both values before enabling Windy resend.
2026-02-26 19:33:36 +01:00
Lukas Svoboda 3822557f74
Merge pull request #96 from schizza/fix/push_data_not_accepted
Added support for POST and GET methods in WSLink.
2026-02-26 19:07:16 +01:00
SchiZzA 96094105e0
Added support for POST and GET methods in WSLink.
Some stations sending data in POST method and some in GET method.
We now support both variants.
2026-02-26 18:09:52 +01:00
SchiZzA 6b8fdd5477
Accept push data for WSLink. 2026-02-25 08:30:55 +01:00
SchiZzA b0bae69f33
Update version. 2026-02-23 18:41:58 +01:00
3 changed files with 30 additions and 9 deletions

View File

@ -56,10 +56,13 @@ class WeatherDataUpdateCoordinator(DataUpdateCoordinator):
self.pocasi: PocasiPush = PocasiPush(hass, config)
super().__init__(hass, _LOGGER, name=DOMAIN)
async def recieved_data(self, webdata):
async def recieved_data(self, webdata: aiohttp.web.Request):
"""Handle incoming data query."""
_wslink = self.config_entry.options.get(WSLINK)
data = webdata.query
get_data = webdata.query
post_data = await webdata.post()
data = dict(get_data) | dict(post_data)
response = None
@ -160,7 +163,7 @@ def register_path(
if debug:
_LOGGER.debug("Default route: %s", default_route)
wslink_route = hass.http.app.router.add_post(
wslink_route = hass.http.app.router.add_get(
WSLINK_URL,
coordinator.recieved_data if _wslink else unregistred,
name="weather_wslink_url",
@ -168,6 +171,14 @@ def register_path(
if debug:
_LOGGER.debug("WSLink route: %s", wslink_route)
wslink_post_route = hass.http.app.router.add_post(
WSLINK_URL,
coordinator.recieved_data if _wslink else unregistred,
name="weather_wslink_post_route_url",
)
if debug:
_LOGGER.debug("WSLink route: %s", wslink_post_route)
routes.add_route(
DEFAULT_URL,
default_route,
@ -178,6 +189,10 @@ def register_path(
WSLINK_URL, wslink_route, coordinator.recieved_data, _wslink
)
routes.add_route(
WSLINK_URL, wslink_post_route, coordinator.recieved_data, _wslink
)
hass_data["routes"] = routes
except RuntimeError as Ex: # pylint: disable=(broad-except)

View File

@ -1,15 +1,19 @@
{
"domain": "sws12500",
"name": "Sencor SWS 12500 Weather Station",
"codeowners": ["@schizza"],
"codeowners": [
"@schizza"
],
"config_flow": true,
"dependencies": ["http"],
"dependencies": [
"http"
],
"documentation": "https://github.com/schizza/SWS-12500-custom-component",
"homekit": {},
"iot_class": "local_push",
"issue_tracker": "https://github.com/schizza/SWS-12500-custom-component/issues",
"requirements": [],
"ssdp": [],
"version": "1.6.9",
"version": "1.8.2",
"zeroconf": []
}

View File

@ -139,10 +139,12 @@ class WindyPush:
if "t1solrad" in purged_data:
purged_data["solarradiation"] = purged_data.pop("t1solrad")
windy_station_id = self.config.options.get(WINDY_STATION_ID, "")
windy_station_pw = self.config.options.get(WINDY_STATION_PW, "")
windy_station_id = (self.config.options.get(WINDY_STATION_ID) or "").strip()
windy_station_pw = (self.config.options.get(WINDY_STATION_PW) or "").strip()
if windy_station_id == "" or windy_station_pw == "":
# Both values are required. Options can sometimes be None, so normalize to
# empty string and strip whitespace before validating.
if not windy_station_id or not windy_station_pw:
_LOGGER.error(
"Windy ID or PASSWORD is not set correctly. Please reconfigure your WINDY resend credentials. Disabling WINDY resend for now!"
)