Domoticz dzVents脚本系统详解

Domoticz dzVents脚本系统详解

domoticz Open source Home Automation System domoticz 项目地址: https://gitcode.com/gh_mirrors/do/domoticz

概述

dzVents(Domoticz Easy Events)是Domoticz智能家居系统中的新一代Lua脚本引擎,它极大地简化了Domoticz自动化脚本的编写过程。通过提供简洁的API和强大的事件触发机制,dzVents让用户能够更轻松地控制智能家居设备,实现复杂的自动化场景。

dzVents核心优势

  1. 简化的API设计:封装了Domoticz底层复杂的数据结构,提供直观的设备控制接口
  2. 高效的事件处理:优化了设备信息获取机制,大幅提升脚本执行效率
  3. 灵活的定时规则:支持复杂的定时条件,满足各种场景需求
  4. 完整的状态访问:可以获取系统中所有设备、场景、变量的当前状态
  5. 100%兼容Lua:保留Lua语言的全部特性,便于已有脚本迁移

环境配置

要启用dzVents功能,需要进行以下配置:

  1. 在Domoticz设置中启用dzVents:

    • 进入"设置 > 其他"
    • 在"事件系统"部分确保"禁用dzVents"选项未勾选
  2. 安全设置调整:

    • 进入"设置 > 系统 > 本地网络"
    • 允许127.0.0.1(IPv4)和::1(IPv6)无需密码访问
  3. 位置信息设置:

    • 进入"设置 > 系统 > 位置"
    • 设置正确的地理位置,以确保昼夜状态判断准确

脚本创建方式

dzVents脚本可以通过两种方式创建:

  1. 文件系统方式

    • 在Domoticz服务器上的/path/to/domoticz/scripts/dzVents/scripts/目录下创建.lua文件
    • 文件扩展名必须为.lua
    • 遵循dzVents脚本结构规范
  2. Web编辑器方式

    • 进入"设置 > 更多选项 > 事件"
    • 点击"+"按钮,选择dzVents类型
    • 从模板中选择合适的脚本模板
    • 注意:脚本名称不需要加.lua扩展名

重要提示:文件系统脚本和Web编辑器脚本共享相同的命名空间。如果存在同名脚本,文件系统脚本将优先执行。

脚本结构详解

一个标准的dzVents脚本采用模块化结构,返回一个包含特定键的Lua表:

return {
    active = true,  -- 可选,控制脚本是否激活
    on = {         -- 事件触发器配置
        devices = {"开关名称"},
        timer = {"every hour"}
    },
    data = {},     -- 可选,脚本持久化数据
    logging = {},  -- 可选,日志配置
    execute = function(domoticz, device, triggerInfo)
        -- 脚本主逻辑
    end
}

主要组成部分

  1. active字段(可选):

    • 布尔值或函数,控制脚本是否激活
    • 默认值为true(激活)
    • 可以是一个返回布尔值的函数,实现动态激活控制
  2. on字段(必需):

    • 定义脚本的触发条件
    • 支持多种触发器类型,可以组合使用
  3. data字段(可选):

    • 用于脚本数据的持久化存储
    • 数据在脚本执行间保持
  4. logging字段(可选):

    • 控制脚本的日志行为
    • 可以设置日志级别等参数
  5. execute函数(必需):

    • 脚本的主逻辑实现
    • 接收domoticz对象和触发信息作为参数

触发器类型详解

dzVents支持多种触发器类型,满足不同场景需求:

1. 设备触发器 (devices)

当指定设备状态变化时触发脚本:

on = {
    devices = {
        "客厅灯", 
        "卧室*",  -- 支持通配符
        123,      -- 设备IDX
        ["厨房传感器"] = {"at 18:*", "at 07:* on mon,tue"} -- 带时间条件
    }
}

2. 定时触发器 (timer)

基于时间的触发规则,支持复杂的时间表达式:

on = {
    timer = {
        "every hour",                      -- 每小时
        "every minute at nighttime",       -- 夜间每分钟
        "at 19:45 on mon,wed,fri",        -- 特定时间
        "between 30 minutes before sunset and sunrise" -- 日出日落相关
    }
}

3. 场景触发器 (scenes)

当指定场景被激活时触发:

on = {
    scenes = {"回家模式", "离家模式"}
}

4. 组触发器 (groups)

当组内设备状态变化时触发:

on = {
    groups = {"一楼灯光", "安防设备"}
}

5. 变量触发器 (variables)

当用户变量值变化时触发:

on = {
    variables = {"温度阈值", "模式设置"}
}

6. 安全系统触发器 (security)

当安全系统状态变化时触发:

on = {
    security = {domoticz.SECURITY_ARMEDAWAY, domoticz.SECURITY_DISARMED}
}

7. 系统事件触发器 (system)

响应Domoticz系统事件:

on = {
    system = {"start", "stop", "dailyBackupFinished"}
}

8. 自定义事件触发器 (customEvents)

通过API、MQTT或内部命令触发:

on = {
    customEvents = {"传感器警报", "远程指令"}
}

9. HTTP响应触发器 (httpResponses)

处理异步HTTP请求的响应:

on = {
    httpResponses = {"天气查询"}
}

10. Shell命令响应触发器 (shellCommandResponses)

处理异步Shell命令执行结果:

on = {
    shellCommandResponses = {"磁盘检查"}
}

快速入门示例

以下是一个简单的dzVents脚本示例,当指定开关状态变化时记录日志:

return {
    on = {
        devices = {"客厅主灯"}
    },
    execute = function(domoticz, device)
        if device.state == "On" then
            domoticz.log("客厅主灯已打开", domoticz.LOG_INFO)
        else
            domoticz.log("客厅主灯已关闭", domoticz.LOG_INFO)
        end
    end
}

最佳实践

  1. 设备命名规范:采用一致的命名规则,便于使用通配符
  2. 错误处理:在execute函数中添加适当的错误处理逻辑
  3. 日志分级:根据重要性使用不同的日志级别
  4. 性能优化:避免在频繁触发的脚本中执行耗时操作
  5. 代码复用:将常用功能封装为函数,便于多脚本共享

总结

dzVents为Domoticz提供了强大而简洁的自动化脚本能力,通过其直观的API和灵活的事件机制,用户可以轻松实现复杂的家居自动化场景。无论是简单的设备控制,还是基于多条件判断的复杂逻辑,dzVents都能提供高效的解决方案。

domoticz Open source Home Automation System domoticz 项目地址: https://gitcode.com/gh_mirrors/do/domoticz

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓怡桃Prunella

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值