Sian-Lee-SA / honeycomb-menu

Honeycomb menu is a Home Assistant module (not a card) that can be applied to any lovelace card. When activated by the defined action on said card, the module will display a 'rounded' list of honeycomb buttons with an optional XY pad to make interfacing with lovelace more fluent
Other
203 stars 11 forks source link

Feature Request: XYPad behaviour extensions #71

Closed hilburn closed 1 month ago

hilburn commented 1 month ago

I've been playing around with the XYPad and had a think about things that would really expand the number of things that it could be used for (without needing to create custom services and the like)

Allowing us to set an initial value for the XYPad when clicked would be useful as this makes it much easier to do relative changes without needing a custom service like your light.relative_brightness/color referred to in the examples. As you mentioned, it can be done without this, but it's not exactly nice. For an idea of how this could look:

service: honeycomb
service_data:
  entity: light.kitchen   
    x:
      initial_value: '[[[ return entity.attributes.brightness ]]]' ## only updates when the pad is initially clicked
      service: light.turn_on
      service_data:
        entity_id: entity
        brightness: '[[[ return Math.max(Math.min({{x_initial_value}} + {{ x_percentage }}), 100),0) ]]]'

Additionally, I think expanding the action options as a whole could be very useful, and supercede the current format of only one service with some top level booleans deciding when it's fired - it would also potentially allow for different behaviour in the x/y directions e.g.

service: honeycomb
service_data:
  entity: light.kitchen   
    x:
      on_move:
        service: some service
        service_data: some data
    y:
      on_release:
        service: some other service
        service_data: some other data

To improve the on_move behavior a bit and also improve the UI a bit it would also be good to be able to assign a "value template" to the XYPad - e.g.

service: honeycomb
service_data:
  entity: climate.kitchen   
    x:
      min: -5
      max: 5
      value_template: '[[[ return Math.round({{x_percentage}}/10)/2 ]]]' ##-5 to 5 in steps of 0.5, useful for changing a temperature

I'd imagine this could be used to add "detents" to the pad movement, only updating when the value_template changes in value, and could similarly be used to limit calls to the on_move action

Sian-Lee-SA commented 1 month ago

Closed as not planned... Honeycomb is not actively developed for new features etc... although the license allows you to fork and customise to your heart content and use at your own descretion... enjoy 😄