Alexa-API Documentation

alexaapi icon

Installation du Plugin Alexa-API

Installer le Plugin depuis le Market

installationalexaapi1

installationalexaapi3

Note sur les versions :

Vous avez le choix entre la version Stable ou la version Beta.

Beaucoup de nouvelles fonctionnalités sont toujours plus présentes sur la Beta que sur la Stable mais elles sont en test.

Si vous êtes joueur et curieux, vous pouvez installer la version Béta.

Nota¬† Vous n’avez pas besoin d’installer Jeedom en Beta (c’est plut√īt d√©conseill√© d’ailleurs) pour installer le plugin en B√©ta.

Vous pouvez assez facilement passer d’une version Beta √† une version Stable et r√©ciproquement, il suffir de r√©installer par dessus l’autre version.

installationalexaapi4

Activer le Plugin

installationalexaapi5

Recharger les dépendances

installationalexaapi6

Générer manuellement le cookie Amazon

installationalexaapi7

S’identifier sur la pop-up d’Amazon

installationalexaapi8

Fermer la fenêtre dès que le Cookie Amazon est créé.

Lancer le Daemon s’il ne se lance pas tout seul

installationalexaapi9

Lancer le SCAN

installationalexaapi10

Les devices apparaissent, aller dans un device et dans Commandes lancer un Speak pour tester

Et voilà, Alexa parle en moins de 5 min !!

Mise à jour ou Changement de version

Que faire ?

Le plugin et son API √©tant vivants (Amazon n’ayant pas document√© l’API se permet de modifier au fil de l’eau ses protocoles), les mises √† jour permettent d’apporter des corrections dans les liens entre le plugin et le serveur Amazon.

Trois solutions pour avoir une installation opérationnelle :

  • Supprimer tous les √©quipements Amazon et leurs commandes et les recr√©er
  • Forcer la mise √† jour de toutes les commandes
  • Lancer un SCAN qui d√©tecte les nouveaux √©quipements ou les nouvelles commandes

Le choix entre ces trois solutions d√©pend du nombre de sc√©narios que vous avez d√©velopp√© gr√Ęce au Plugin Alexa-API. En effet, la premi√®re solution supprime tous les devices et toutes les commandes, elle supprimera donc celles ci dans vos sc√©narios. La seconde solution est plus respectueuse de vos sc√©narios car elle mettra √† jour vos commandes sans les supprimer et donc vos sc√©narios seront intacts mais si elle ne fonctionne pas, vous devrez utiliser la solution 1.

Solution 1 : Supprimer tous les équipements et leurs commandes et les recréer

C’est le mode le plus propre et le plus optimis√© puisque vous repartez avec une installation comme neuve des devices et de leurs commandes.

Pour se faire, il faut utiliser le bouton boutonalexaapi1

Attention, cette fonction supprime tous les équipements et leurs commandes, vous perdez donc tous les liens dans vos scénarios.

Solution 2 : Forcer la mise à jour de toutes les commandes

C’est le mode le plus simple et sans risque puisque vos √©quipements et leurs commandes ne sont pas supprim√©s. Ce for√ßage n’impacte donc pas vos sc√©narios.

Pour se faire, il faut utiliser le bouton boutonalexaapi2

Si vous ne souhaitez pas lancer le fo√ßage de mise √† jour sur toutes les commandes de tous les √©quipements, vous pouvez le lancer sur un seul √©quipement (et donc sur toutes ses commandes). Pour cela, rendez vous sur l’√©quipement concern√© et cliquez sur :

boutonalexaapi3

Solution 3 : Le SCAN

boutonalexaapi4

Notez enfin que le scan peut √™tre lanc√© √† tout moment, il n’impacte pas les √©quipements d√©j√† d√©tect√©s ni les commandes existantes, par contre, il recr√©e tous les nouveaux devices ou les devices supprim√©s. Il recr√©e √©galement toutes les nouvelles commandes ou les commandes supprim√©es.

Les écrans de gestion

Screenshot 2019 10 27 Alexaapi Jeedom

Scan

Permet de lancer automatiquement la détection de tous vos devices, vous pouvez le lancer quand vous le souhaiter, il ne supprime jamais de device ou de commande, pas de risque.

Configuration

C’est tout le moteur de param√®trage. si quelque chose ne semble pas assez intuitif, merci de nous le signaler, nous le documenterons ou le rendrons plus simple.

Santé

Donne des indications sur la santé de vos équipements

Routines

Donne la liste des routines enregistrées sur votre compte Amazon et permet de les lancer manuellement

