组件发现
注意…
此选项仅适用于内置组件。
Home Assistant 有一个在后台运行的发现服务来发现新设备。每当发现一个新设备时,会触发一个SERVICE_DISCOVERED事件,包含发现的服务和相关信息。discovery组件了解哪些组件处理哪些类型的服务,并会在触发SERVICE_DISCOVERED事件之前确保这些组件已加载并处于监听状态。
添加发现指令
Home Assistant 的设备发现功能已提取到一个名为 NetDisco 的外部库中。该库通过discovery组件集成,并定期扫描网络以查找 uPnP 和 zeroconf/mDNS 服务。
要使你的设备能够被发现,你必须扩展 NetDisco 库以使其能够找到你的设备。这是通过添加一个新的可发现对象来完成的。有关现有可发现对象的示例,请参阅存储库。
监听SERVICE_DISCOVERED事件
在你的组件中,你必须设置对特定服务的监听。以下是一个监听发现的 Chromecast 的示例:
from homeassistant.loader import get_component
def setup(hass, config):
discovery = get_component('discovery')
def chromecast_discovered(service, info):
"""当发现一个Chromecast时调用。"""
print("发现了一个新的Chromecast: {}".format(info))
discovery.listen(
hass, discovery.services.GOOGLE_CAST, chromecast_discovered)
发现时自动加载你的组件
发现组件能够在触发SERVICE_DISCOVERD事件之前设置你的组件。为此,你必须更新discovery组件中的SERVICE_HANDLERS常量。
总结
Home Assistant 中针对内置组件的组件发现机制。首先说明了其依赖的后台发现服务及事件触发机制,确保相关组件在事件触发前准备就绪。接着阐述了通过扩展 NetDisco 库添加发现指令来使设备可被发现的方法,以及在组件中如何监听特定服务发现事件的示例,最后提到了发现时自动加载组件的方式,即更新相关常量。整体为开发者提供了一套完整的内置组件发现相关操作流程,有助于提升设备与系统的集成能力,使设备能够更便捷地被 Home Assistant 识别和管理,提高系统的自动化程度和设备兼容性。
2万+

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



