Creating a alarm clock

So this all looks super cool, but do you think we can take everything here and combine it together? As a noob at this it’s a little hard to follow, but I’m getting there. If we could sum up that would be awesome though. Thanks!

Here is the sample of complete code in my configuration.yaml…

input_slider: 
  alarmhour:
    name: Hour
    icon: mdi:timer
    initial: 9
    min: 0
    max: 23
    step: 1
  alarmminutes:
    name: Minutes
    icon: mdi:timer
    initial: 0
    min: 0
    max: 55
    step: 5

input_boolean: 
  alarmstatus:
    name: Wake Me Up
    initial: off
    icon: mdi:alarm-check
  alarmweekday:
    name: Weekdays Only
    initial: off
    icon: mdi:calendar

sensor: 
  platform: template
  sensors:
    alarm_time:
      friendly_name: 'Time'
      value_template: '{{ states.input_slider.alarmhour.state }}:{% if states.input_slider.alarmminutes.state|length == 1 %}0{% endif %}{{ states.input_slider.alarmminutes.state }}'

group:
  default_view:
    view: yes
    entities:
      - group.alarmclock
  alarmclock:
    name: Wake Me Up
    entities: 
      - sensor.alarm_time
      - input_slider.alarmhour
      - input_slider.alarmminutes
      - input_boolean.alarmstatus
      - input_boolean.alarmweekday

automation
  - alias: 'Wake Me Up'
    trigger:
      platform: template
      value_template: '{{ now.time().strftime("%-H") == states.input_slider.alarmhour.state and now.time().strftime("%-M") == states.input_slider.alarmminutes.state }}'
    condition:
      condition: or
      conditions:
        - condition: and
          conditions:
            - condition: state
              entity_id: input_boolean.alarmstatus
              state: 'on'
            - condition: state
              entity_id: input_boolean.alarmweekday
              state: 'on'
            - condition: time
              weekday:
                - mon
                - tue
                - wed
                - thu
                - fri
        - condition: and
          conditions:
            - condition: state
              entity_id: input_boolean.alarmstatus
              state: 'on'
            - condition: state
              entity_id: input_boolean.alarmweekday
              state: 'off'
    action:
      service: notify.notify
      data:
        message: 'Good morning. Time to Wake Up!'
        title: ""

Which show this in my HASS home screen…

17 Likes

Thanks! Really appreciated. You just have a little mistake in your template sensor: you handled the case where the minutes were 0, and added another 0, but you didn’t handled the case where they were set to 5. A more generic template: {{ states.input_slider.alarmhour.state }}:{% if states.input_slider.alarmminute.state|length == 1%}0{% endif %}{{ states.input_slider.alarmminute.state }}

2 Likes

yes. you are right. thanks!

Fantastic, thanks for the sum up!

I have a question !
When i want to put a transition on my light for the morning like that
- alias: "aurora 07h00" trigger: - platform: time after: "06:50:00" condition: - platform: state entity_id: input_boolean.reveil state: 'on' - platform: state entity_id: input_boolean.lightreveil state: "on" - platform: state entity_id: input_select.choixreveil state: "07:00" action: service: light.turn_on entity_id: light.chambre data: transition: 600

The light turn on but the transition doesn’t happen… the light is on with full brightness… it isn’t very peaceful to wake up…
Have you test that ?

1 Like

I updated my code to replace platform with condition in condition.
I think that my word transition was not good indented, a space was needed the T of transition had to be under the T of data.

I’ll try this tomorrow moring.

Working like a charm for me.

Thanks for sharing!!!

You’re welcome :smile:

This is awesome stuff guys! Thank you. As a noob of course I have at least one question! Would it be possible to add a duration slider? So that you can set how long the even triggers for? Obviously not useful as an alarm with notify, however, I’m thinking this would be amazingly useful as a timer module for a pool pump.
Im also not sure how to change the action to use a rpi_gpio switch… one thing at a time!
Thanks again for sharing!

Continuing the discussion from Creating a alarm clock:

I’ve tested the transition item as well, but unfortunately is not working for me.

Is there any limitation (as in plattforms,etc.) that might be impacting on it?

I’m working with custom Dimmers based on MySensors and I’m not sure if I’m missing anything.

When this triggers, the lights are going 100%, and I’d like to have a more progressive effect.

ideas?

thanks in advance

Hi davedan for me to succes i had to write automation like that

- alias: "aurora 07h55" trigger: - platform: time after: "07:45:00" condition: - condition: state entity_id: input_boolean.reveil state: 'on' - condition: state entity_id: input_boolean.lightreveil state: "on" - condition: state entity_id: input_select.choixreveil state: "07:55" action: service: light.turn_on entity_id: light.chambre data: transition: 600 brightness: 255