Rappels/Alarmes

Donne la liste de vos alarmes ou rappels, permet de les supprimer. La d√©sactivation manuelle ne fonctionne pour l’instant plus.

Historique

C’est tout l’historique de l’activit√© de vos √©quipements Amazon, donne l’indication de succ√®s le cas √©ch√©ant.

Requêteur Info

Réservé aux utilisateurs avertis, il permet de questionner le serveur Amazon

Requêteur Action

Réservé aux utilisateurs très avertis, il permet de lancer des requêtes brutes au serveur Amazon

Les tuiles

A ce jour, chaque équipement peut générer 3 tuiles.

  • La tuile principale de l’√©quipement avec ses int√©ractions avec vous, vos ordres de speak, les alarmes/rappels, le volume et la possibilit√© de lancer les routines
  • La tuile du player multim√©dia
  • La tuile de la playlist en cours

La tuile de l’√©quipement principal

widgetprincipal

A : C’est la derni√®re int√©raction avec vous, notez que vous pouvez r√©cup√©rer cette information et l’utiliser dans un sc√©nario.

B : Vous pouvez lancer une routine en la sélectionnant dans la liste déroulante

C : Le volume, notez qu’il se met √† jour si vous modifiez le volume sur l’appareil. (Le volume d’un groupe est impos√© √† tous les devices du groupe)

D/E/F : C’est la prochaine alarme, alarme musicale ou rappel.

G : C’est un formulaire qui permet de faire parler Alexa.

La tuile du player multimédia

widgetplayer

La tuile de la playlist en cours

widgetplaylist

Commandes simples

Principe

Les commandes simples sont préinstallées à la détection des devices, vous disposez ainsi de commandes immédiatement utilisables.

Les commandes pr√©install√©es peuvent √™tre utilis√©es en l’√©tat dans des sc√©narios.

Sachez que toutes les commandes peuvent faire l’objet d’une adaptation personnelle, les utilisateurs avertis pourront cr√©er leurs commandes et les personnliser grace aux param√®tres possibles de chaque commande.

Cette documentation ne s’attarde que peu sur les commandes simples car leur utilisation est r√©fl√©chie pour √™tre intuitive, par contre, les commandes complexes sont d√©taill√©es dans le prochain chapitre.

Prochaine Alarme

Prochaine Alarme Musicale

Prochain Minuteur

Prochain Rappel

Ces 4 commandes INFO fonctionnent de la même manière.

Elles sont mises à jour automatiquement par le plugin (par MQTT et par CRON)

Le résultat est donné au format suivant : 2019-12-02 21:10:00

Si vous le voulez dans un autre format 2110 par exemple, un tuto explique comment faire.

Faire parler Alexa en SSML

Amazon a int√©gr√© le SSML √† ses √©quipements et cela permet de rendre extr√®mement naturel la mani√®re de parler. Vous pouvez personnaliser davantage les phrases en fournissant des d√©tails sur les pauses, ainsi que la mise en forme audio des acronymes, des dates, des heures, des abr√©viations…, vous pouvez √©galement choisir la langue de lecture, une citation ou une expression en langue √©trang√®re pourra ainsi √™tre lue avec l’accent √©tranger dans un texte de votre langue d’origine.

Contrairement aux autres commandes permettant de faire parler Alexa, sur cette commande, le choix a √©t√© fait de respecter scrupuleusement la syntaxe du protocole SSML, balises comprises. Il faudra donc utiliser les balises d’ouverture et de fermeture et √™tre rigoureux dans la mani√®re de coder ces phrases.

Voici des exemples :

<speak>
<voice name="Conchita">
<prosody  rate="medium" pitch="high">
Yé m'appel Conchita. yé fé lé ménache partou dans la maichon.</prosody></voice>
</speak>

ou

<speak>
Bonjour je peux lire du <say-as interpret-as="characters">SSML</say-as>.
Je peux faire une pause <break time="3s"/>.
Un chiffre cardinal <say-as interpret-as="cardinal">10</say-as>.
en ordinal <say-as interpret-as="ordinal">10</say-as>.
ou digit <say-as interpret-as="characters">10</say-as>.
</speak>

Quelques liens intéressants :

Commandes complexes

Principe

Les commandes simples (paragraphe précédent) sont préinstallées à la détection des devices, vous disposez ainsi de commandes immédiatement utilisables.

Les commandes complexes sont accessibles aux utilisateurs expérimentés et leur utilisation est bien plus difficile mais elles sont bien plus puissantes.

