Input_select float

Viva,

Tenho um input select que me determina qual é o volune default do rádio, mas não estou a conseguir que fique operacional. Tentei várias maneiras, mas dá-me sempre erro de float, a indicar que não estou a passar um número float para o volume do rádio.

Está definido assim:

O código do script é o seguinte:


 play_radio:
    alias: Play Radio
    sequence:
      - service: media_player.volume_set
        data:
          entity_id: media_player.myemail_s_echo_dot
          volume_level: "{{states.input_select.radio_volume.state| multiply(0.1)|round(2)}}"
          #volume_level: '0.2'

O meu input_select que se vê na imagem acima é o seguinte:


  radio_volume:
    name: Volume Inicial Radio
    options:
      - "2"
      - "4"
      - "6"
      - "8"
      - "10"
    initial: "4"

O volume level:0.2 hard-coded que está comentado funciona muito bem. O outro dá erro na conversão para float, mas não consigo saber o que está a ser passado para lá.

O erro é o seguinte

voluptuous.error.MultipleInvalid: expected float for dictionary value @ data[‘volume_level’]

Outras variantes que já tentei sem sucesso:
volume_level: “{{states.input_select.radio_volume.state| multiply(0.1) | float }”
volume_level: ‘{{states.input_select.radio_volume.state| multiply(0.1)|round(2) | float}}’
Aceder à variável de outra forma: “{{ states(‘input_select.radio_volume’) }}”
(…)

(também tentei o mais fácil que foi colocar o input_select com valores entre 0 e 1 e passar diretamente, mas também foi sem sucesso).

Acredito que estou perto, mas não cheguei lá :frowning:

Podem dar-me alguma dica?

Tks!

Tens de tentar a variante em que o float está a seguir ao state|
:wink:

1 Like

Tinha ideia que já tinha feito, mas insisti novamente os seguintes sem sucesso:

“{{states.input_select.radio_volume.state| float | multiply(0.1)|round(2)}}”
“{{states.input_select.radio_volume.state| float | round(2)}}”
“{{states.input_select.radio_volume.state| float | multiply(0.1)|round(2)}}”

Haverá alguma forma de eu imprimir isto para fazer debug do que está a aparecer? Tenho um conjunto de outros inputs de texto que funcionam sem problemas :confused:

Explica lá isso mas agora em Português.

Aqui vai o contexto. No seguinte script:

play_radio:
    alias: Play Radio
    sequence:
      - service: media_player.volume_set
        data:
          entity_id: media_player.myemail_s_echo_dot
          volume_level: "{{states.input_select.radio_volume.state| float | multiply(0.1)|round(2)}}"

Estou a receber o seguinte erro:

voluptuous.error.MultipleInvalid: expected float for dictionary value @ data[‘volume_level’]

Eu queria saber se existe alguma forma de eu saber o que está a ser retornado nesta variável, para conseguir perceber o porqué de me estar a dar um erro de data type.

Há alguma forma de eu imprimir o valor daquela variável {{states.input_select.radio_volume.state| float | multiply(0.1)|round(2)}} para perceber o que vem dentro e que poderá estar a originar o erro?

@mfrodrigues conheces os ícones que ficam no rodapé do menu do lado esquerdo do HA e sabes para que servem?

Diria que sim, mas estamos sempre a aprender! :slight_smile:

Por exemplo, tenho o valor 4 definido. O media player aceita entre 0 e 1 e então faço o seguinte:
“{{states.input_select.radio_volume.state| float | multiply(0.1)|round(2)}}”

E o round(2) não faz nada por isso podia tirar.

Não consigo mesmo perceber o motivo de dar o erro no script porque aparentemente está tudo OK.

Está a dar um erro porque estás a misturar tudo. Experimenta colocar tudo dentro de parentesis e colocar o | float fora.

1 Like

Isto é um cast normal, não podia ser pelo cast. E quando vejo o preview na linguagem de templating aparece direitinho. Portanto tinha de ser uma coisa mais absurda. E de facto era!

O script recebia um string e não float porque não estava a processar em templating, porque eu tinha deixado ficar data:

Onde está a amarelo “data:”, deve ser “data_template:” Foi mesmo erro básico!

Código revisto:

 play_radio:
    alias: Play Radio
    sequence:
      - service: media_player.volume_set
        data_template:
          entity_id: media_player.myemail_s_echo_dot
          volume_level: "{{ states.input_select.radio_volume.state | float |  multiply(0.1) }}"

Obrigado pela ajuda!

2 Likes

Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade