diff --git a/ge1mer/domofon.yaml b/ge1mer/domofon.yaml index 57906eb..f1a6a9f 100644 --- a/ge1mer/domofon.yaml +++ b/ge1mer/domofon.yaml @@ -41,10 +41,6 @@ substitutions: # Software configuration call_end_detect_delay: 3000ms # Interval between rings to detect incoming call - relay_before_answer_delay: 400ms # Delay before answer call - relay_answer_on_time: 1000ms # Delay between answer call and open/close door - relay_open_on_time: 300ms # How long the "open door button" will be pressed - relay_after_open_delay: 500ms # Delay in "answer" state after opening door short_click_time_from: 50ms # Short button click min time short_click_time_to: 1000ms # Long button click min time diff --git a/ge1mer/domofon_packages/base.yaml b/ge1mer/domofon_packages/base.yaml index 5e11645..ce2b382 100644 --- a/ge1mer/domofon_packages/base.yaml +++ b/ge1mer/domofon_packages/base.yaml @@ -61,32 +61,34 @@ sensor: update_interval: 20s unit_of_measurement: bytes accuracy_decimals: 0 + entity_category: "diagnostic" + - platform: uptime internal: true id: uptime_sensor + update_interval: 60s + on_raw_value: + then: + - text_sensor.template.publish: + id: uptime_human + state: !lambda |- + int seconds = round(id(uptime_sensor).raw_state); + int days = seconds / (24 * 3600); + seconds = seconds % (24 * 3600); + int hours = seconds / 3600; + seconds = seconds % 3600; + int minutes = seconds / 60; + seconds = seconds % 60; + return ( + (days ? to_string(days) + "d " : "") + + (hours ? to_string(hours) + "h " : "") + + (minutes ? to_string(minutes) + "m " : "") + + (to_string(seconds) + "s") + ).c_str(); text_sensor: - platform: template + id: uptime_human name: "${board_name} Uptime" - lambda: |- - uint32_t dur = id(uptime_sensor).state; - int dys = 0; - int hrs = 0; - int mnts = 0; - if (dur > 86399) { - dys = trunc(dur / 86400); - dur = dur - (dys * 86400); - } - if (dur > 3599) { - hrs = trunc(dur / 3600); - dur = dur - (hrs * 3600); - } - if (dur > 59) { - mnts = trunc(dur / 60); - dur = dur - (mnts * 60); - } - char buffer[17]; - sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur); - return {buffer}; icon: mdi:clock-start - update_interval: 60s + entity_category: "diagnostic" diff --git a/ge1mer/domofon_packages/button.yaml b/ge1mer/domofon_packages/button.yaml index 214d318..39c1297 100644 --- a/ge1mer/domofon_packages/button.yaml +++ b/ge1mer/domofon_packages/button.yaml @@ -1,4 +1,7 @@ button: + - platform: restart + name: "${board_name} Restart" + # Accept call - platform: template name: "${board_name} accept call" diff --git a/ge1mer/domofon_packages/number.yaml b/ge1mer/domofon_packages/number.yaml index 528e412..7cfa49e 100644 --- a/ge1mer/domofon_packages/number.yaml +++ b/ge1mer/domofon_packages/number.yaml @@ -5,6 +5,7 @@ number: id: led_brightness optimistic: true restore_value: true + entity_category: "config" initial_value: 7 min_value: 0 max_value: 10 @@ -18,3 +19,63 @@ number: light.control: id: rgb_led brightness: !lambda "return x > 0 ? x / 10 : 0.01;" + + # Delay before answer call + - platform: template + name: "${board_name} Delay Before Answer" + icon: "mdi:clock-time-two-outline" + id: relay_before_answer_delay + optimistic: true + restore_value: true + mode: box + unit_of_measurement: "ms" + entity_category: "config" + initial_value: 400 + min_value: 100 + max_value: 5000 + step: 100 + + # Delay between answer call and open/close door + - platform: template + name: "${board_name} Answer On Time" + icon: "mdi:clock-time-two-outline" + id: relay_answer_on_time + optimistic: true + restore_value: true + mode: box + unit_of_measurement: "ms" + entity_category: "config" + initial_value: 1000 + min_value: 100 + max_value: 5000 + step: 100 + + # How long the "open door button" will be pressed + - platform: template + name: "${board_name} Open On Time" + icon: "mdi:clock-time-two-outline" + id: relay_open_on_time + optimistic: true + restore_value: true + mode: box + unit_of_measurement: "ms" + entity_category: "config" + initial_value: 300 + min_value: 50 + max_value: 2000 + step: 50 + + # Delay in "answer" state after opening door + - platform: template + name: "${board_name} Delay After Open" + icon: "mdi:clock-time-two-outline" + id: relay_after_open_delay + optimistic: true + restore_value: true + mode: box + unit_of_measurement: "ms" + entity_category: "config" + initial_value: 500 + min_value: 100 + max_value: 5000 + step: 100 diff --git a/ge1mer/domofon_packages/script.yaml b/ge1mer/domofon_packages/script.yaml index 80ce36e..4fdb024 100644 --- a/ge1mer/domofon_packages/script.yaml +++ b/ge1mer/domofon_packages/script.yaml @@ -31,13 +31,13 @@ script: then: - logger.log: "Accept call" - script.execute: state_no_call - - delay: $relay_before_answer_delay + - delay: !lambda "return id(relay_before_answer_delay).state;" - script.execute: state_answer - - delay: $relay_answer_on_time + - delay: !lambda "return id(relay_answer_on_time).state;" - script.execute: state_open - - delay: $relay_open_on_time + - delay: !lambda "return id(relay_open_on_time).state;" - script.execute: state_answer - - delay: $relay_after_open_delay + - delay: !lambda "return id(relay_after_open_delay).state;" - script.execute: state_ready - globals.set: id: mode_mute_once @@ -48,9 +48,9 @@ script: then: - logger.log: "Reject call" - script.execute: state_no_call - - delay: $relay_before_answer_delay + - delay: !lambda "return id(relay_before_answer_delay).state;" - script.execute: state_answer - - delay: $relay_answer_on_time + - delay: !lambda "return id(relay_answer_on_time).state;" - script.execute: state_ready - globals.set: id: mode_mute_once @@ -216,4 +216,4 @@ script: then: - light.turn_off: id: rgb_led - transition_length: 0ms \ No newline at end of file + transition_length: 0ms diff --git a/ge1mer/domofon_packages/switch.yaml b/ge1mer/domofon_packages/switch.yaml index 92f4984..1e3ce28 100644 --- a/ge1mer/domofon_packages/switch.yaml +++ b/ge1mer/domofon_packages/switch.yaml @@ -1,7 +1,4 @@ switch: - - platform: restart - name: "${board_name} Restart" - # Automatically open door switch - platform: template name: "${board_name} automatically open"