『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2118|回复: 5

[技术探讨] Chatgpt代写HA自动化---技术发展真得快

[复制链接]

35

主题

978

帖子

4517

积分

论坛元老

Rank: 8Rank: 8

积分
4517
金钱
3539
HASS币
20
发表于 2023-2-18 23:36:08 | 显示全部楼层 |阅读模式
提问:我有一盏灯,有一个人体传感器,我希望触发人体传感器时灯亮,人体传感器5分钟都没人时灯灭,请写一个home assistant的自动化


Chatgpt:好的,以下是一个用于Home Assistant的自动化,满足您的要求:
# 自动化配置
- alias: "Turn on light when motion is detected"
  trigger:
    platform: state
    entity_id: binary_sensor.motion_sensor
    to: "on"
  action:
    - service: light.turn_on
      data:
        entity_id: light.my_lamp


# 自动化配置
- alias: "Turn off light when no motion is detected for 5 minutes"
  trigger:
    platform: state
    entity_id: binary_sensor.motion_sensor
    to: "off"
    for:
      minutes: 5
  action:
    - service: light.turn_off
      data:
        entity_id: light.my_lamp

这个自动化包括两个部分:
  • 当人体传感器检测到运动时,触发第一个自动化,将灯打开。
  • 当人体传感器检测到没有运动超过5分钟时,触发第二个自动化,将灯关闭。
请注意,binary_sensor.motion_sensor应替换为实际使用的人体传感器的实体ID,而light.my_lamp应替换为实际使用的灯的实体ID。您还可以根据需要更改自动化的别名和时间。

AI还提供了注释说明,真是有意思。不过我不会写HA的自动化,不能判断AI写得对不对。

回复

使用道具 举报

2

主题

104

帖子

1364

积分

金牌会员

Rank: 6Rank: 6

积分
1364
金钱
1260
HASS币
0
发表于 2023-2-19 12:23:10 | 显示全部楼层
AI写简单代码对于我们这种小白确实挺好用的。
nodered靠chatGPT完成好几个流
回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
发表于 2023-2-19 16:07:48 | 显示全部楼层
说实话,我已经用chagpt写了好几个自动化了,他能给你写个大概,自己要改的其实还挺多的;但是没有这方面的基础的情况下有些写法不会,让他教你写倒是挺好用的。
回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
发表于 2023-2-19 16:09:00 | 显示全部楼层
jole 发表于 2023-2-19 12:23
AI写简单代码对于我们这种小白确实挺好用的。
nodered靠chatGPT完成好几个流 ...

一直想学nodered,但是感觉有点复杂一直没试试,看来可以去试试看了。
回复

使用道具 举报

0

主题

6

帖子

70

积分

注册会员

Rank: 2

积分
70
金钱
64
HASS币
0
发表于 2023-2-24 11:43:48 | 显示全部楼层
这个可以研究研究
回复

使用道具 举报

1

主题

39

帖子

380

积分

中级会员

Rank: 3Rank: 3

积分
380
金钱
341
HASS币
0
发表于 2023-2-24 12:21:19 | 显示全部楼层
本帖最后由 ghdong 于 2023-2-24 12:35 编辑

我发现chatgpt也是个HA专家。试了好几个问题他都能回答。大家赶紧试试看哈。我:homeassistant中 如何把一个值传给modbus设备
chatgpt:在 Home Assistant 中,你可以使用 Modbus 组件将值写入 Modbus 设备中的一个或多个寄存器中。
以下是一个使用 Modbus 组件将一个数值写入 Modbus 设备的寄存器中的示例:
# 定义一个数字输入框,用于设置要写入的值input_number:  modbus_value:    name: 'Modbus Value'    min: 0    max: 100    step: 1    unit_of_measurement: 'C'# 创建一个 Modbus 服务,用于将输入数字写入 Modbus 寄存器中modbus:  name: 'Modbus Server'  type: tcp  host: <Modbus 设备 IP 地址>  port: <Modbus 设备端口号>  close_comm_on_error: true  delay: 1# 创建一个自动化,当数字输入框的值发生变化时,将其写入 Modbus 寄存器中automation:  - alias: 'Write Modbus Value'    trigger:      platform: state      entity_id: input_number.modbus_value    action:      service: modbus.write_register      data:        hub: modbus.server        unit: 1  # Modbus 设备的从站地址        address: 0  # 要写入的寄存器地址        value: "{{ state_attr('input_number.modbus_value', 'value') | int }}"

在上面的示例中,我们首先定义了一个数字输入框,用于设置要写入 Modbus 设备的寄存器中的值。然后,我们创建了一个 Modbus 服务,用于与 Modbus 设备进行通信。在自动化中,我们使用 modbus.write_register 服务将数字输入框的值写入 Modbus 设备的一个寄存器中。
在 modbus.write_register 服务的数据中,我们指定了 hub 参数,它指定要使用的 Modbus 服务;unit 参数,它指定 Modbus 设备的从站地址;address 参数,它指定要写入的寄存器地址;以及 value 参数,它指定要写入的值。在 value 参数中,我们使用模板表达式将数字输入框的值转换为整数。

我:上面的例子中假设寄存器地址为200CH ,把值75传到modbus,具体应该怎么写?
chatgpt:如果你要将值 75 写入 Modbus 设备中的 200C 寄存器,可以将上面的自动化中的 address 参数的值修改为 0x200C,并将 value 参数的值修改为 75,如下所示:
# 创建一个自动化,将值 75 写入 Modbus 设备中的 200C 寄存器automation:  - alias: 'Write Modbus Value'    trigger:      platform: state      entity_id: input_number.modbus_value    action:      service: modbus.write_register      data:        hub: modbus.server        unit: 1  # Modbus 设备的从站地址        address: 0x200C  # 要写入的寄存器地址        value: 75



唯一的不足,配置好像不是按照新的配置写法写的。

我:上面的例子中 如果modbus 需要校验码怎么办?


chatgpt:如果你的 Modbus 设备需要校验码(CRC 或者 LRC)来校验数据的完整性,你可以在 Home Assistant 中的 Modbus 配置中指定校验码类型。
以下是一个使用 Modbus 组件并指定校验码类型的示例:
# 创建一个 Modbus 服务,指定校验码类型为 CRCmodbus:  name: 'Modbus Server'  type: tcp  host: <Modbus 设备 IP 地址>  port: <Modbus 设备端口号>  close_comm_on_error: true  delay: 1  crc: true  # 指定校验码类型为 CRC
在上面的示例中,我们在 Modbus 配置中添加了一个 crc 参数,并将其值设置为 true,表示要使用 CRC 校验码。
在使用 modbus.write_register 服务时,你无需手动计算 CRC 或 LRC 校验码,Home Assistant 会自动为你计算。只需要在 modbus.write_register 服务的数据中添加 crc 参数,并将其值设置为 true 即可。例如:
# 创建一个自动化,将值 75 写入 Modbus 设备中的 200C 寄存器,并使用 CRC 校验码automation:  - alias: 'Write Modbus Value'    trigger:      platform: state      entity_id: input_number.modbus_value    action:      service: modbus.write_register      data:        hub: modbus.server        unit: 1  # Modbus 设备的从站地址        address: 0x200C  # 要写入的寄存器地址        value: 75        crc: true  # 使用 CRC 校验码

在上面的示例中,我们在 modbus.write_register 服务的数据中添加了一个 crc 参数,并将其值设置为 true,表示要使用 CRC 校验码。Home Assistant 会自动为你计算校验码,并将其添加到写入数据中。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-28 16:03 , Processed in 0.053696 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表