Notez que les commandes simples peuvent être personnalisées. Elles deviendront des commandes complexes.

Pour cela, utilisez le bouton (sous le tableau des commandes) :

boutonajoutercommandeaction

Vous pouvez vous aider des commandes pr√©install√©es pour en copier la syntaxe et utilisez la documentation ci dessous pour connaitre toutes les options possibles. Si vous souhaitez une autre fonction, un autre format ou que vous ne trouvez pas votre bonheur, contacter l’√©quipe de cr√©ation du plugin, il y aura toujours une solution pour vous.

Nota : Pour que la commande ¬ę¬†Ajouter une commande action¬†¬Ľ soit active, il faut cocher cette case dans la configuration du plugin :

Screenshot 2019 12 14 Alexa API Jeedom

alarm?when=#when#&recurring=#recurring#&sound=#sound#

Cette commande d’ajouter une alarme au device dans lequel est cr√©√©e la commande.

Voici les options :

  • when=YYYY-MM-DD HH24:MI:SS

exemple : 2019-12-31 21:36:00

Notez que les alarmes sont diff√©rentes des rappels et doivent √™tre dans un cr√©neau de 24h (une alarme pour le 31/12 au moins d’avril est impossible contratirement aux Rappels)

Ainsi, si aucune r√©currence n’est programm√©e (par le param√®tre reccuring), seule l’heure est prise en compte, le jour est ignor√© par Amazon.

  • recurring=#recurring#

La programmation de ce param√®tre est bien plus ais√© par un scn√©ario puisqu’une liste d√©roulante vous permet de facilement choisir la r√©currence. Mais cela peut √™tre fait manuellement dans une commande action avec le codage suivant :

P1D=Tous les jours
XXXX-WD=En semaine
XXXX-WE=Week-ends
XXXX-WXX-1=Chaque lundi
XXXX-WXX-2=Chaque mardi
XXXX-WXX-3=Chaque mercredi
XXXX-WXX-4=Chaque jeudi
XXXX-WXX-5=Chaque vendredi
XXXX-WXX-6=Chaque samedi
XXXX-WXX-7=Chaque dimanche

  • sound=#sound#

Il s’agit du son de l’alarme, #sound# peut √™tre remplac√© par :

system_alerts_melodic_01 pour Alarme simple
system_alerts_melodic_01 pour Timer simple
system_alerts_melodic_02 pour A la dérive
system_alerts_atonal_02 pour Métallique
system_alerts_melodic_05 pour Clarté
system_alerts_repetitive_04 pour Comptoir
system_alerts_melodic_03 pour Focus
system_alerts_melodic_06 pour Lueur
system_alerts_repetitive_01 pour Table de chevet
system_alerts_melodic_07 pour Vif
system_alerts_soothing_05 pour Orque
system_alerts_atonal_03 pour Lumière du porche
system_alerts_rhythmic_02 pour Pulsar
system_alerts_musical_02 pour Pluvieux
system_alerts_alarming_03 pour Ondes carrées

reminder?text=#message#&when=#when

Cette commande d’ajouter un rappel au device dans lequel est cr√©√©e la commande.

Voici les options :

  • when=YYYY-MM-DD HH24:MI:SS

exemple : 2019-12-31 21:36:00

  • text=#message#

Vous avez la possibilité de donner un titre à votre rappel.

whennextalarm?position=1&status=ON&format=hour

Nota : Cette commande est masqu√©e, c’est elle qui donne le r√©sultat dans la commande info : Next Alarm Hour

Cette commande permet de renvoyer la prochaine alarme du device dans lequel est créée la commande.

Attention, cette commande est une commande ACTION, elle doit √™tre reli√©e √† une commande INFO qui affichera le r√©sultat, regardez l’explication en dessous de la description des options.

Voici les options :

position=x

  • Mettre 1 pour la prochaine alarme
  • 2 pour la suivant
  • et ainsi de suite

Par défaut, position=1 si non spécifié

status=x

  • Mettre ON pour prendre en compte uniquement¬† les alarmes actives
  • Mettre OFF pour prendre en compte uniquement les alarmes inactives
  • Mettre ALL pour prendre en compte toutes les alarmes

Par défaut, status=ON si non spécifié

format=x

  • Mettre hour pour avoir un r√©sultat au format HH:MM (Attention, cet affichage est dangereux dans le cas o√Ļ vous programmez des alarmes au dela de 24h, cela est possible avec les r√©p√©titions)
  • Mettre hhmm pour avoir un r√©sultat au format HHMM
  • Mettre full pour avoir un affichage d√©taill√© yyyy-MM-dd’T’HH:mm:ss.SSS

