Comment passer un input number en paramètre dans un appel service?

Mon problème

Bonjour,
je viens de faire l’acquisition d’un module d’arrosage connecté compatible home assistant. J’avoue être déjà assez bluffé par les capacités de ce module via l’application propriétaire mais je souhaite me faire plaisir en le paramétrant dans HA et cerise sur le gâteau, cela me permet de m’améliorer. Mon niveau n’étant pas très élevé, je cherche à passer un input_number en paramètre dans le champ « minutes » mais je bugg (défaut de connaissance des templates) malgré mes recherches :sob:
la syntaxe du service est la suivante:

service: bhyve.start_watering
data:
  entity_id: switch.backyard_zone
  minutes: 15

J’ai crée l’automatisation suivante:

alias: test arrosage manuel
description: 'lance arrosage manuel si input arrosage_personnalisé activé et selon la durée définie dans le input duree_test'
trigger:
  - platform: state
    entity_id: switch.zone
    to: 'on'
condition:
  - condition: state
    entity_id: input_boolean.arrosage_personnalise
    state: 'on'
action:
  - service: bhyve.start_watering
    data:
      entity_id: switch.zone
      minutes: {{ (states('input_number.duree_test') }}
        
mode: single

dans le mode développeur lorsque je teste le service j’obteins le message d’erreur suivant:

échec d'appel du service "bhyve.start_watering". expected int for dictionary value @ data['minutes']. Got None

Je crois comprendre que la valeur « minutes » attend un entier…
Merci de votre aide.



## Ma configuration
___
## System Health

version | core-2022.4.2
-- | --
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
user | root
virtualenv | false
python_version | 3.9.9
os_name | Linux
os_version | 5.10.103-v8
arch | aarch64
timezone | Europe/Paris

<details><summary>Home Assistant Community Store</summary>

GitHub API | ok
-- | --
GitHub Content | ok
GitHub Web | ok
GitHub API Calls Remaining | 5000
Installed Version | 1.24.4
Stage | running
Available Repositories | 1034
Downloaded Repositories | 50

</details>

<details><summary>Home Assistant Cloud</summary>

logged_in | false
-- | --
can_reach_cert_server | ok
can_reach_cloud_auth | ok
can_reach_cloud | ok

</details>

<details><summary>Home Assistant Supervisor</summary>

host_os | Home Assistant OS 7.6
-- | --
update_channel | stable
supervisor_version | supervisor-2022.03.5
docker_version | 20.10.9
disk_total | 109.3 GB
disk_used | 11.6 GB
healthy | true
supported | true
board | rpi4-64
supervisor_api | ok
version_api | ok
installed_addons | File editor (5.3.3), Duck DNS (1.14.0), InfluxDB (4.4.1), Grafana (7.5.2), motionEye (0.11.0), Node-RED (9.1.3), Terminal & SSH (9.3.0), Mosquitto broker (6.0.1), Samba share (9.5.1), deCONZ (6.12.0), Visual Studio Code (3.4.1), Enedisgateway2mqtt (0.7.7-3)

</details>

<details><summary>Dashboards</summary>

dashboards | 3
-- | --
resources | 38
views | 18
mode | storage

</details>

<details><summary>MercedesME 2020</summary>

websocket_connection_state | connected
-- | --
api_endpoint_reachable | ok

</details>
___

Salut,

tu peux caster en int, ça devrait marcher.

{{ states("input_number.duree_test") | int }}

Merci mais cela ne marche pas…toujours le même message d’erreur.:roll_eyes:

C quoi comme module sans indiscrétion? J’ai du rainbird, et c peu intégrable à HA.

En fait là j’avais pas vu la fin de ton message!!

expected int for dictionary value @ data['minutes']. Got None

Le « got none » c’est pas normal. Ca veut dire que ton état ne passe pas bien là.
Normalement un état de base en une chaine de caractères donc type Str.

T’es certain que cette valeur est initialisée?
Tu peux vérifier dans Outils de développement > Modèles
Dans la zone de text met ça:

{{ (states('input_number.duree_test') }}

Et regarde si à droite tu vois bien ta valeur.

Je viens de tester. les accolades étaient de trop (message d’erreur) et en les enlevant j’obtiens désormais ce message:


Du coup je ne sais pas trop quoi en faire. merci de ton aide

c’est du b-hyve, module américain.

Salut
Remets les accolades: 2 paires, elles sont pas là juste pour la décoration…
Dans l’exemple de @AlexHass c’est la première parenthèse ouvrante qui est en trop

1 « J'aime »

Oups, souci de copier/coller :face_with_spiral_eyes:

Merci; Quel Model pour combien de zone/eletrovanne?

Salut,
modèle smart wifi hose tap timer 94990 pour une seule zone.


J’espère avoir répondu à tes attentes

Merci @Pulpy-Luke , le code fonctionne en effet pour la partie dev/modèle. Le input_number.duree_test change bien de valeur. Cependant dans mon automatisme, la valeur « minute » ne veut pas prendre la valeur de l’input ??

alias: test arrosage manuel
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.arrosage_personnalise
    to: 'on'
action:
  - service: bhyve.start_watering
    data:
      entity_id: switch.zone
      minutes:
        '[object Object]': null
mode: single

Je pense que cela vient de mon code qui ne doit pas respecter la doc ici: GitHub - sebr/bhyve-home-assistant: Orbit BHyve custom component for Home Assistant

je réponds à moi même et je remercie @Pulpy-Luke et @AlexHass
En fait après de multiples tests, il fallait tout simplement ajouter des guillemets comme ci dessous:

alias: test arrosage manuel
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.arrosage_personnalise
    to: 'on'
action:
  - service: bhyve.start_watering
    data:
      entity_id: switch.zone
      minutes: "{{ states('input_number.duree_zone_jardin') }}"
        
mode: single

et là tout fonctionne… quelqu’un a t il de la doc pour travailler la syntaxe? c’est quoi ce langage?

Bonne nouvelle.
Pour la syntaxe, regarde le Jinja2

:rofl: Mdr en fait c’était bon depuis le début, juste la parenthèse

Jinja2 ca ressemble à beaucoup d’autres scripts, c’est juste là l’utilisation des curly brackets {{…}} et {%…%} qui peut désorienter.