Nerwyn / service-call-tile-feature

Home Assistant custom features for tile cards and more. Call any action using buttons, sliders, selectors, and spinboxes
Apache License 2.0
112 stars 4 forks source link

Selector doesn't select #41

Closed jherby2k closed 3 months ago

jherby2k commented 3 months ago

Checklist:

Release with the issue:

4.0.4

Last working release (if known):

N/A

Browser and Operating System:

Edge / Windows 11

Description of problem:

Not sure if this is just doc confusion or an actual bug, but i i set up a real simple selector here that isn't selecting anything. It highlights the current selection correctly - it just doesn't appear to actually change the selection when i click the buttons. Do we have to explicitly implement input_select.select_option via tap_action? That's not clear in the readme - sounds like it should be implicit. All the examples do seem to implement it, but they're much more complicated than what i'm trying to do here.

features:
  - type: vacuum-commands
    commands:
      - start_pause
      - locate
      - return_home
      - stop
  - type: custom:service-call
    entries:
      - type: selector
        entity_id: select.valetudo_rosie_mode
        options:
          - option: vacuum_and_mop
            icon: mdi:water
          - option: vacuum
            icon: mdi:water-off
jherby2k commented 3 months ago

this seems to be the minimum working config. The examples have an extra entity_id under each option that doesn't seem necessary.

features:
  - type: vacuum-commands
    commands:
      - start_pause
      - locate
      - return_home
      - stop
  - type: custom:service-call
    entries:
      - type: selector
        entity_id: select.valetudo_rosie_mode
        options:
          - option: vacuum_and_mop
            icon: mdi:water
            tap_action:
              action: call-service
              service: select.select_option
              data:
                option: vacuum_and_mop
              target:
                entity_id: select.valetudo_rosie_mode
          - option: vacuum
            icon: mdi:water-off
            tap_action:
              action: call-service
              service: select.select_option
              data:
                option: vacuum
              target:
                entity_id: select.valetudo_rosie_mode
Nerwyn commented 3 months ago

Do your options match the state of the vacuum? Is there an attribute they're supposed to match instead?

By default the config will autofill with the tile or parent entity ID and the select option service, but autofill can be disabled and the actions of each button overwritten.

jherby2k commented 3 months ago

no they don't match the state of the vacuum at all - there is a separate select entity for controlling this - select.valetudo_rosie_mode. I figured that by setting entity_id at the selector level that's what it would be selecting. Not the vacuum parent.

Nerwyn commented 3 months ago

Ah gotcha. I just tried with a select entity on my Home Assistant instance and it's working fine. I misread your original post. Yes, you have to define the service the selector options call. The configuration UI will autopopulate the entity ID (which isn't necessary but it's easier to do so than to not since it autofills for all custom features using the same code) and the tap action select/input_select.select_option service if you provide a select or input_select entity. Previously it was assumed that these services should be used if none was provided, but I should update the README to make it clear that it's now done by autofilling the tap action service call information.

Nerwyn commented 3 months ago

Updated the README to mention that selector options do need their action fields filled out, whether by autofilled by the UI or by the user.