[alexa media player] définir une alarme en yaml?

Bonjour,
Savez vous comment définir une alarme de réveil sur un amazon echo particulier via l’appel d’un service alexa media player sur home assistant?
Je souhaiterai régler automatiquement l’heure de l’alarme pour le jour jour suivant selon des conditions définies .

j’ai trouvé :

service: media_player.play_media
target:
  entity_id: media_player.echo_dot_bureau
data:
  media_content_type: custom
  media_content_id: 'nouvelle alarme à sept heures du matin'
2 « J'aime »

Bonjour,

Je me permets de rebondir sur cet ancien post. En effet, comme indiqué ci-dessus, il est tout à fait possible de créer une alarme (ou un minuteur dans mon cas) en utilisant l’intégration Alexa Media Player et l’envoi de contenu type custom.

MAIS, mon problème est que ce la ne semble fonctionner qu’en utilisant des chiffres ou nombres écrits en toute lettres. Cela complique donc les choses quand on souhaite que la durée du minuteur soit fixée à travers une variable calculée. Il y a bien des fonction javascript pour transformer un nombre de chiffre à littéral mais cela complique vraiment les choses.

J’ai essayé d’utiliser des guillemets simples, doubles, des crochets, des parenthèses, … pour entourer le nombre en chiffre sans résultat positif.

Existe t il une solution simple à ce problème ?

Merci de votre aide

Philippe

peut être faire un template avec un dictionnaire?
[« un »,« deux »,« trois »,« quatre »,« cinq »,« six »,« sept »,« huit »,« neuf »,« dix »,« onze »,« douze »,« treize »,« quatorze »,« quinze »,« seize »,« dix-sept »,« dix-huit »,« dix-neuf »,« vingt »,« trente »,« quarante »,« cinquante »]

Oui, c’est sans doute une solution, comme celle de crée une fonction dans Nodered capable de faire la conversion. Mais la durée peut aller de 1 à 240 au moins. Cela devient réellement compliqué et lourd.

Je me dit qu’il doit y avoir un ‹ truc › pour que l’écho soit capable de lire un nombre en chiffre. D’ailleurs, il semble bien qu’en version « english », alexa comprends les nombres écrits en chiffre de ce que j’ai pu lire sur les forum englo saxons.

Je continue de chercher …

L’écho ne « comprend » les heures qu’au format Am/pm essai en lui spécifiant

Malheureusement, dans mon cas il s’agit d’une alarme donc une durée, et pas de notion d’AM/PM :smirk:

une alarme alexa se configure avec une date et une heure pas une durée.
si tu veux une durée c’est un rappel ou un timer que tu doit utiliser, pas une alarme
ou alors je n’ai pas compris ce que tu souhaites faire.

Dans mon cas, il s’agit de créer un timer (comme précisé sur mon premier message, mais décrit comme alarme dans mon précédent message, désolé !), mais le problème reste le même, i.e le texte servant à créer le timer doit avoir une durée écrite en lettres …

je ne relis pas les messages à chaque fois :slight_smile:
une petite fonction python qui fais le job en Français

chiffre= 12340523
bases=[("milliard",1e9),("million",1e6),("mille",1e3),("cent",1e2),("quatre vingt",80),("soixante",60),("cinquante",50),("quarante",40),("trente",30),("vingt",20),("dix",10)]
units=["zero","un","deux","trois","quatre","cinq","six","sept","huit","neuf",None,"onze","douze","treize","quatorze","quinze","seize"]
 
def main(value,skip=-1):
    if value < len(units) and units[value]:
        return [] if value <= skip else [units[value]]
    for name,v in bases:
        if value>=v:
            return main(int(value/v),1 if v <= 1000 else -1) + [name] + main(int(value%v), 0)
print("\n"," ".join(main(int(chiffre))))

à toi de voir si tu veux essayer de la convertir en un template
sinon en la modifiant légèrement tu peux appeler un script python via une automatisation
un exemple
https://mychromebook.fr/utiliser-du-code-python-dans-home-assistant/

voila ce que cela donne chez moi
image
input_number et input_text

input_number: # https://www.home-assistant.io/integrations/input_number
  chiffre_a_convertir_en_lettres:
    name: "chiffre en lettres"
    initial: 30
    min: 1
    max: 9999
input_text: 
  chiffre_converti_en_lettres: # https://www.home-assistant.io/integrations/input_text
    name: "chiffre converti en lettres"
    initial: ''

le script num.py à mettre dans le répertoire python_scripts

chiffre= float(hass.states.get("input_number.chiffre_a_convertir_en_lettres").state)
bases=[("milliard",1e9),("million",1e6),("mille",1e3),("cent",1e2),("quatre vingt",80),("soixante",60),("cinquante",50),("quarante",40),("trente",30),("vingt",20),("dix",10)]
units=["zero","un","deux","trois","quatre","cinq","six","sept","huit","neuf",None,"onze","douze","treize","quatorze","quinze","seize"]
 
def main(value,skip=-1):
    if value < len(units) and units[value]:
        return [] if value <= skip else [units[value]]
    for name,v in bases:
        if value>=v:
            return main(int(value/v),1 if v <= 1000 else -1) + [name] + main(int(value%v), 0)

hass.states.set("input_text.chiffre_converti_en_lettres", " ".join(main(int(chiffre))))   

et le service à appeler pour faire la conversion

service: python_script.num
data: {}

seul le chiffre 21 pose problème car retranscrit comme "vingt un "

pour résoudre le vingt et un

chiffre= float(hass.states.get("input_number.chiffre_a_convertir_en_lettres").state)
bases=[("milliard",1e9),("million",1e6),("mille",1e3),("cent",1e2),("quatre vingt",80),("soixante",60),("cinquante",50),("quarante",40),("trente",30),("vingt",20),("dix",10)]
units=["zero","un","deux","trois","quatre","cinq","six","sept","huit","neuf",None,"onze","douze","treize","quatorze","quinze","seize"]
 
def main(value,skip=-1):
    if value < len(units) and units[value]:
        return [] if value <= skip else [units[value]]
    for name,v in bases:
        if value>=v:
            return main(int(value/v),1 if v <= 1000 else -1) + [name] + main(int(value%v), 0)

hass.states.set("input_text.chiffre_converti_en_lettres", " ".join(main(int(chiffre))).replace("vingt un", "vingt et un"))   

Super !! Cela semble prometteur et vu que tu l’as testé pas de doute que cela fonctionne.
La possibilité d’appeler le script Python dans HA semble le plus simple. Je vais quand même chercher à comprendre le mécanisme du script (j’aime bien quand je comprends !! :laughing:) et pour voir si j’ai compris, pourquoi pas le reproduire en JS pour l’utiliser dans nodered :crazy_face:.
Merci beaucoup pour ton aide !