Par défaut, format=hhmm si non spécifié

Nota : Si vous avez besoin d’un autre format, n’h√©sitez pas √† me le demandez, je l’ajouterai dans la prochaine version.

Création de la commande INFO qui affichera le résultat de la commande whenNextAlarm

La commande INFO qui vous donnera le résultat de le la commande WhenNextAlarm sera créée automatiquement dès que le champ Nom de la commande Info se trouvant dans la colonne Résultat dans sera rempli.

Explication de l’int√©raction entre la commande ACTION et la commande INFO

  • Quand vous lancez la commande ACTION, le serveur Amazon est interrog√© et la r√©sultat est affect√© √† la commande INFO
  • Quand vous lancez la commande INFO, Jeedom vous donnera donc le r√©sultat de la commande ACTION correspondante

(Tout cela est conçu dans la même logique que le plugin Virtual)

Nota : S’il n’y aura pas d’alarme prochaine, le serveur r√©pond ¬ę¬†none¬†¬Ľ.

whennextmusicalalarm?position=1&status=ON&format=hour

Fonctionne comme whennextalarm mais pour les alarmes musicales.

musicalalarmmusicentity?position=1&status=ON

Fonctionne comme whennextmusicalalarm mais fournit l’information MusicEntity qui correspond √† ce qui va √™tre jou√© √† l’heure de l’alarme.

whennextreminder?position=1&status=ON

Nota : Cette commande est masqu√©e, c’est elle qui donne le r√©sultat dans la commande info : Next Reminder Hour

Cette commande donne le prochain rappel, elle fonctionne exactement comme WhenNextAlarm.

deleteallalarms?type=alarm&status=all

Cette commande supprime tous les rappels et/ou alarmes du device dans lequel est créée la commande.

Voici les options :

type=x

  • Mettre alarm pour ne supprimer que les alarmes
  • Mettre reminder pour ne supprimer que les rappels
  • Mettre all pour supprimer les alarmes et les rappels

Par défaut, type=alarm si non spécifié

status=x

  • Mettre ON pour ne supprimer que les alarmes et/ou rappels actifs
  • Mettre OFF pour ne supprimer que les alarmes et/ou rappels inactifs
  • Mettre ALL pour supprimer toutes les alarmes et/ou rappels

Par défaut, status=ON si non spécifié

Nota : Pour que la suppression fonctionne, il faut que l’Alexa soit connect√© !!

command?command=#command#

Cette commande envoie une commande au device dans lequel est créée la commande.

Deux mani√®res d’utiliser cette commande :

  • Avec un sc√©nario

En passant par un scénario, vous laissez command?command=#command# comme commande action et vous aurez une liste déroulante dans le scénario, la liste déroulante vous propose toutes les commandes possibles.

  • Avec une commande directe

Dans ce cas, c’est au niveau des commandes du device que vous allez cr√©er une commande action par commande √† envoyer √† Alexa.

Vous utiliserez ainsi la synthaxe suivante : command?command=play pour lancer un play et command?command=pause pour faire une pause et ainsi de suite avec les commandes : pause play next prev fwd rwd shuffle repeat

Nota : STOP n’existe pas chez Amazon, il faut utiliser PAUSE

radio?station=#select#

Cette commande lance une station de radio sur le device dans lequel est créée la commande.

Pour une meilleure utilisation en Dashboard, cette commande a √©t√© simplifi√©e. On peut maintenant s√©lectionner la radio souhait√©e plut√īt que de copnnaitre par coeur le code (s0000) de la radio.

Ainsi, il faut dans un premier temps ¬ę¬†configurer¬†¬Ľ ses stations de radio dans la partie commandes du player qui va la lire.

Screenshot 2019 11 08 Alexaapi Jeedom

Par défaut, sont configurés : s2960|Nostalgie;s6617|RTL;s6566|Europe1

Il suffit de respecter le format idStation1|Nomstation1;idStation2|Nomstation2

Une fois vos stations configurez,vous pourrez les choisir sur le widget de la radio :

radios

Les stations :

Pour trouver les id des stations, allez sur le site https://tunein.com/radio/home/

Vous choisissez votre radio, et pour avoir l’id, cliquez sur partager, vous verrez dans le lien quelque chose qui commence par un s suivi de chiffres, c’est l’id.

