创建平台的检测清单
这是一份在添加新平台时需要完成事项的检查清单。
并非所有现有平台都遵循此检查清单中的要求。但这不能成为不遵循它们的理由!
- 需求
需求版本应该固定:REQUIREMENTS = [‘phue==0.8.1’]
我们不再希望需求托管在 GitHub 上。请上传到 PyPi。
需求应该只在函数内部导入。这是必要的,因为需求是动态安装的。 - 依赖
如果你依赖一个组件进行连接,将其添加到你的依赖项中:DEPENDENCIES = [‘nest’] - 配置
存在用于配置验证的 Volutpuous 模式
Voluptuous 模式扩展组件的模式
(例如light.hue.PLATFORM_SCHEMA扩展light.PLATFORM_SCHEMA)
默认参数在 Voluptuous 模式中指定,而不是在setup_platform(…)中
模式尽可能使用来自homeassistant.const的通用配置键
import voluptuous as vol
from homeassistant.const import CONF_FILENAME, CONF_HOST
from homeassistant.components.light import PLATFORM_SCHEMA
import homeassistant.helpers.config_validation as cv
CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
DEFAULT_UNREACHABLE = False
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_ALLOW_UNREACHABLE,
default=DEFAULT_UNREACHABLE): cv.boolean,
vol.Optional(CONF_FILENAME): cv.string,
})
- 设置平台
测试传入的信息(用户 / 密码 / 主机等)是否有效。
如果可能,对add_devices的调用进行分组。
如果平台添加额外服务,格式应该是._。 - 实体
从组件扩展实体,例如class HueLight(Light)
不要在构造函数中调用update(),而是使用add_devices(devices, True)。
不要在属性内部进行任何 I/O 操作。改为在update()中缓存值。 - 与设备 / 服务通信
所有特定于 API 的代码必须是托管在 PyPi 上的第三方库的一部分。Home Assistant 应该只与对象交互,而不是直接调用 API。
# 不咋滴的做法
status = requests.get(url('/status'))
# 好的做法
from phue import Bridge
bridge = Bridge(…)
status = bridge.status()
总结
该网页提供了在 Home Assistant 中创建平台时的详细检查清单。从需求方面规定了版本固定、上传平台及导入位置;依赖项明确了添加连接所需组件;配置涉及验证模式、参数设置及通用键使用;设置平台包括信息测试、调用分组和服务格式;实体部分涉及扩展方式、更新调用和属性操作;通信强调使用第三方库与对象交互而非直接调用 API。此清单为开发者创建新平台提供了全面且规范的指导,确保新平台与 Home Assistant 系统的兼容性、可维护性和安全性,遵循最佳实践,提高平台质量,促进整个系统的健康发展,尽管现有平台可能不完全符合,但新开发必须遵循这些标准。

被折叠的 条评论
为什么被折叠?



