Créer un réglage du sensor

Bonjour
Je suis toujours dans la continuité à vouloir intégrer dans mon Home assistant un maximum de données de mon téléphone pour être autonome.

Aujourd’hui, je m’attaque au réglage des volumes. Mon objectif est de pouvoir contrôler un maximum de volume de mon smartphone à partir de mon Home Assistant. J’ai donc donné toutes les autorisations dans compagnon pour déjà voir ses données.

Je vais essayer de faire mon premier test sur la valeur sensor.mba_volume_level_call.J’ai fouiné un petit peu sur Google, j’ai vu qu’on pouvait créer un input_number sous forme de curseur.


Le problème c’est qu’après comment interpréter les données !
Avez-vous des exemples afin que je puisse essayer de créer mon curseur de variation ?
Merci d’avance.

Salut,

Il faut créer une automatisaiton qui prend ton input_number en entrée et appelle le service ci-dessous

Tu as un exemple un peu plus bas.

service: notify.mobile_app_mba
data:
  message: command_volume_level
  data:
    media_stream: music_stream
    command: 20

Cette fonction déjà fonctionne sur mon téléphone :slight_smile:

Oui sauf que la valeur 20 c’est pas la valeur de l’input_number :wink:

ça doit ressembler à ça

service: notify.mobile_app_mba
data:
  message: command_volume_level
  data:
    media_stream: music_stream
    command: >-
      {{ states('input_number.volume') }}

Si je met

service: notify.mobile_app_mba
data:
  message: command_volume_level
  data:
    media_stream: music_stream
    command: "20"

J’ai bien mon indicateur de volume qui bouge sur mon téléphone mais si je met


service: notify.mobile_app_mba
data:
  message: command_volume_level
  data:
    media_stream: music_stream
    command: "{{ states('input_number.volume') }}"

L’indicateur de volume ne bouge pas

Regarde les logs pour voir ce qui ne va pas…

Excuse mais on vois ca où ?

ça depends de comment tu lances tes commandes ?
Dans les services des outils dev (donc dans les logs HA) ? dans une automatisation (dans l’historique d’execution) ?

OK, bon ça vient de mon téléphone lorsqu’il est en veille la fonction ne marche pas. Par contre là je suis en train de tester du coup quand le téléphone n’est pas en veille, et regardez la vidéo.

Lorsque je bouge le curseur du volume à partir d’Home Assistant, ça ne fonctionne pas ! Je suis obligé de réactualiser l’appel du service de home assistant pour qu’il soit pris en compte sur le téléphone !

C’est le principe de base de HA… il faut passer par des automatisations ! Il n’y a pas moyen de « deviner » que ce curseur DOIT faire varier le volume du téléphone

Sur le principe, je suis 100 % d’accord avec toi sur la création, c’est autre chose.Si je regarde le principe d’une autorisation, je dois déterminer une valeur time, or j’en ai pas besoin ?

Si tu mets un declencheur sur l’input number et que l’automation deverouille ton tel puis appelle ton service ça devrait rouler…

Des que l’input number change… l’automatisation demarre…

1 « J'aime »

IL y a plein d’autres déclencheurs …
image
Si tu filtres avec un nom par ex ‹ state › (etat)
image
Tu as ce dont tu as besoin

1 « J'aime »

Voilà comment je vois les choses dites-moi si je me trompe.

Si je bouge input_number.volume et que la valeur soit > 15 ou < 1 cela déclenche Volume

alias: Volume_call
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - input_number.volume
    above: 1
    below: 15
condition: []
action:
  - service: notify.mobile_app_mba
    data:
      data:
        media_stream: music_stream
        command: "{{ states('input_number.volume') }}"
  - service: input_number.decrement
    metadata: {}
    data: {}
    target:
      entity_id: input_number.volume
mode: single

Volume étant input_number.volume


je ne comprend pas le décrement à la fin.

Et je ne comprend pas trop le trigger non plus:
Là tu déclenche si volume est entre1 et 15.
(above 1 => au dessus de 1, below 15 => en dessous de 15)
Mais du coup tu va déclencher une seule fois quand volume ‹ devient › entre 1 et 15.

J’aurai fait un truc encore plus brutal pour le déclencheur comme:

platform: state
entity_id: 
  - input_number.volume
for:
  hours: 0
  minutes: 0
  seconds: 5