Notez que le plugin est capable de vous donner l’id de la station en cours de lecture, la proc√©dure est identique √† TrackID, regardez ici

Utilisation d’une commande radio dans un sc√©nario

Pour utiliser une commande radio dans un scénario, il faut être un utilisateur expérimenté (dans la config) et savoir créer une nouvelle commande (dans le device player) :

Screenshot 2019 11 08 Alexa API Jeedom

Screenshot 2019 11 08 Alexa API Jeedom1

Sur cette nouvelle commande, on configure de mani√®re tr√®s simple en figeant l’id de la station (ou en utilisant une variable), par exemple :

Screenshot 2019 11 08 Alexaapi Jeedom1

routine?routine=#select#

Cette commande lance la routine spécifiée.

Deux mani√®res d’utiliser cette commande :

  • Avec un sc√©nario

En passant par un sc√©nario, vous laissez routine?routine=#select# comme commande action et dans le sc√©nario, dans le champ ¬ę¬†ID routine¬†¬Ľ, sp√©ficiez l’identifiant de la routine, cf. paragraphe ci dessous pour trouver cet identifiant.

  • Avec une commande directe

Dans ce cas, c’est au niveau des commandes du device que vous allez cr√©er une commande action.

Vous utiliserez ainsi la synthaxe suivante : routine?routine=xxxxx pour lancer la routine dont l’ID est xxxx

Pour trouver l’ID Routine :

Vous pouvez trouver facilement l’ID des routines en consultant l’√©cran ¬ę¬†Routines¬†¬Ľ du plugin, derni√®re colonne de droite.

playmusictrack?trackId=#select#

Cette commande lance la lecture de la piste de lecture Amazon music par son numéro de trackID.

Les trackID se configurent dans la commande action Ecouter une piste musicale dans votre equipement device, il s’agit d’une liste d√©roulante, donc avec la synthaxe suivante :

53bfa26d-f24c-4b13-97a8-8c3debdf06f0|Piste1;7b12ee4f-5a69-4390-ad07-00618f32f110|Piste2

Vous pouvez donc modifier vos pistes et leurs noms.

Screenshot 2019 11 03 Alexaapi Jeedom

Une fois la commande configur√©e, vous n’aurez plus qu’√† utiliser la liste d√©roulante qui sera propos√©e, autant sur le Dashboard que dans les sc√©narios

Comment trouver le trackID d’une piste Amazon-Music ?

Le plugine Alexa-API est capable de vous donner le trackID de la piste qui est en cours de lecture.

Pour cela, suivez ces étapes :

  • Allez dans les commandes de l’√©quipement que vous utilisez et cochez la case Afficher de la commande Amazon Music Id

amazonmusicidtrack

  • Une note de musique va apparaitre sur le Dashboard, sur la tuile de votre √©quipement, c’est ici qu’apparaitra l’ID
  • Lancez la musique et relevez l’information ainsi affich√©e

amazonmusicidtrack2

  • Vous gardez ou pas l’information sur votre dashboard, pour la supprimer, d√©cochez Afficher de la commande Amazon Music ID

Notez que cela fonctionne √©galement pour trouver l’ID d’une station de musique lan√ßable avec radio?station=#select#

Il a √©t√© constat√© par contre que pour certaines playlist, l’ID ne remontait pas. Pour √™tre certain de l’avoir, lancer uniquement la piste que vous souhaitez (et non dans une playlist).

Autres fonctionnalités

Modifier l’icone des players

Les images des tuiles des players sont les images envoyées par les serveurs des fournisseurs de musique.

Ces images sont des liens temporaires et donc vous pouvez vous retrouver avec des images vides. Cela donne cela :

tuile

Pour √©viter cela, les players ont √©t√© modifi√©s et en cas d’absence d’image, la miniature du lecteur est affich√©, cela donne :

tuile2

Si vous souhaitez modifier l’image, il suffit de remplacer le fichier logourl.png qui se trouve dans :

plugins/alexaamazonmusic/core/config (par exemple, modifiez amazonmusic pour les autres players)

One thought on “Alexa-API Documentation

  1. bonjour,

    j’ai suivi votre doc … sans succ√®s

    le cookie est créé mais rien
    je ferme, je scanne … rien
    je reviens sur la configuration, il me demande toujours de re-créer le cookie
    je le re-cr√©e … toujours rien

    avez vous une idée de ce qui peut clocher ?

    ps) que veut dire ¬ę¬†Configuration du plugin NB : Cette fonctionnalit√© n’est disponible que en local, pas √† distance !!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *