Xiaomi Home Integration for Home Assistant
This report summarizes scanner evidence for XiaoMi/ha_xiaomi_home, a Python project with 22,178 GitHub stars. SynthScan examined 33,839 lines of code across 97 source files, recording 267 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 12.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 145 finding(s).
Are imports declared and package/API names verified? 19 finding(s).
Are wrappers, guards, and repeated structures necessary? 200 finding(s).
Which changes need focused human review? 267 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 267 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | custom_components/xiaomi_home/event.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/cover.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/sensor.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/fan.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/light.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/number.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/humidifier.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/media_player.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/__init__.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/notify.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/vacuum.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/switch.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/button.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/text.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/binary_sensor.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/select.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/water_heater.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/climate.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/device_tracker.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/config_flow.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_mips.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_network.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_lan.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_storage.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_i18n.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_client.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_device.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/common.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/web_pages.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_error.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_mdns.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/const.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_spec.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | custom_components/xiaomi_home/miot/miot_cloud.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| HIGH | …stom_components/xiaomi_home/miot/specs/specv2entity.py | 0 | copyright (c) 2024 xiaomi corporation. the ownership and intellectual property rights of xiaomi home assistant integrati | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_spec.py | 59 | async def test_spec_random_parse_async(test_cache_path, test_lang): | CODE |
| LOW | test/test_storage.py | 94 | async def test_multi_task_load_async(test_cache_path): | CODE |
| LOW | test/test_storage.py | 115 | async def test_file_save_load_async(test_cache_path): | CODE |
| LOW | test/test_network.py | 13 | async def test_network_monitor_loop_async(): | CODE |
| LOW | test/test_network.py | 17 | async def on_network_status_changed(status: bool): | CODE |
| LOW | test/test_mips.py | 81 | async def on_mips_state_changed_async(key: str, state: bool): | CODE |
| LOW | test/test_mips.py | 84 | async def on_dev_list_changed_async( | CODE |
| LOW | test/test_mips.py | 193 | async def on_mips_state_changed_async(key: str, state: bool): | CODE |
| LOW | test/test_cloud.py | 86 | async def test_miot_oauth_refresh_token( | CODE |
| LOW | test/test_cloud.py | 138 | async def test_miot_cloud_get_nickname_async( | CODE |
| LOW | test/test_cloud.py | 167 | async def test_miot_cloud_get_uid_async( | CODE |
| LOW | test/test_cloud.py | 199 | async def test_miot_cloud_get_homeinfos_async( | CODE |
| LOW | test/test_cloud.py | 245 | async def test_miot_cloud_get_devices_async( | CODE |
| LOW | test/test_cloud.py | 297 | async def test_miot_cloud_get_devices_with_dids_async( | CODE |
| LOW | test/test_cloud.py | 418 | async def test_miot_cloud_get_prop_async( | CODE |
| LOW | test/test_cloud.py | 455 | async def test_miot_cloud_get_props_async( | CODE |
| LOW | test/test_cloud.py | 494 | async def test_miot_cloud_set_prop_async( | CODE |
| LOW | test/test_cloud.py | 545 | async def test_miot_cloud_action_async( | CODE |
| LOW | custom_components/xiaomi_home/cover.py | 214 | def _position_changed_handler(self, prop: MIoTSpecProperty, | CODE |
| LOW | custom_components/xiaomi_home/media_player.py | 270 | async def async_media_previous_track(self) -> None: | CODE |
| LOW | custom_components/xiaomi_home/__init__.py | 87 | def migrate_service_unique_id( | CODE |
| LOW | custom_components/xiaomi_home/__init__.py | 396 | async def async_remove_config_entry_device( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 319 | async def async_step_network_detect_config( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 399 | async def __show_network_detect_config_form(self, reason: str): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 754 | async def async_step_advanced_options( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 803 | async def async_step_devices_filter( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 880 | async def __show_devices_filter_form(self, reason: str): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1326 | async def async_step_config_options(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1423 | async def async_step_update_user_info(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1561 | async def async_step_devices_filter( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1627 | async def __show_devices_filter_form(self, reason: str): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1724 | async def update_devices_done_async(self): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1740 | async def async_step_update_trans_rules(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1776 | async def async_step_update_lan_ctrl_config(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1839 | async def async_step_network_detect_config( | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1921 | async def __show_network_detect_config_form(self, reason: str): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1956 | async def async_step_config_confirm(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 2163 | def _handle_network_detect_addr( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 722 | def __mips_sub_internal_pending_handler(self, ctx: Any) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 816 | def __mips_start_connect_tries(self) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 842 | def __get_next_reconnect_time(self) -> float: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 1062 | def __unreg_broadcast_external(self, topic: str) -> bool: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 1415 | async def get_action_group_list_async( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 1427 | async def exec_action_group_list_async( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 1621 | def __unreg_broadcast_external(self, topic) -> bool: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 332 | def __call_network_info_change( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 338 | async def __update_status_and_info_async(self) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 911 | async def __on_network_info_change_external_async( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1141 | def __update_subscribe_option(self, options: dict) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_storage.py | 605 | async def user_cert_remaining_time_async( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 496 | def hide_non_standard_entities(self) -> bool: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 501 | def display_devices_changed_notify(self) -> list[str]: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 518 | def display_devices_changed_notify(self, value: list[str]) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 945 | def __request_refresh_auth_info(self, delay_sec: int) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 954 | def __request_refresh_user_cert(self, delay_sec: int) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1034 | async def __on_network_status_changed(self, status: bool) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1054 | async def __on_mips_service_state_change( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1096 | async def __on_mips_cloud_state_changed( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1134 | async def __on_mips_local_state_changed( | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1180 | async def __on_miot_lan_state_change(self, state: bool) -> None: | CODE |
| 36 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | custom_components/xiaomi_home/__init__.py | 347 | except Exception as err: | CODE |
| MEDIUM | custom_components/xiaomi_home/config_flow.py | 1205 | def async_step_oauth(self, user_input=None): | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 392 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 479 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 543 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 564 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 579 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 646 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 722 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1174 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1247 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1279 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1453 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1463 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 1914 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 2107 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 2179 | except Exception: | CODE |
| LOW | custom_components/xiaomi_home/config_flow.py | 2189 | except Exception: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 546 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 569 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 609 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 744 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | custom_components/xiaomi_home/miot/miot_mips.py | 591 | def __mqtt_loop_handler(self) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 236 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 293 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 303 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | custom_components/xiaomi_home/miot/miot_network.py | 208 | def get_network_status_async(self) -> bool: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 282 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 597 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1053 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1197 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1226 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1267 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1360 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_storage.py | 766 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_i18n.py | 87 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | custom_components/xiaomi_home/miot/miot_client.py | 541 | def refresh_oauth_info_async(self) -> bool: | CODE |
| MEDIUM | custom_components/xiaomi_home/miot/miot_client.py | 599 | def refresh_user_cert_async(self) -> bool: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 589 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 747 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1331 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1341 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1461 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 1692 | except Exception as err: # pylint:disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 872 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 389 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 594 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 861 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 872 | except Exception as err: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 888 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 962 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1042 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1130 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1181 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1350 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_cloud.py | 781 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/check_rule_format.py | 153 | CODE | |
| LOW | test/check_rule_format.py | 268 | CODE | |
| LOW | custom_components/xiaomi_home/cover.py | 67 | CODE | |
| LOW | custom_components/xiaomi_home/cover.py | 111 | CODE | |
| LOW | custom_components/xiaomi_home/sensor.py | 65 | CODE | |
| LOW | custom_components/xiaomi_home/fan.py | 110 | CODE | |
| LOW | custom_components/xiaomi_home/light.py | 108 | CODE | |
| LOW | custom_components/xiaomi_home/humidifier.py | 103 | CODE | |
| LOW | custom_components/xiaomi_home/media_player.py | 406 | CODE | |
| LOW | custom_components/xiaomi_home/__init__.py | 133 | CODE | |
| LOW | custom_components/xiaomi_home/notify.py | 97 | CODE | |
| LOW | custom_components/xiaomi_home/vacuum.py | 111 | CODE | |
| LOW | custom_components/xiaomi_home/text.py | 119 | CODE | |
| LOW | custom_components/xiaomi_home/climate.py | 315 | CODE | |
| LOW | custom_components/xiaomi_home/climate.py | 499 | CODE | |
| LOW | custom_components/xiaomi_home/climate.py | 658 | CODE | |
| LOW | custom_components/xiaomi_home/device_tracker.py | 84 | CODE | |
| LOW | custom_components/xiaomi_home/config_flow.py | 2163 | CODE | |
| LOW | custom_components/xiaomi_home/config_flow.py | 509 | CODE | |
| LOW | custom_components/xiaomi_home/config_flow.py | 677 | CODE | |
| LOW | custom_components/xiaomi_home/config_flow.py | 1444 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 678 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_network.py | 338 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 1141 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_storage.py | 127 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_storage.py | 194 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_storage.py | 605 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 257 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 380 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 599 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 643 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_client.py | 775 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 465 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 672 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 1223 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 1503 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 303 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 755 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 840 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1400 | CODE | |
| LOW | custom_components/xiaomi_home/miot/miot_cloud.py | 480 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | custom_components/xiaomi_home/event.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/cover.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/sensor.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/fan.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/light.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/number.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/humidifier.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/media_player.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/__init__.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/notify.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/vacuum.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/switch.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/button.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/text.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/binary_sensor.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/select.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/water_heater.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/climate.py | 48 | CODE | |
| LOW | custom_components/xiaomi_home/device_tracker.py | 48 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | custom_components/xiaomi_home/config_flow.py | 2179 | except Exception: | CODE |
| HIGH | custom_components/xiaomi_home/config_flow.py | 2189 | except Exception: | CODE |
| HIGH | custom_components/xiaomi_home/miot/miot_network.py | 303 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | custom_components/xiaomi_home/miot/miot_mips.py | 386 | def update_mqtt_password(self, password: str) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 317 | def update_info(self, info: dict) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 644 | async def update_net_ifs_async(self, net_ifs: list[str]) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_lan.py | 679 | async def update_subscribe_option(self, enable_subscribe: bool) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 840 | async def set_spec_async(self, urn: str) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1063 | async def set_spec_spec(self, urn_key: str) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1147 | async def set_spec_async(self, urn: str) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 1198 | async def set_spec_async(self, urn: str) -> None: | CODE |
| LOW | custom_components/xiaomi_home/miot/miot_cloud.py | 123 | def set_redirect_url(self, redirect_url: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 11 | # Check if config path exists. | COMMENT |
| LOW | custom_components/xiaomi_home/miot/miot_i18n.py | 90 | # Check if the file is a valid JSON file | COMMENT |
| LOW | custom_components/xiaomi_home/miot/miot_spec.py | 965 | # Check if the file is a valid file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | custom_components/xiaomi_home/translations/en.json | 24 | "description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network i | CODE |
| MEDIUM | custom_components/xiaomi_home/translations/en.json | 179 | "description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | custom_components/xiaomi_home/miot/miot_lan.py | 950 | # The following methods SHOULD ONLY be called in the internal loop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | custom_components/xiaomi_home/miot/miot_device.py | 1391 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | custom_components/xiaomi_home/miot/miot_error.py | 61 | CODE_TIMEOUT = -10006 | COMMENT |