Scheduler card/custom component

I have a problem with a “Defective Schedule Entry”. I inadvertently created a schedule item yesterday with the date range of 30/04/2025 - 30/04/2025 and set the days for this schedule to run on as “Thursday”. I beleive I set the “Behavior after completion” to be “delete”. As soon as I saved that scheduled event it got displayed as “Defective Schedule Entry”

I realized I should have set the day as “Wednesday” not “Thursday” as there are no Thursdays in that date range. I see no way of removing this rogue entry now. Clicking on the orange item does not allow me to edit it. I have seen mention that the entries are located in a file :
.storage/sheduler.storage
I therefore tried editing that file using the Samba share addon to allow me access from my Windows PC. The file opens and I can easily find the enty in question so I tried widening the date range or adding more days than just Thursday. I can save the file and when I reopen it the edits I have made are there, however after a reboot of HA the edits are lost and the rogue entry is still there. I have also tried editing the scheduler.storage file using Studio Code Server and I’ve even restored the file from a recent backup but as soon as I reboot HA the file is back to how it was originally. So there must be some other place that has schedules stored but I have no idea where that might be.
If I look in Developer Tools at this entity this is what I see:

Any help would be appreciated.

On the scheduler card, I can’t seem to set times any more granular than 10 minutes in my iPhone. Is there any way to modify that? I saw mentions above of 5 min increments. Thanks

hoffsta Sean,

If you edit the scheduler card and select “Other” you can change the “Time Step Resolution” to something other than 10 minutes.

How do I set both hi and low temps when setting climate entity to auto mode? I’m only seeing a spot to set Temperature. Not sure if this sets the hi or the low? At any rate it doesn’t set anything on my thermostat.

I only get to set the Target temperature, and/or set heat on/off (electric baseboard heating).

With a heating/cooling system, it looks like the SCHEDULER can only set whether the system is set to Heat, Cool, or Off, and if desired a Target Temperature.

Yes, I think you’re right. But here in the high Texas panhandle there’s a month or 2 in the spring and fall where a storm will come through and we need a little heat again for a few days(AC has run for a couple weeks) so it’s just easier to use Auto instead of heat or cold. So I’ve been trying to hunt up a way to build a custom card that would set mode to Auto and set low and set high temp all in the same go without needing to make a bunch of temp helpers and automations.

Should using the custom option for schedular card work for set target_temp_hi and set target_temp_low? Here’s my script:

alias: Set climate Hall East
description: Sets climate parameters for scheduler-card
variables:
  target_entity: climate.hall_east
sequence:
  - data:
      target_temp_high: "{{ hi_temperature }}"
      target_temp_low: "{{ low_temperature }}"
    target:
      entity_id: "{{ target_entity }}"
    action: climate.set_temperature
  - delay:
      seconds: 1
  - target:
      entity_id: "{{ target_entity }}"
    data:
      fan_mode: "{{ fan_mode }}"
    action: climate.set_fan_mode
  - delay:
      seconds: 1
  - target:
      entity_id: "{{ target_entity }}"
    data:
      hvac_mode: "{{ hvac_mode }}"
    action: climate.set_hvac_mode
mode: single
icon: mdi:air-conditioner

Here’s my card on the dashboard:

type: custom:scheduler-card
customize:
  script.set_climate_hall_east:
    actions:
      - service: script.set_climate_hall_east
        name: Set climate
        icon: mdi:air-conditioner
        variables:
          hvac_mode:
            name: HVAC mode
            options:
              - value: heat
                icon: mdi:fire
              - value: cool
                icon: mdi:snowflake
              - value: "off"
                icon: mdi:power
          target_temp_high:
            name: Hi Temperature
            min: 60
            max: 80
          target_temp_low:
            name: Low Temperature
            min: 60
            max: 80
          fan_mode:
            name: Fan mode
            options:
              - value: auto
                icon: mdi:fan-auto
              - value: high
                icon: mdi:fan-speed-3
              - value: quiet
                icon: mdi:fan-speed-1
time_step: 1

And here’s the error log once it runs:

Logger: homeassistant.core
Source: core.py:2814
First occurred: 10:10:00 AM (4 occurrences)
Last logged: 10:27:00 AM

