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

 找回密码
 立即注册

[技术探讨] 跪求各有才寫計時拉桿的大大,可否寫出一個這樣的計时器?

[复制链接]

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-3-29 00:16:31 | 显示全部楼层
本帖最后由 下載王下載王 于 2019-3-29 00:21 编辑

我已經測試了
回复

使用道具 举报

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-3-29 00:17:34 | 显示全部楼层
情非殇 发表于 2019-3-28 15:06
归零动作前加个 -delay: 00:00:01这种延时,或者拉杆赋值的时候延时一下,自己测试去吧 ...


你好我已經測試了加入了或者2秒 到拉桿前的delay 又或 歸零前的delay 、但始終都會發生 如拉桿是10秒  10秒後燈會關閉 然後10秒後又會再打開的情況 、但我不明白加delay概念是什麼? 始終延遲2秒後sensor的值還是會掉進timer再讓他倒數一次,

homeassistant:
  customize:
    input_number.timer_sec:
      friendly_name: 秒
      icon: mdi:av-timer
      
sensor:
  - platform: template
    sensors:
      timer_setting:
        friendly_name: 'Time'
        value_template: '{{ "%0.02d:%0.02d:%0.02d" | format(states("input_number.timer_hour") | int, states("input_number.timer_min") | int, states("input_number.timer_sec") | int) }}'
         
input_number:
# timer_min:
  timer_sec:
#   name: TimerMinute
    name: TimerSecond
    min: 0
    max: 100   # 拉杆分鐘峰值
    step: 5
  
timer:
  test:
    duration: '00:00:00'
  
automation:
  - alias: test1
    hide_entity: true
    trigger:
      - platform: state
        entity_id: sensor.timer_setting
    action:
      - service: timer.cancel
        entity_id: timer.test
      - delay: 00:01:00
      - service: timer.start
        data_template:
          entity_id: timer.test
          duration: >
            {{ states("sensor.timer_setting") }}

  ## 倒計時完成,燈為on的話執行off,燈為off的話執行on
  - alias: test2
    hide_entity: true
    initial_state: true
    trigger:
      # 定時器結束關關
      platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.test
    condition:
      - condition: state
        entity_id: light.corridor_light
        state: 'on'
    action:
      - service: light.turn_off
        entity_id: light.corridor_light
#        data_template:
#          entity_id: input_number.timer_sec
#          value: 0


  - alias: test3
    hide_entity: true
    initial_state: true
    trigger:
      # 定時器結束啟動
      platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.test
    condition:
      - condition: state
        entity_id: light.corridor_light
        state: 'off'
    action:
      - service: light.turn_on
        entity_id: light.corridor_light



  ## 計時器結束時候,重置拉杆
  - alias: Timer_reset_to_zero
    trigger:
      - platform: state
        entity_id: timer.test               #计时器的id
        to: 'idle'
    action:
      - service: input_number.set_value
        entity_id: input_number.timer_sec   #重置的拉杆id
        data_template:
          value: 0
回复

使用道具 举报

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-3-29 00:20:17 | 显示全部楼层
情非殇 发表于 2019-3-28 15:06
归零动作前加个 -delay: 00:00:01这种延时,或者拉杆赋值的时候延时一下,自己测试去吧 ...


你好我已經測試了加入了或者2秒 到拉桿前的delay 又或 歸零前的delay 、但始終都會發生 如拉桿是10秒  10秒後燈會關閉 然後10秒後又會再打開的情況 、但我不明白加delay概念是什麼? 始終延遲2秒後sensor的值還是會掉進timer再讓他倒數一次,

以下是原本的碼  !!!請問有方法可以令拉桿歸零後 sensor 不會再丟時間給timer麻?我有試過寫多加一個令拉桿歸零後sensor也歸0 ,但這樣竟然會令到timer連第一次也不會倒數計時
homeassistant:
  customize:
    input_number.timer_sec:
      friendly_name: 秒
      icon: mdi:av-timer
      
sensor:
  - platform: template
    sensors:
      timer_setting:
        friendly_name: 'Time'
        value_template: '{{ "%0.02d:%0.02d:%0.02d" | format(states("input_number.timer_hour") | int, states("input_number.timer_min") | int, states("input_number.timer_sec") | int) }}'
         
input_number:
# timer_min:
  timer_sec:
#   name: TimerMinute
    name: TimerSecond
    min: 0
    max: 100   # 拉杆分鐘峰值
    step: 5
  