si input volume change (quelle que soit la valeur) pendant plus de 5s (histoire de ne pas avoir trop d’appel au service « pendant » que tu bouge « volume » => je lance le service notify.

Je viens de tester ça avec un input number que j’avais:

alias: Test SG72
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.temperature_reduit_hiver
    for:
      hours: 0
      minutes: 0
      seconds: 5
condition: []
action:
  - service: notify.mobile_app_smartphone_doudou
    data:
      message: test {{states('input_number.temperature_reduit_hiver')}}
mode: single

Et ça marche comme je le pensais:

  • si je bouge la valeur de mon input number et qu’elle reste stable 5s j’ai une notification sur mon mobile avec la valeur de l’input-number.
  • Si je reste moins de 5s sur un palier, il ne se passe rien.

Bien sur tu n’es pas obligé de mettre un temps de confirmation. tu peux appeler ta notif dès que l’input-number bouge, ou réduire le temps (1s par exemple)

L’idée étant que si tu bouge ton curseur, ce n’est peut être pas la peine d’envoyer trop vite l’info à ton telephone…

De plus il faut peut être aussi le sortir de veille avant la notification non? Tu sais faire ça je crois…

Voici ce que j’ai fait.

Pourquoi du coup quand je l’intègre dans une carte, je ne l’ai pas sous forme de sélecteur coulissant ?

Il y a deux choses différentes:

  • l’entité input-number (qui prend des valeurs numériques)
  • l’automatisation (qui vit sa vie toute seule)

C’est l’input_number volume qu’il faut mettre dans une carte pour changer sa valeur (comme tu avais fait avant).

Si tu met l’automation dans une carte, ça te permet juste d’activer/desactiver l’automatisation.

Attention, Il faut que l’automatisation soit activée pour que quand tu bouges l’input number elle envoie une notification…

Si tu reprend ta video postée plus haut, c’est le même principe:

  • tu bouges le slider de ton coté
  • tu déclenches le service (appui sur le bouton bleu) et ton tel change de volume…

Sauf que le principe de l’automatisation, c’est d’être automatique et dès que l’automatisation a « vu » que tu avais changé le slider de l’input number et qu’il ne bouge plus depuis 5s elle déclenche toute seul le service (comme si elle appuyait sur le bouton bleu)…

Si je reprend mon exemple plus haut, ce n’est pas l’automation testSG72 qu’il faut mettre dans une carte mais input_number.temperature_reduit_hiver

1 « J'aime »

J’ai donc fait un test avec la carte Mushroom

type: custom:mushroom-number-card
entity: input_number.volume
tap_action:
  action: call-service
  service: input_number.set_value
  target:
    entity_id: input_number.volume
hold_action:
  action: call-service
  service: script.volume_call
  target: {}
fill_container: false


Voici une petite vidéo du résultat. On voit bien une notification qui arrive plus ou moins instantanément mais le réglage du téléphone ne s’effectue pas.

1 « J'aime »

OK j’ai compris, c’est normal, on s’est juste mal compris… et on touche au but !!!

Tu as juste repris les actions de mon exemple où je ne modifies pas le volume de mon téléphone, je fais « juste » une notification pour tester que le trigger marche…

Donc

Si tu fais juste ça:
une carte Mushroom (tu n’as pas forcément besoin des tap actions non?) :

type: custom:mushroom-number-card
entity: input_number.volume
fill_container: false

Et sans changer ton automatisation :
image

Lorsque tu bouges le slider et le laisse immobile 5s, les actions de l’automatisation vont être exécutées… Sauf que les actions c’est:
image
Donc envoyer une notification avec dans le message la valeur du volume, pas « régler le volume »…

Donc ça, ça marche comme prévu… Même si ce n’est pas tout à fait ce que tu voulais…

Je n’avais peut être pas été assez clair pour te dire de changer l’action, mon automatisation était surtout là pour tester le trigger… Donc il faut modifier les actions pour remplacer ma notification de test par l’action que tu faisais toi dans ta première vidéo pour régler ton tel:
image

Bref il ne te reste plus qu’à modifier l’automatisation pour avoir quelque chose comme ça:

alias: Volume_call
description: "Lorsque le slider volume a changé d'état 5s, le volume du telephone est mis à jour"
trigger:
  - platform: state
    entity_id:
      - input_number.volume
    for:
      hours: 0
      minutes: 0
      seconds: 5
condition: []
action:
  - service: notify.mobile_app_mba
    data:
      media_stream: command_volume_level
      command: "{{ states('input_number.volume') }}"
mode: single

Et là normalement, si tu bouges le slider. 5s apres le tel se met à jout (tu peux réduire ce délai si c’est trop long)

Et je te disais plus haut qu’il faudra peut être ajouter avant cette action:

  - service: notify.mobile_app_mba
    data:
      media_stream: command_volume_level
      command: "{{ states('input_number.volume') }}"

une autre étape pour sortir ton telephone de veille.