Help Controlling Fans with Assist – Can Turn Off All, But Not Turn On

Hi everyone,

I have a bit of a strange issue with Assist and controlling fans.

My house has 4 fans, and we often leave them running to help balance the temperature in different rooms. It’s super convenient to just say:

“Apaga todos los ventiladores” (Turn off all the fans)

And all of them turn off — no problem!

But when I try the opposite:

“Enciende todos los ventiladores” (Turn on all the fans)

Assist replies with:

“Lo siento, no he entendido” (Sorry, I didn’t understand)

This has me puzzled. Why can it turn off all the fans, but not turn them on?


What I’ve Tried

I followed the official troubleshooting guide, and things look correct at first glance. Here are the results from Developer Tools > Assist:

When I say “Enciende todos los ventiladores”:

intent:
  name: HassTurnOn
slots:
  domain: fan
details:
  domain:
    name: domain
    value: fan
    text: ''
targets: {}
match: false
sentence_template: <enciende> [todos] [los|el] (ventilador[es]|abanico[s]) [<de_aqui>]
unmatched_slots: {}
fuzzy_match: false

When I say “Apaga todos los ventiladores”:

intent:
  name: HassTurnOff
slots:
  domain: fan
  name: all
details:
  domain:
    name: domain
    value: fan
    text: ''
  name:
    name: name
    value: all
    text: ''
targets: {}
match: true
sentence_template: <apaga> todos los (ventiladores|abanicos)
unmatched_slots: {}
fuzzy_match: false

So it looks like it recognizes both intents.


Debug Output

From the voice assistant debug logs:

“Enciende todos los ventiladores”:

intent:
  engine: conversation.home_assistant
  language: es
  intent_input: Enciende todos los ventiladores
  conversation_id: *
  device_id: null
  prefer_local_intents: true
  done: true
  processed_locally: true
  intent_output:
    response:
      speech:
        plain:
          speech: Lo siento, no he entendido
          extra_data: null
      card: {}
      language: es
      response_type: error
      data:
        code: no_valid_targets
    conversation_id: *
    continue_conversation: false

“Apaga todos los ventiladores”:

  engine: conversation.home_assistant
  language: es
  intent_input: Apaga todos los ventiladores.
  conversation_id: *
  device_id: *
  prefer_local_intents: true
  done: true
  processed_locally: true
  intent_output:
    response:
      speech:
        plain:
          speech: Todas las luces apagadas
          extra_data: null
      card: {}
      language: es
      response_type: action_done
      data:
        targets: []
        success:
          - name: Ventilador 1
            type: entity
            id: fan.ventilador_1
          - name: Ventilador 2
            type: entity
            id: fan.ventilador_2
          - name: Ventilador 3
            type: entity
            id: fan.ventilador_3
          - name: Ventilador 4
            type: entity
            id: fan.ventilador_4
        failed: []
    conversation_id: *
    continue_conversation: false

So the issue seems to be "code: no_valid_targets" when trying to turn on the fans, but not when turning them off — even though the intent and entities are basically the same.


Questions

  • Why does Assist fail to find valid targets when turning on the fans, but not when turning them off?
  • All fans are controllable via UI and are shown as fan.* entities.
  • Is this a known bug, or am I missing something?

Thanks in advance for any help or suggestions!

HassTurnOn is a context-sensitive command and will only be executed if received via a voice terminal assigned to the area.

To be honest, this is implemented in a slightly confusing way for your language, because the identical command for turning off does this for all devices.
And the mirror command for the area requires explicit specification of the room.

          - "<apaga> [todos] [el|los] (ventilador[es]|abanico[s]) <de_aqui>"
          - "<apaga> [el|los] (ventilador[es]|abanico[s]) [<de_aqui>]"
1 Like

Thank you very much, now I understand what’s going on.

Any suggestion on how to have a mirror command? Should I propose this feature somewhere?

It depends on what you want.
If you want to organize the logic in the commands, then you can create an issue in the repository and discuss this question.
If you just want to turn on all the fans in the house with the command “Enciende todos los ventiladores,” create a voice automation for yourself.

1 Like