Error executing service: <ServiceCall script.set_climate_livingroom (c:01JTXBXYA3YTX94MA3PWRCA6DP): hvac_mode=heat, target_temp_high=79, target_temp_low=66, fan_mode=auto, entity_id=['script.set_climate_livingroom']>
Error executing service: <ServiceCall script.set_climate_livingroom (c:01JTXC58PBVPJYWXJ38P32QBQP): hvac_mode=heat, target_temp_high=80, target_temp_low=60, fan_mode=auto, entity_id=['script.set_climate_livingroom']>
Error executing service: <ServiceCall script.set_climate_hall_east (c:01JTXCQSBYS7BJP3BV3YCHTMG7): hvac_mode=heat, target_temp_high=80, target_temp_low=60, fan_mode=auto, entity_id=['script.set_climate_hall_east']>
Error executing service: <ServiceCall script.set_climate_hall_east (c:01JTXCX2D2TKSN5447ANZGZH74): hvac_mode=heat, target_temp_high=80, target_temp_low=60, fan_mode=auto, entity_id=['script.set_climate_hall_east']>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 2814, in _run_service_call_catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 2837, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 718, in _service_handler
    response = await self._async_start_run(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        variables=service.data, context=service.context, wait=True
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 674, in _async_start_run
    script_result = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 707, in _async_run
    return await self.script.async_run(script_vars, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1827, in async_run
    return await asyncio.shield(create_eager_task(run.async_run()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 526, in _async_step
    self._handle_exception(
    ~~~~~~~~~~~~~~~~~~~~~~^
        ex, continue_on_error, self._log_exceptions or log_exceptions
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 556, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 524, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1008, in _async_step_call_service
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<9 lines>...
    )
    ^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 624, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2759, in async_call
    processed_data: dict[str, Any] = handler.schema(service_data)
                                     ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 259, in __call__
    return self._exec((Schema(val) for val in self.validators), v)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 386, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 382, in _exec
    v = func(v)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/schema_builder.py", line 205, in __call__
    return self._compiled([], data)
           ~~~~~~~~~~~~~~^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 256, in _run
    return self._exec(self._compiled, value, path)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 386, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/validators.py", line 384, in _exec
    v = func(path, v)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/schema_builder.py", line 779, in validate_callable
    return schema(data)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/schema_builder.py", line 205, in __call__
    return self._compiled([], data)
           ~~~~~~~~~~~~~~^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/voluptuous/schema_builder.py", line 549, in validate_dict
    return base_validate(path, data.items(), out)
  File "/usr/local/lib/python3.13/site-packages/voluptuous/schema_builder.py", line 382, in validate_mapping
    raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected float for dictionary value @ data['target_temp_high']

Could someone point me in the right direction? what am I missing? Should this even work? Thanks!!

If your thermostat supports an auto heat/cool mode, then for the scheduler to allow you to set the high and low set points the following conditions need to be met:

  1. The timespan you are setting is configured for auto mode
  2. The thermostat supports a low and high set point for auto mode

If the timespan is configured as either heat or cool you will only get a single set point in the configuration for the timespan.

Ok. So this is a scheduler card limitation? Because with the system in cool mode I can run this and it works:

I wouldn’t say it’s a scheduler card limitation per se. I see the same thing with the default climate control card. All of the thermostats that I’ve worked with (which is admittedly only a handful, all z-wave) operate with temperature a set point that it tries to hold +/- 1-2 degree(s) when in heat or cold mode. Going to auto-mode uses those set points as the top and bottom of the range to hold.

1 Like

For using the scheduler card with garden lights. Is it possible to use a not before/after logic?
So i want lights to go on at 6:45 but not if its light.
And light go on at 22:00 but only if its dark.

Or should i just do that with automations?

Hello everyone,
Thanks to the creator.
I have a quick question. When I create a schedule, this appears every time. Is there a way to remove it?
image

Thanks.

Remg,

If you click on the “+2 entrees exclues”, those schedules excluded (from displaying) should appear.

It has to do with the tags you assign to a schedule, and the tag filter(s) in the current Scheduler Card (the Options page of a Scheduler shedule).

Hello, thank you for your reply. Unfortunately, I can’t find anything in the options section. Sorry, I’m not an advanced HA user yet.
Thank you.

See in your image, the TAGs area at the bottom.

This Scheduler window will only show your schedules that are tagged “arossage”. You likely have two other schedules that weren’t assigned the tag “arossage”

Can I ask for some help or guidance please?

I wish to use the Scheduler integration (along with the Lovelace Scheduler card) to run a script on a regular basis but that script takes parameters such as a target ‘entity_id’ and several other values.

I can’t seem to find a way to do this with the Scheduler.

This would be how I’d action it from an Automation but I’d prefer to use the Scheduler Card as it’s just easier to change the run times etc.

action: script.turn_on
metadata: {}
data:
variables:
entity_id: media_player.bathroom
type: preset
preset: 1
volume_level: 35
target:
entity_id: script.media_controller

Any ideas?

This used to work, but now there is nothing showing up and I cannot select anything.

1 Like

[SOLVED] Had to delete all of the yaml code and use a similar setup from this thread to get it to work.

I’ve been using the scheduler-component & -card for a few years & the schedules are working well. Thanks for the work, Neils.

I now have the need to add a condition to a schedule that turns a heatpump on & off. The integration read-me refers to an Options panel but I have been unable to find it in the UI. I tried adding the following to the card yaml then adding a new schedule but it made no difference.

customize:
  sensor.lowtempflag:
    states: ['on','off']

The current schedule turns the HP off at 2230 and on at 1000. I have a LowTempFlag template that is ON when outside temp < 1.5 celsius, (off, on). I want a condition that, at 2230, if LowTempFlag = ON, the schedule does not turn off the heatpump.

How do I implement this? In the card yaml? What’s the syntax & how is it applied to the 2230 time only?

I’m surely doing something wrong, but i cannot edit a schedule after i created it. (edit: I can alter the schedule, but not the action)
I made a schedule for my swimming pool pump. But i switch from Deconz to Z2M for all my smart switches. So i want to change the action. But i cant seem to do this? Is there a way without recreating all of them to change this?