timer:
  test:
    duration: '00:00:00'
  
automation:
  - alias: test1
    hide_entity: true
    trigger:
      - platform: state
        entity_id: sensor.timer_setting
    action:
      - service: timer.cancel
        entity_id: timer.test
      - delay: 00:01:00
      - service: timer.start
        data_template:
          entity_id: timer.test
          duration: >
            {{ states("sensor.timer_setting") }}

  ## 倒計時完成,燈為on的話執行off,燈為off的話執行on
  - alias: test2
    hide_entity: true
    initial_state: true
    trigger:
      # 定時器結束關關
      platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.test
    condition:
      - condition: state
        entity_id: light.corridor_light
        state: 'on'
    action:
      - service: light.turn_off
        entity_id: light.corridor_light
#        data_template:
#          entity_id: input_number.timer_sec
#          value: 0


  - alias: test3
    hide_entity: true
    initial_state: true
    trigger:
      # 定時器結束啟動
      platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.test
    condition:
      - condition: state
        entity_id: light.corridor_light
        state: 'off'
    action:
      - service: light.turn_on
        entity_id: light.corridor_light



  ## 計時器結束時候,重置拉杆
  - alias: Timer_reset_to_zero
    trigger:
      - platform: state
        entity_id: timer.test               #计时器的id
        to: 'idle'
    action:
      - service: input_number.set_value
        entity_id: input_number.timer_sec   #重置的拉杆id
        data_template:
          value: 0
回复

使用道具 举报

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-4-3 02:04:47 | 显示全部楼层
情非殇 发表于 2019-3-28 15:06
归零动作前加个 -delay: 00:00:01这种延时,或者拉杆赋值的时候延时一下,自己测试去吧 ...

大大, 我試了幾天還是不行,可以加delay 的地方我地加過了, 但它還是開燈後等相同時間它會又關掉 或 5分鐘後燈關了再5分鐘又會再開....可以再指導一下麻?
回复

使用道具 举报

27

主题

2102

帖子

8544

积分

论坛元老

Rank: 8Rank: 8

积分
8544
金钱
6437
HASS币
30

论坛元老

发表于 2019-4-3 11:50:52 | 显示全部楼层
下載王下載王 发表于 2019-4-3 02:04
大大, 我試了幾天還是不行,可以加delay 的地方我地加過了, 但它還是開燈後等相同時間它會又關掉 或 5分鐘 ...

等我有空给你测试一下哈
回复

使用道具 举报

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-4-3 14:58:48 | 显示全部楼层
情非殇 发表于 2019-4-3 11:50
等我有空给你测试一下哈

好吧我等你...。麻煩你了。還有其實我想問為什麼加delay就可以解決問題?我對delay的概念是 讓之後的行為延遲幾秒 但應該對整個行為或者事件不會改變才對.
回复

使用道具 举报

27

主题

2102

帖子

8544

积分

论坛元老

Rank: 8Rank: 8

积分
8544
金钱
6437
HASS币
30

论坛元老

发表于 2019-4-3 15:23:55 | 显示全部楼层
下載王下載王 发表于 2019-4-3 14:58
好吧我等你...。麻煩你了。還有其實我想問為什麼加delay就可以解決問題?我對delay的概念是 讓之後的行為 ...

应该属于ha的一些定义问题吧,就好比你游戏技能的前摇后摇什么的。上次说的delay取消,把拉杆清零后面加个倒计时取消动作好了

- service: input_number.set_value
  entity_id: 
    - input_number.timer_min   #重置的拉杆id
    - input_number.timer_sec   #重置的拉杆id
  data_template:
    value: 0
- delay: 00:00:00.001
- service: timer.cancel
  entity_id: timer.test
回复

使用道具 举报

7

主题

110

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
金钱
372
HASS币
0
 楼主| 发表于 2019-4-3 20:29:50 | 显示全部楼层
情非殇 发表于 2019-4-3 15:23
应该属于ha的一些定义问题吧,就好比你游戏技能的前摇后摇什么的。上次说的delay取消,把拉杆清零后面加 ...

天啊, 成功了, 感動流涕.!!!!!!!!!!!!!!!!!!    感謝您.!!!!!!!!!!!

請問我日後還有甚麼地方應加delay 麻? 每次加入值? 或歸零時?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-14 16:34 , Processed in 0.853548 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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