十一 Home Assistant服务

服务
这是一个简单的 “Hello World” 示例,用于展示注册服务的基础知识。要使用此示例,请创建文件/custom_components/hello_service.py并复制下面的示例代码。
服务可以从自动化中以及前端的 “开发者工具” 服务中调用。

# 你的组件的域。应该等于你的组件的名称。
DOMAIN = 'hello_service'

ATTR_NAME = 'name'
DEFAULT_NAME = 'World'


def setup(hass, config):
    """当Home Assistant加载我们的组件时调用设置函数。"""

    def handle_hello(call):
        name = call.data.get(ATTR_NAME, DEFAULT_NAME)

        hass.states.set('hello_service.hello', name)

    hass.services.register(DOMAIN, 'hello', handle_hello)

    # 返回布尔值以指示初始化成功。
    return True

通过将以下内容添加到你的configuration.yaml中来加载组件。当你的组件加载时,应该有一个新服务可供调用。

# configuration.yaml条目
hello_service:

打开前端,在侧边栏中,点击开发者工具部分的第一个图标。这将打开 “调用服务” 开发者工具。在右侧,找到你的服务并点击它。这将自动填充正确的值。
点击 “调用服务” 现在将不带任何参数调用你的服务。这将导致你的服务使用默认名称 “World” 创建一个状态。如果你想指定名称,你必须指定参数。添加以下 JSON 作为服务数据,然后再次点击 “调用服务”。

{
  "name": "Planet"
}

服务现在将用 “Planet” 覆盖先前的状态。
总结
主要介绍了在 Home Assistant 开发中服务的使用方法,通过一个简单的 “hello_service” 组件示例来阐述。首先明确了服务可从自动化和前端开发者工具调用,接着展示了如何在组件中注册服务,包括定义组件域、服务处理函数,在setup函数中使用hass.services.register注册服务,并在处理函数中根据传入参数设置状态。然后说明了如何在configuration.yaml中加载组件使其服务可用,以及如何在前端开发者工具中找到并调用服务,还演示了如何传递参数来改变服务执行结果,为开发者提供了服务开发与使用的基本流程,有助于开发者在 Home Assistant 项目中实现自定义服务功能,增强系统的可扩展性和交互性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值