mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 17:27:10 +00:00
KNX: Provide project data and parser version via websocket (#100676)
* feat(knxproject-explore): providing knxproject via websocket, also xknxproject version in info mesage * feat(knxproject-explore): adding test case * reverted back adding of xknxproject version * fix(): Enriching get project test case to check against FIXTURE * feat(knxproject-explore): providing knxproject via websocket, also xknxproject version in info mesage * feat(knxproject-explore): adding test case * reverted back adding of xknxproject version * fix(): Enriching get project test case to check against FIXTURE
This commit is contained in:
parent
176f5dc2d6
commit
f899e5159b
@ -115,3 +115,7 @@ class KNXProject:
|
|||||||
"""Remove project file from storage."""
|
"""Remove project file from storage."""
|
||||||
await self._store.async_remove()
|
await self._store.async_remove()
|
||||||
self.initial_state()
|
self.initial_state()
|
||||||
|
|
||||||
|
async def get_knxproject(self) -> KNXProjectModel | None:
|
||||||
|
"""Load the project file from local storage."""
|
||||||
|
return await self._store.async_load()
|
||||||
|
@ -27,6 +27,7 @@ async def register_panel(hass: HomeAssistant) -> None:
|
|||||||
websocket_api.async_register_command(hass, ws_project_file_remove)
|
websocket_api.async_register_command(hass, ws_project_file_remove)
|
||||||
websocket_api.async_register_command(hass, ws_group_monitor_info)
|
websocket_api.async_register_command(hass, ws_group_monitor_info)
|
||||||
websocket_api.async_register_command(hass, ws_subscribe_telegram)
|
websocket_api.async_register_command(hass, ws_subscribe_telegram)
|
||||||
|
websocket_api.async_register_command(hass, ws_get_knx_project)
|
||||||
|
|
||||||
if DOMAIN not in hass.data.get("frontend_panels", {}):
|
if DOMAIN not in hass.data.get("frontend_panels", {}):
|
||||||
hass.http.register_static_path(
|
hass.http.register_static_path(
|
||||||
@ -67,6 +68,7 @@ def ws_info(
|
|||||||
"name": project_info["name"],
|
"name": project_info["name"],
|
||||||
"last_modified": project_info["last_modified"],
|
"last_modified": project_info["last_modified"],
|
||||||
"tool_version": project_info["tool_version"],
|
"tool_version": project_info["tool_version"],
|
||||||
|
"xknxproject_version": project_info["xknxproject_version"],
|
||||||
}
|
}
|
||||||
|
|
||||||
connection.send_result(
|
connection.send_result(
|
||||||
@ -80,6 +82,30 @@ def ws_info(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@websocket_api.require_admin
|
||||||
|
@websocket_api.websocket_command(
|
||||||
|
{
|
||||||
|
vol.Required("type"): "knx/get_knx_project",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@websocket_api.async_response
|
||||||
|
async def ws_get_knx_project(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict,
|
||||||
|
) -> None:
|
||||||
|
"""Handle get KNX project."""
|
||||||
|
knx: KNXModule = hass.data[DOMAIN]
|
||||||
|
knxproject = await knx.project.get_knxproject()
|
||||||
|
connection.send_result(
|
||||||
|
msg["id"],
|
||||||
|
{
|
||||||
|
"project_loaded": knx.project.loaded,
|
||||||
|
"knxproject": knxproject,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.require_admin
|
@websocket_api.require_admin
|
||||||
@websocket_api.websocket_command(
|
@websocket_api.websocket_command(
|
||||||
{
|
{
|
||||||
|
@ -138,6 +138,24 @@ async def test_knx_project_file_remove(
|
|||||||
assert not hass.data[DOMAIN].project.loaded
|
assert not hass.data[DOMAIN].project.loaded
|
||||||
|
|
||||||
|
|
||||||
|
async def test_knx_get_project(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
knx: KNXTestKit,
|
||||||
|
hass_ws_client: WebSocketGenerator,
|
||||||
|
load_knxproj: None,
|
||||||
|
):
|
||||||
|
"""Test retrieval of kxnproject from store."""
|
||||||
|
await knx.setup_integration({})
|
||||||
|
client = await hass_ws_client(hass)
|
||||||
|
assert hass.data[DOMAIN].project.loaded
|
||||||
|
|
||||||
|
await client.send_json({"id": 3, "type": "knx/get_knx_project"})
|
||||||
|
res = await client.receive_json()
|
||||||
|
assert res["success"], res
|
||||||
|
assert res["result"]["project_loaded"] is True
|
||||||
|
assert res["result"]["knxproject"] == FIXTURE_PROJECT_DATA
|
||||||
|
|
||||||
|
|
||||||
async def test_knx_group_monitor_info_command(
|
async def test_knx_group_monitor_info_command(
|
||||||
hass: HomeAssistant, knx: KNXTestKit, hass_ws_client: WebSocketGenerator
|
hass: HomeAssistant, knx: KNXTestKit, hass_ws_client: WebSocketGenerator
|
||||||
):
|
):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user