In the begining the transition didn’t work now it works fine.
Goos luck to you :slight_smile:

thank you @hokagegano,

quick question: The transition time is in secs? I can’t find the unit in the doc: https://home-assistant.io/components/light/

thanks in advance!

Yes transition is an integer in seconds :smiley:

Hello!
I would also like to have a duration slider and a repeat slider so that the alarm can be triggered every x hrs or mins. I am thinking of using it as a timer for my hydroponic pump. Since the delay feature won’t allow for template values ( e.g. minutes: ‘{{ input_slider.hydroponic_pump.state }}’) I’m finding very difficult to find a way to implement this. Can someone think of a solution?
Thanks!

1 Like

what you need is not an alarm clock function. just create an automation using time trigger. For example…

automation:
  trigger:
    platform: time
    # Matches every 2 hours
    hours: /2
    minutes: 0
    seconds: 0

That is a good way to do it, I suppose it would be possible to use a slider to input the time variables. The alarm clock drew my attention because of the “gui” adjustments.

I could still use the slider input and the time trigger, I swear I read somewhere time has both an after and before?
If so I could take the after and just use the “alarm” time, I could use the slider variables to take alarm time and add the duration time to give me the before. Assuming I can use before and after in that manner.

The question is: would it be possible to use the values input by the user through the input slider to feed the time trigger?

should be able to, I mean you are using those to input the time for the alarm.
Here is my snippet for the timer function, im currently testing it. I have absolutely NO idea if the syntax for the hour and minutes in the automation are correct!

##POOL TIMER ##
input_slider: 
  alarmhour:
    name: Hour
    icon: mdi:timer
    initial: 9
    min: 0
    max: 23
    step: 1
  alarmminutes:
    name: Minutes
    icon: mdi:timer
    initial: 0
    min: 0
    max: 55
    step: 5
  alarmdurationhour:
    name: Duration Hour
    icon: mdi:watch-export
    initial: 9
    min: 0
    max: 23
    step: 1
  alarmdurationminutes:
    name: Duration Minutes
    icon: mdi:watch-export
    initial: 0
    min: 0
    max: 55
    step: 5


input_boolean: 
  alarmstatus:
    name: Wake Me Up
    initial: off
    icon: mdi:alarm-check
  alarmweekday:
    name: Weekdays Only
    initial: off
    icon: mdi:calendar

sensor: 
  platform: template
  sensors:
    alarm_time:
      friendly_name: 'Time'
      value_template: '{{ states.input_slider.alarmhour.state }}:{% if states.input_slider.alarmminutes.state|length == 1 %}0{% endif %}{{ states.input_slider.alarmminutes.state }}'
    duration_time:
      friendly_name: 'Duration'
      value_template: '{{ states.input_slider.alarmdurationhour.state }}:{% if states.input_slider.alarmdurationminutes.state|length == 1 %}0{% endif %}{{ states.input_slider.alarmdurationminutes.state }}'


group:
  default_view:
    entities:
      - group.alarmclock
      - group.equipment
  alarmclock:
    name: Pool Pump Schedule
    entities: 
      - sensor.alarm_time
      - input_slider.alarmhour
      - input_slider.alarmminutes
      - sensor.duration_time
      - input_slider.alarmdurationhour
      - input_slider.alarmdurationminutes
      - input_boolean.alarmstatus
      - input_boolean.alarmweekday

  equipment:
    name: Equipment
    entities: 
      - switch.bedroom_switch
      - switch.pool_lights
      - switch.pool_pump
      - switch.waterfall

automation:
  - alias: 'Pool Pump On'
    trigger:
      platform: time
      after: '{{ now.time().strftime("%-H") == states.input_slider.alarmhour.state and now.time().strftime("%-M") == states.input_slider.alarmminutes.state }}'
      hour: '{{ now.time().strftime("%-H") == states.input_slider.alarmdurationhour.state }}'
      minutes: '{{ now.time().strftime("%-M") == states.input_slider.alarmdurationminutes.state }}'
    condition:
      condition: or
      conditions:
        - condition: and
          conditions:
            - condition: state
              entity_id: input_boolean.alarmstatus
              state: 'on'
            - condition: state
              entity_id: input_boolean.alarmweekday
              state: 'on'
            - condition: time
              weekday:
                - mon
                - tue
                - wed
                - thu
                - fri
        - condition: and
          conditions:
            - condition: state
              entity_id: input_boolean.alarmstatus
              state: 'on'
            - condition: state
              entity_id: input_boolean.alarmweekday
              state: 'off'
    action:
      service: switch.turn_on
      entity_id: switch.pool_pump