ebusd icon indicating copy to clipboard operation
ebusd copied to clipboard

MQTT Homeassistant Support for "datetime" and "date" Fields

Open Xyaren opened this issue 1 year ago • 13 comments

Description

Similar to https://github.com/john30/ebusd/issues/1006 I would like to request Homeassistant MQTT Discovery support for date(times)s aswell.

Xyaren avatar Dec 30 '23 23:12 Xyaren

Hello, and happy new year. Same here, for Domoticz, I can't figure out how to get date working, I'm having a really hard time understanding how parsing is supposed to work...

guillaumezin avatar Jan 03 '24 21:01 guillaumezin

someone wants to find out how date+datetime are represented in HA when exchanged via MQTT?

john30 avatar Jan 07 '24 16:01 john30

Currently I suggest using text (with a regex as done in #1006 / f0d737d ) as there is no dedicated date / datetime / time entity supported for mqtt discovery:

Currently supported entities: https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery:~:text=Entity%20integrations%20supported%20by%20MQTT%20discovery

Same problem: https://community.home-assistant.io/t/mqtt-discovery-input-datetime/444720

Feature request: https://community.home-assistant.io/t/mqtt-discovery-time-datetime/663870 (Please Vote for the feature request to make it visible)

Xyaren avatar Jan 08 '24 11:01 Xyaren

Text would be enough for Domoticz. But to be honest, I don't need this anymore, I'm using Hc1SFMode and Hc2SFMode to set holiday mode and it seems to work as expected

guillaumezin avatar Jan 10 '24 19:01 guillaumezin

I add date and time in file "mqtt-hassio.cfg" on row 108 filter-name = ....|date|time|...

Change on rows from 148:

# HA integration: skip string/date/time types completely
type_map-string = string
type_map-date = date
type_map-time = time

Change on rows from 230:

type_switch-w-date =
    text,,,date = date,
    text,, = date,
    text,, =

type_switch-w-datetime =
    text,, = btime,
    text,, = dcfstate,
    text,, = datetime,
    text,, = bdate,
    text,, = 

type_switch-w-string =
    text,, = date,
    text,, = datetime,
    text,, = dcfstate,
    text,, = bdate,
    text,, = btime,
    text,, =

type_switch-date =
    sensor,, = date,
    sensor,, =

type_switch-datetime =
    sensor,, =

type_switch-string =
    sensor,, =

Change on rows from 330:

type_part-textdate = ,
  "command_topic":"%topic/set",
  "pattern": "^[0-3][0-9].[01][0-9].20[0-3][0-9]$"%state_class

type_part-textdatetime = ,
  "command_topic":"%topic/set"%state_class

type_part-text = ,
  "command_topic":"%topic/set"%state_class

image

Koky05 avatar Jan 11 '24 06:01 Koky05

Thanks for all the work on this, i still fail to understand how to declare anything in mqtt config file, but setting date is one of the most critical applications of ebusd im using.

Dinth avatar Jan 11 '24 06:01 Dinth

I can confirm the changes are working :) Be very careful with exposing the current date/time to homeassistant, as this will update VERY frequent and will pollute the history/recorder of your homeassistant instance.

I am planning to just use it for the holiday period, so that is not an issue.

I'll create a PR with the above changes. With the default settings this should not have any impact for any user if we do not change filter-name right? It would just allow editing of the dates for users having exposed any of the time/date/datetime properties themselves.

Xyaren avatar Jan 11 '24 09:01 Xyaren

I use local config files for eBUS Deamon so I also lower priority of that values. In other case you also can skip recorder for that values at all:

exclude map (optional) Configure which integrations should be excluded from recordings. (Configure Filter)

domains list (optional) The list of domains to be excluded from recordings.

entity_globs list (optional) Exclude all entities matching a listed pattern from recordings (e.g., sensor.weather_*).

entities list (optional) The list of entity ids to be excluded from recordings.

event_types list (optional) The list of event types to be excluded from recordings.

# Example filter to include specified domains and exclude specified entities
recorder:
  include:
    domains:
      - alarm_control_panel
      - light
    entity_globs:
      - binary_sensor.*_occupancy
  exclude:
    entities:
      - light.kitchen_light

Koky05 avatar Jan 11 '24 10:01 Koky05

I use local config files for eBUS Deamon so I also lower priority of that values. In other case you also can skip recorder for that values at all:

exclude map (optional) Configure which integrations should be excluded from recordings. (Configure Filter) domains list (optional) The list of domains to be excluded from recordings. entity_globs list (optional) Exclude all entities matching a listed pattern from recordings (e.g., sensor.weather_*). entities list (optional) The list of entity ids to be excluded from recordings. event_types list (optional) The list of event types to be excluded from recordings.

# Example filter to include specified domains and exclude specified entities
recorder:
  include:
    domains:
      - alarm_control_panel
      - light
    entity_globs:
      - binary_sensor.*_occupancy
  exclude:
    entities:
      - light.kitchen_light

I am aware of that, it's just something that you need to do explicitly. Therefore exposing the property by default would be a bad idea.

Xyaren avatar Jan 11 '24 11:01 Xyaren

I am aware of that, it's just something that you need to do explicitly. Therefore exposing the property by default would be a bad idea.

thats what I think as well. would be better to just prepare it in the integration file and having to enable it explicitly imho (also valid for #1134)

john30 avatar Feb 11 '24 13:02 john30

That is exactly what #1134 does. It does not automatically expose the attributes, just makes them editable if they are exposed.

Xyaren avatar Feb 11 '24 16:02 Xyaren

I noticed even with the additions of https://github.com/john30/ebusd/pull/1134 in place, time entities with the datatype HTI are not automatically exposed to HA.

e.g.

r,,Time,time,,,,3500,,,HTI,,,current time
r,,z1QuickVetoEndTime,Quick Veto End Time Zone 1,,,,1E00,,,HTI,,,manual override end time for zone 1

Does it require a separate HA template definition?

e.g. _templates.csv:

time3,HTI,,,time

chrizzzp avatar Feb 15 '24 12:02 chrizzzp

Any explanation on why the PR is not merged ?

Xyaren avatar May 13 '24 21:05 Xyaren