fix: 修复平台文件和 OptionsFlow 错误
修复内容: 1. 所有平台文件添加 coordinator.data None 检查 - sensor.py, binary_sensor.py, switch.py, light.py, device_tracker.py 2. 修复 async_get_options_flow 签名 - 改为实例方法,移除 config_entry 参数 - 移除 @staticmethod 装饰器 3. OptionsFlow 添加正确的 __init__ 方法 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
28e9800cae
commit
311cfbbe7e
@ -34,6 +34,10 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
entities: list[SigMeshBinarySensor] = []
|
entities: list[SigMeshBinarySensor] = []
|
||||||
|
|
||||||
|
if coordinator.data is None:
|
||||||
|
_LOGGER.debug("协调器数据为空,等待设备数据")
|
||||||
|
return
|
||||||
|
|
||||||
for device in coordinator.data.values():
|
for device in coordinator.data.values():
|
||||||
# 检测是否存在开关状态
|
# 检测是否存在开关状态
|
||||||
if device.states.get("onoff") is not None:
|
if device.states.get("onoff") is not None:
|
||||||
|
|||||||
@ -6,7 +6,6 @@ from typing import Any
|
|||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
from homeassistant.core import callback
|
|
||||||
from homeassistant.data_entry_flow import FlowResult
|
from homeassistant.data_entry_flow import FlowResult
|
||||||
from homeassistant.helpers import selector
|
from homeassistant.helpers import selector
|
||||||
|
|
||||||
@ -65,18 +64,21 @@ class SigMeshGatewayConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
errors=errors,
|
errors=errors,
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
@callback
|
@callback
|
||||||
def async_get_options_flow(
|
def async_get_options_flow(
|
||||||
config_entry: config_entries.ConfigEntry,
|
self,
|
||||||
) -> SigMeshGatewayOptionsFlow:
|
) -> SigMeshGatewayOptionsFlow:
|
||||||
"""获取选项流程."""
|
"""获取选项流程."""
|
||||||
return SigMeshGatewayOptionsFlow(config_entry)
|
return SigMeshGatewayOptionsFlow()
|
||||||
|
|
||||||
|
|
||||||
class SigMeshGatewayOptionsFlow(config_entries.OptionsFlow):
|
class SigMeshGatewayOptionsFlow(config_entries.OptionsFlow):
|
||||||
"""SigMesh Gateway 选项流程."""
|
"""SigMesh Gateway 选项流程."""
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
"""初始化选项流程."""
|
||||||
|
self._errors: dict[str, str] = {}
|
||||||
|
|
||||||
async def async_step_init(self, user_input: dict[str, Any] | None = None) -> FlowResult:
|
async def async_step_init(self, user_input: dict[str, Any] | None = None) -> FlowResult:
|
||||||
"""管理选项."""
|
"""管理选项."""
|
||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
|
|||||||
@ -31,6 +31,10 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
entities: list[SigMeshDeviceTracker] = []
|
entities: list[SigMeshDeviceTracker] = []
|
||||||
|
|
||||||
|
if coordinator.data is None:
|
||||||
|
_LOGGER.debug("协调器数据为空,等待设备数据")
|
||||||
|
return
|
||||||
|
|
||||||
for device in coordinator.data.values():
|
for device in coordinator.data.values():
|
||||||
entities.append(SigMeshDeviceTracker(coordinator, device))
|
entities.append(SigMeshDeviceTracker(coordinator, device))
|
||||||
|
|
||||||
|
|||||||
@ -37,6 +37,10 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
entities: list[SigMeshLight] = []
|
entities: list[SigMeshLight] = []
|
||||||
|
|
||||||
|
if coordinator.data is None:
|
||||||
|
_LOGGER.debug("协调器数据为空,等待设备数据")
|
||||||
|
return
|
||||||
|
|
||||||
for device in coordinator.data.values():
|
for device in coordinator.data.values():
|
||||||
# 检查是否为灯光设备
|
# 检查是否为灯光设备
|
||||||
if device.model_id in (0x1300, 0x1307, 0x130C, 0x130D):
|
if device.model_id in (0x1300, 0x1307, 0x130C, 0x130D):
|
||||||
|
|||||||
@ -36,7 +36,11 @@ async def async_setup_entry(
|
|||||||
# 创建传感器实体
|
# 创建传感器实体
|
||||||
entities: list[SigMeshSensor] = []
|
entities: list[SigMeshSensor] = []
|
||||||
|
|
||||||
# 从协调器获取设备
|
# 从协调器获取设备(检查 data 是否为 None)
|
||||||
|
if coordinator.data is None:
|
||||||
|
_LOGGER.debug("协调器数据为空,等待设备数据")
|
||||||
|
return
|
||||||
|
|
||||||
for device in coordinator.data.values():
|
for device in coordinator.data.values():
|
||||||
# 根据设备状态创建相应的传感器
|
# 根据设备状态创建相应的传感器
|
||||||
if device.states.get("property_id") is not None:
|
if device.states.get("property_id") is not None:
|
||||||
|
|||||||
@ -31,6 +31,10 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
entities: list[SigMeshSwitch] = []
|
entities: list[SigMeshSwitch] = []
|
||||||
|
|
||||||
|
if coordinator.data is None:
|
||||||
|
_LOGGER.debug("协调器数据为空,等待设备数据")
|
||||||
|
return
|
||||||
|
|
||||||
for device in coordinator.data.values():
|
for device in coordinator.data.values():
|
||||||
# 检查是否为开关设备
|
# 检查是否为开关设备
|
||||||
if device.model_id == 0x1000: # OnOff Server 模型
|
if device.model_id == 0x1000: # OnOff Server 模型
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user