2023.12: Welcome home!

@marcus22 @Duke_box @SanderKo85 (and anyone else who had the thermostat card remove Power, Heat, Cool, Auto, etc)

The autogenerated UI will now default to exposing HVAC modes in the thermostat card, which will give you that functionality back without doing anything. This will be available in 2023.12.1, which is planned for tomorrow.

@Ih8rain2 it looks like you’ve taken control of your dashboard, you can add/remove features via the UI. Not sure if you saw that because your last post claims you can’t find them.

As for those who control your UI,

Result:

Also 2023.12.1 will bring back the 30 second scan interval for ping.

11 Likes

No I rolled back to the previous release where the thermostats looked fine to me. See my post.

Ok, just keep in mind that when you update (to any future release), you’ll need to add the features to your configuration because you aren’t running the default dashboard.

2 Likes

I checked features drop list but doesn’t have anything useful.
The only thing nice about the new thermostat (for me) is the ring. The rest is a step backwards

I would just be great full if the target temperature and the actual temperature would be switched.

2 Likes

and if you want your climates to use a saner step than 0.1 simply add

homeassistant:

  customize_domain:

    climate:
      target_temp_step: 0.5

works just beautifully

6 Likes

I suggest you vote for this Feature Request:

FWIW, I also prefer to see a larger current temperature (and smaller target temperature). My physical thermostat (an HAI Omnistat/2 that’s well over ten years old) displays it like that.

6 Likes

The thermostart card - not an improvement, at least not yet

First thing to draw the eye on a dashbord : the HUGE BRIGHT coloured mode-change buttons on each thermostat - not the thing you want to detect first. They are BRIGHT even when the thermostat is idle and otherwise low-tuned - seriously ?

Second thing you detect is the setpoint - which you already know - where is the current value, get your glasses…

The update removes functionality from the dashbord - yes it’s possible to get that back by making additional configuration - but that is not what you expect every end-user to do, typically it’s a task for the one(s) doing maintenance. Thus this was a breaking change - but not listed as one.

7 Likes

That won’t be a reason for adaptation… there probably is no real life thermostat around without a flame when heating, and yet… :wink:

1 Like
1 Like

Hi, Im having an issue of when you press a mode button on the new thermostat card it jumps up to the top of the page, how do I stop that?

Thanks

just tried it. For now, it’s useless.

You’ll have to provide more details. It’s working as expected on my end.

It had adapted to the long-standing convention for several years, up until this release when it appears that a tech bro chose to ‘disrupt the thermostat paradigm’. :thinking:

Here’s a video of what’s happening- https://youtu.be/87ecSI7cCOI?si=jRTCZwnQk-4xFuJO

If clearing your cache and refreshing the page does not work, create an issue and make sure to specify what browser you’re using to view HA.

I was really happy to see the CalDAV integration supporting ToDos/Tasks now. That has been one of the features I’ve been really hoping for.

I tried to use a a template in the due_datetime variable of the todo.add_item. However no matter what I tried, I only got an error.

The service call I tried looks something like this:

service: todo.add_item
target:
  entity_id: todo.chores
data:
  item: Fold the dried Laundry!
  description: Fold the dried Laundry!
  due_datetime: "{{ (now() + timedelta(hours=36)) }}"

