二十三 Home Assistant 组件的探索与发现

组件发现
注意…
此选项仅适用于内置组件。
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 识别和管理,提高系统的自动化程度和设备兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值