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

 找回密码
 立即注册
查看: 10902|回复: 11

[求助] ESPHOME配置代码求助!!!求大神帮忙

[复制链接]

1

主题

49

帖子

310

积分

论坛积极会员

积分
310
金钱
261
HASS币
0
发表于 2020-10-30 16:59:56 | 显示全部楼层 |阅读模式
本帖最后由 neroxps 于 2020-10-30 17:16 编辑

需求保证所有开关在7:30-23:30之间开,其余时间是关闭的模块由于偶尔有时候自己会重启,导致大半夜的开关打开了,此处想加个模块启动比对时间决定开关的状态
以下附上代码
对于lambda实在无能为力,求助求助
esphome:
  name: test
  platform: esp8266
  board: d1_mini
  esp8266_restore_from_flash: true
  on_boot:
    priority: -10
    then:
      if:
        condition:
          lambda: |-
            //此处需要判断系统时间是否在7:30至23:30之间,求大神帮忙
        then:
          - switch.turn_on: switch86
          - switch.turn_on: switch55
          - switch.turn_on: switchbeiyong
        else:
          - switch.turn_off: switch86
          - switch.turn_off: switch55
          - switch.turn_off: switchbeiyong
wifi:
  ssid: "ZZCJ-Power"
  password: "我是密码"
  reboot_timeout: 60s
  manual_ip:
    static_ip: 10.16.9.10
    gateway: 10.16.8.5
    subnet: 255.255.252.0
    dns1: 222.246.129.80
    dns2: 114.114.114.114

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "我是密码"
  reboot_timeout: 0s

ota:
  safe_mode: True
  password: "我是密码"
time:
  - platform: homeassistant
    id: homeassistant_time
    timezone: Asia/Shanghai
    on_time:
      - seconds: 0
        minutes: 0
        hours: 7
        then:
         - switch.turn_on: switch86
      - seconds: 0
        minutes: 30
        hours: 23
        then:
         - switch.turn_off: switch86

web_server:
  port: 80
  auth:
    username: admin
    password: 我是密码

output:
  - platform: gpio
    pin: 14
    id: 'testswitch86'
  - platform: gpio
    pin: 13
    id: 'testswitch55'
  - platform: gpio
    pin: 15
    id: 'testswitchbeiyong'

switch:
  - platform: output
    name: "test switch86"
    output: 'testswitch86'
    id: switch86
    inverted: true
  - platform: output
    name: "test switch55"
    output: 'testswitch55'
    id: switch55
    inverted: true
  - platform: output
    name: "test switchbeiyong"
    output: 'testswitchbeiyong'
    id: switchbeiyong
    inverted: true

  - platform: restart
    name: "test Restart"

  - platform: gpio
    pin: 14
    id: gpio14
    restore_mode: ALWAYS_ON
  - platform: gpio
    pin: 13
    id: gpio13
    restore_mode: ALWAYS_ON
  - platform: gpio
    pin: 15
    id: gpio15
    restore_mode: ALWAYS_ON

sensor:
  - platform: wifi_signal
    name: "test Signal"
    update_interval: 5s

  - platform: uptime
    id: sensoruptime
    name: test Uptime Sensor
    update_interval: 5s



回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-10-30 17:34:04 | 显示全部楼层
好复杂,你设置一个 binary_sensor 开关

然后所有的开关开之前,都要检查这个开关是ON 还是OFF,on就执行,off 就不执行

然后用time 来触发,当时间是 7:30 就把这个 binary_sensor 设置成 on

23:30 之后就把这个 binary_sensor  设置成off 不就行了?
另外贴代码的时候记得把密码隐去,我看你密码有电话号码,保护下自己隐私,被社工就不好。
Nero
回复

使用道具 举报

27

主题

2143

帖子

8930

积分

论坛元老

Rank: 8Rank: 8

积分
8930
金钱
6782
HASS币
30

论坛元老

发表于 2020-10-30 17:37:43 | 显示全部楼层
关于定时,不需要全局,开写一个时间传感器就好了


time:
## +08区时间
  - platform: sntp
    id: sntp_time
    servers:
      - 0.pool.ntp.org
      - 1.pool.ntp.org
      - 2.pool.ntp.org
    timezone: Asia/Shanghai  ## UTC0
    on_time:
    # Every morning on weekdays
    # 8点45执行自动化
      - seconds: 0
        minutes: 45
        hours: 20
        # days_of_week: MON-SAT
        then:
          - script.execute: timing_01
回复

使用道具 举报

1

主题

49

帖子

310

积分

论坛积极会员

积分
310
金钱
261
HASS币
0
 楼主| 发表于 2020-10-30 19:34:19 | 显示全部楼层
neroxps 发表于 2020-10-30 17:34
好复杂,你设置一个 binary_sensor 开关

然后所有的开关开之前,都要检查这个开关是ON 还是OFF,on就执行 ...

非常感谢将隐私去掉了,上传直接复制了,忘记修改
可是一旦模块重启不管是binary_sensor还是switch的最后状态都会丢失吧,全部恢复到初始状态
回复

使用道具 举报

1

主题

49

帖子

310

积分

论坛积极会员

积分
310
金钱
261
HASS币
0
 楼主| 发表于 2020-10-30 19:36:06 | 显示全部楼层
情非殇 发表于 2020-10-30 17:37
关于定时,不需要全局,开写一个时间传感器就好了

on_time只会在经过这个时间点的时候才能起作用,如果在其他时段重启,直接恢复到打开的状态了
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-10-30 20:28:44 | 显示全部楼层
本帖最后由 neroxps 于 2020-10-30 20:31 编辑
tyj365888 发表于 2020-10-30 19:34
非常感谢将隐私去掉了,上传直接复制了,忘记修改
可是一旦模块重启不管是binary_sensor还是switch的最后 ...

time 每秒执行,如果binary_sensor 不是 off 就 off 啊。
还有也可以用全局变量来做https://esphome.io/guides/automa ... -2-global-variables

restore_value
Nero
回复

使用道具 举报

1

主题

49

帖子

310

积分

论坛积极会员

积分
310
金钱
261
HASS币
0
 楼主| 发表于 2020-10-30 21:11:31 | 显示全部楼层
neroxps 发表于 2020-10-30 20:28
time 每秒执行,如果binary_sensor 不是 off 就 off 啊。
还有也可以用全局变量来做https://esphome.io/gu ...

求加好友具体详说,不知具体的代码要如何构成
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-10-30 22:01:09 | 显示全部楼层
tyj365888 发表于 2020-10-30 21:11
求加好友具体详说,不知具体的代码要如何构成

范例写都很清楚吧?不行可以参考下老外的写的~
Nero
回复

使用道具 举报

27

主题

2143

帖子

8930

积分

论坛元老

Rank: 8Rank: 8

积分
8930
金钱
6782
HASS币
30

论坛元老

发表于 2020-10-31 08:52:16 | 显示全部楼层
tyj365888 发表于 2020-10-30 19:36
on_time只会在经过这个时间点的时候才能起作用,如果在其他时段重启,直接恢复到打开的状态了 ...

esp8266_restore_from_flash: yes


这一条就是保存状态恢复状态的,我测试过没问题,不知道你别处有问题还是不能用 true表示
回复

使用道具 举报

1

主题

49

帖子

310

积分

论坛积极会员

积分
310
金钱
261
HASS币
0
 楼主| 发表于 2020-10-31 11:46:33 | 显示全部楼层
情非殇 发表于 2020-10-31 08:52
esp8266_restore_from_flash: yes

这个我试过,用yes和true都不能够恢复状态 不知道是什么原因
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 05:31 , Processed in 0.920512 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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