However, even with something like due_datetime: "{{ (now() + timedelta(hours=36)).isoformat(timespec='seconds') }}", i.e. either returning the time as a datetime in the first example or as a str in the second, the service call fails, with the python-caldav package complaining:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/automation/__init__.py", line 655, in async_trigger
    await self.action_script.async_run(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1578, in async_run
    return await asyncio.shield(run.async_run())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 420, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 470, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 493, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 468, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 704, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 666, in _async_run_long_action
    return long_task.result()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2067, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2104, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 272, in handle_service
    return await service.entity_service_call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 878, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 948, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/todo/__init__.py", line 455, in _async_add_todo_item
    await entity.async_create_todo_item(
  File "/usr/src/homeassistant/homeassistant/components/caldav/todo.py", line 147, in async_create_todo_item
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/caldav/objects.py", line 765, in save_todo
    data=self._use_or_create_ics(ical, objtype="VTODO", **ical_data),
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/caldav/objects.py", line 733, in _use_or_create_ics
    return vcal.create_ical(objtype=objtype, **ical_data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/caldav/lib/vcal.py", line 184, in create_ical
    component.add(prop, props[prop])
  File "/usr/local/lib/python3.11/site-packages/icalendar/cal.py", line 194, in add
    value = self._encode(name, value, parameters, encode)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/icalendar/cal.py", line 145, in _encode
    obj = klass(value)
          ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/icalendar/prop.py", line 312, in __init__
    raise ValueError('You must use datetime, date, timedelta, '
ValueError: You must use datetime, date, timedelta, time or tuple (for periods)

Am I doing something wrong after all?

Edit: As asked by @petro, I opened a bug report.

1 Like

Sounds like you found a bug, can you please write it up?

1 Like

My sensors stopped working after Home Assistant Core 2023.12.0 was installed.

I don’t understand what needs to be done to fix the problem.

Hopefully, someone can tell me what I’m doing wrong.

I can no longer get sensor updates for:
sensor.smart_electric_meter_consumption
sensor.smart_electric_meter_power
sensor.smart_electric_meter_production

Here is my configuration.yaml:

sensor:
  - platform: command_line
    unique_id: xcel_meter_power
    name: "Smart Electric Meter Power"
    #command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '([+-]?[0-9]+)'"
    #   value_template: "{{ float(value) | multiply(0.001) | round(3) if is_number(value) }}"
    #   value_template: "{{ value | multiply(0.001) | round(3)}}"
    # value_template: "{{ float(value) if is_number(value_json) }}"
    unit_of_measurement: "W"
    device_class: "power"
    scan_interval: 5
    command_timeout: 5

  - platform: command_line
    unique_id: xcel_meter_consumption
    name: "Smart Electric Meter Consumption"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/3/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5

  - platform: command_line
    unique_id: xcel_meter_productiion
    name: "Smart Electric Meter Production"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/2/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5

The Example configuration in //Command Line says do this:
But It doesn’t work either.

Example configuration.yaml entry
command_line:

  • sensor:
    command: SENSOR_COMMAND
  • sensor:
    command: SENSOR_COMMAND_2

This is what I changed my configuration.yaml to look like:

command_line:
  - sensor:
    unique_id: xcel_meter_power
    name: "Smart Electric Meter Power"
    #command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '([+-]?[0-9]+)'"
    unit_of_measurement: "W"
    device_class: "power"
    scan_interval: 5
    command_timeout: 5

  - sensor:
    unique_id: xcel_meter_consumption
    name: "Smart Electric Meter Consumption"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/3/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5

  - sensor:
    unique_id: xcel_meter_productiion
    name: "Smart Electric Meter Production"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/2/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5

When I make the changes above, this is how it complains:

Close, it should be

command_line:
- sensor:
    unique_id: xcel_meter_power
    name: "Smart Electric Meter Power"
    #command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/1/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '([+-]?[0-9]+)'"
    unit_of_measurement: "W"
    device_class: "power"
    scan_interval: 5
    command_timeout: 5

- sensor:
    unique_id: xcel_meter_consumption
    name: "Smart Electric Meter Consumption"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/3/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5
 - sensor:
    unique_id: xcel_meter_productiion
    name: "Smart Electric Meter Production"
    command: "OPENSSL_CONF=/config/xcelcerts/myown/openssl.cnf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.0.226:8081/upt/1/mr/2/r --cert /config/xcelcerts/myown/cert.pem --key /config/xcelcerts/myown/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
    unit_of_measurement: "kWh"
    value_template: "{{ value | multiply(0.001) | round(3)}}"
    device_class: "energy"
    state_class: "total_increasing"
    #scan_interval: 86400
    scan_interval: 5
    command_timeout: 5
2 Likes