Doc



Configuration

Cette section vous permet de contrôler vos configurations.
Il est possible d'en importer de nouvelles en téléchargeant des configurations prédéfinies via le site: http://jarvishome.fr
ou d'en créer une de toute pièce: Une fois "uploadée", une configuration peut être activée ou désactivée . Si elle est désactivée, elle n'aura aucun effet sur le comportement de votre Jarvis@Home.

Lorsqu'une nouvelle configuration prédéfinie a été chargée, il faut la configurer une première fois.
Pour cela, il suffit simplement de l'ouvrir et répondre aux questions. Généralement, il faudra saisir le nom de son majordome. Par exemple: Jarvis, Nestor, Amandine, le nom de votre choix, puis souvent les urls qui permettront de contrôler vos équipements. Après avoir répondu aux questions et cliqué sur "Save", votre configuration est prête.



Discussion

Cette section est le coeur de votre Jarvis@Home, Elle va définir comment il doit réagir.
Une discussion peut être démarrée soit par:

  • Un déclencheur "Trigger". Il s'agit d'un mot clé qui une fois reconnu permettra l'analyse des interactions
  • Une action à l'intérieur d'un scénario.
  • Par n'importe quelle phrase (Any Sentence). Dans ce cas, toutes ces interactions seront analysées à chaque phrase entendue.

Toute discussion démarrée doit être stoppée par l'action: "StopCurrentDiscussion". Sinon, une discussion démarrée ne sera jamais terminée.
Une fois que la discussion sera démarrée, ces interactions seront analysées.

Si le même "trigger" est présent dans plusieurs configurations, toutes les interactions de chacune de ces configurations font parties de la même discussion et elles seront donc utilisées par Jarvis@Home après avoir entendu le "trigger".

Pour définir un déclencheur, il faudra aller dans Sentence et créer une reconnaissance (recognition) ayant le type:
Dans les configurations prédéfinies, il y a une reconnaissance "Majordome" prédéfinie, avec pour valeur: "NomMajordome". Ce nom est, en fait, le titre d'un synonyme dont la valeur sera initialisée à la première ouverture de la configuration.

Interaction

Lorsqu'une discussion a été démarrée. Ses interactions sont alors analysées avec tout ce qui est entendu. Une interaction crée un lien entre un évènement et une activité qui peut être soit un Scénario, soit une Parole (Speech)
Chaque interaction peut être activée ou désactivée . Une interaction désactivée ne sera plus analysée. un évènement peut être soit:

  • La reconnaissance d'une phrase définie dans la section Sentence
  • Le changement d'un état de la discussion ou un évènement au sein de la discussion
    • Before Each Match: L'activité spécifiée est executée avant celle correspondant à l'interaction reconnue par Jarvis@Home
    • After Each Match: L'activité spécifiée est executée après celle correspondant à l'interaction reconnue par Jarvis@Home
    • When Discussion Terminates: L'activité spécifiée est executée lorsque la discussion prend fin
    • When Discussion Starts: L'activité spécifiée est executée lorsque la discussion démarre
    • When Sentence Received but nothing match: L'activité spécifiée est executée lorsqu'une phrase est entendue mais ne correspond à aucune interaction
    • When No Sentence Received: L'activité spécifiée est executée après un délai (en milli-secondes) si aucune phrase n'est entendue
    • When All Matches Are Executed: L'activité spécifiée est executée lorsque toutes les interactions correspondant à la phrase entendue ont été executées


Jarvis@Home tente de reconnaitre le plus d'interactions possibles à l'interieur d'une discussion. Il est donc possible de dire:
Nestor, ouvre le volet du salon et éteins la lumière du salon => si vous avez ces 2 interactions ("ouvre volet salon" et "éteindre lumière salon"), les 2 seront executées.



Recognition (Reconnaissance)

Cette section permet la configuration de la reconnaissance des phrases dans Jarvis@Home.
Elle est organisée en 3 sous-sections:


Phrase (Sentence)

Une phrase est définie par un titre et une liste de phrases qui devront être reconnues par Jarvis@Home.
Il est possible de donner un type à une phrase:

  • : Défini un déclencheur (trigger) qui pourra être utilisé dans la configuration de la discussion
  • : Spécifie que la phrase est une question (Ce type n'a aucun impact dans la gestion interne de Jarvis@Home, il pourra l'être dans une version future)
  • : Spécifie que la phrase est une réponse (Ce type n'a aucun impact dans la gestion interne de Jarvis@Home, il pourra l'être dans une version future)

Il est possible de donner plusieurs phrases à reconnaitre, exemple:
  ouvre volet salon
  monte volet salon

En jouant sur les synonymes et sur le nettoyage, il ne sera pas nécessaire de rentrer la totalité des phrases à reconnaitre, exemple:
Si on a dans les Synonymes:

  • volet, volet roulant
  • ouvrir, ouvre

et dans le Nettoyage: le, du

Et que vous dites:
Nestor, peux tu ouvrir le volet roulant du salon, s'il te plait?

  1. Nestor est détecté dans la phrase, la discussion est démarrée
  2. les mots en rouge sont supprimés par le nettoyage
  3. ouvrir et volet roulant sont remplacés par leurs synonymes respectifs: ouvre et volet
  4. Les interactions sont recherchées à l'intérieur de la phrase: peux tu ouvre volet salon , s'il te plait?
  5. ouvre volet salon a été détecté, le reste de la phrase est ignoré
  6. l'activité correspondant à l'ouverture des volets va être executée

Synonyme (Synonym)

Un synonyme est défini par son titre et par sa liste de mots.

Il est possible d'utiliser le titre d'un synonyme dans une Phrase (Sentence) ou un déclencheur (trigger). Exemple dans les configurations prédéfinies avec le titre: NomMajordome ou NomPièce.
Autre exemple:
Ouvre => Ouvre, ouvrir, ouverture, ouvrez, ouvres, réouvrir

Un synonyme peut être obligatoire ou optionnel pour le fonctionnement de la configuration.
Par exemple le synonyme: NomPièce ou NomMajordome doit être initialisé pour que la configuration fonctionne correctement.
pour cela, il faut qu'il soit marqué comme étant requis: et non pas
Les synonymes requis avec [default] écrit à la fin seront demandés à la prochaine ouverture de la configuration.


Nettoyage (Cleaning)

Cette section liste tous les mots qui ne doivent pas avoir d'impact sur les phrases à reconnaître.
Si l'on dit: "Ouvre le volet du salon" ou bien "Ouvre le volet dans le salon" du, le, la, dans peuvent faire partie du cleaning et ne pas avoir d'impact sur la phrase à reconnaître.



Speech (Paroles)

Cette section permet de définir tout ce que peut dire Jarvis@Home.
Afin de le rendre plus vivant, il est possible de définir plusieurs phrases pour la même réponse. En fonction de l'attribut: ou la phrase sera choisie au hasard ou dans l'ordre de la sequence. Il est possible d'executer un speech directement à partir d'un appel http, il suffit de cliquer sur l'icône à côté de chaque Speech.

Condition:
Devant chaque liste de paroles, il y a une condition qui peut être renseignée et sera évaluée juste avant l'execution. Elle doit contenir une expression booléenne. Si elle n'est pas renseignée, sa valeur est: Default
La parole ne sera executée que si sa condition est vraie.
Pour plus de détails sur les conditions voir: Expression



Scenario

Cette section permet de définir une suite d'actions à executer. Il est possible d'executer un scénario directement a partir d'un appel http, il suffit de cliquer sur l'icône à côté de chaque scénario.
Chaque action dans un scénario peut être activée ou désactivée .

Condition:
Devant chaque scénario, il y a une condition qui peut être renseignée et sera évaluée juste avant l'execution. Elle doit contenir une expression booléenne. Si elle n'est pas renseignée, sa valeur est: Default
Le scénario ne sera executé que si sa condition est vraie.
Pour plus de détails sur les conditions voir: Expression
Actions disponibles:

  • Tasker
  • TTS
  • Screen On
  • Open Url
  • Change Volume
  • Voice Recognition Start
  • Voice Recognition Stop
  • Speech
  • Comment
  • Set State
  • Remove State
  • Kill
  • Start Discussion
  • Stop Current Discussion
  • Execute Scenario
  • Set Variable
  • Http Get
  • Http Post
  • Ok Goole



State (Etat)

Cette section gère les catégories et les états.
Une catégorie est définie par un ensemble d'états, et un type: Globale ou Locale
Si la catégorie est définie Globale, alors un scénario dans une autre configuration pourra modifier sa valeur. Sous condition qu'elle soit également définie globale dans cette 2ème configuration

Une catégorie a également une valeur par défaut, qui peut être modifiée en cliquant sur:
Exemple de catégorie: Humeur
avec pour état: EnColere, BonneHumeur

Ces catégories peuvent être utilisées dans des conditions afin de personnaliser les scénarios et paroles.
Lorsqu'un état est assigné sur une catégorie, son état précédent est supprimé. Si son état est supprimé, c'est l'état par défaut qui sera positionné.



Variable

Une variable peut contenir une constante ou contenir une expression. Une variable peut être: Globale ou Locale
Si elle est définie Globale, alors un scénario dans une autre configuration pourra la lire et modifier sa valeur. Sous condition qu'elle soit également définie globale dans cette 2ème configuration
Une variable peut être obligatoire ou optionnelle pour le fonctionnement de la configuration.
Par exemple les variables définissant les URLs doivent être initialisées pour que la configuration fonctionne correctement.
Pour cela, il faut qu'elles soient marquées comme étant requises: et non pas
Les variables requises avec [default] écrit à la fin seront demandées à la prochaine ouverture de la configuration.



Expression

Une expression peut utiliser les méthodes se trouvant dans la section: API/Expression API.
En cliquant sur la section: Status, vous verrez les valeurs retournées par la plupart des fonctions.
Une expression peut utiliser des variables et/ou des opérateurs logiques.
Exemple d'expressions:

  • Humeur.BonneHumeur
    Cette expression peut être utilisée dans une condition. Si la catégorie "Humeur" a été définie sur: "BonneHumeur", alors cette expression retournera "Vrai", sinon elle retournera "Faux"

  • system.ip() == "192.168.0.21"
    Cette condition retournera "Vrai" si l'adresse IP de votre téléphone est 192.168.0.21, et retournera "Faux" pour tout autre valeur

  • system.ssid() == "MonWifi" ? "http://192.168.0.14" : "https://XXXXXXX.dns1.jeedom.com"
    Cette expression va évaluer la connection WIFI de votre téléphone et s'il est connecté sur le SSID: "MonWifi", alors l'expression va retourner la valeur: http://192.168.0.14, sinon elle retournera: https://XXXXXXX.dns1.jeedom.com



Vous trouverez davantage de détails sur la syntaxe pouvant être utilisés ici: syntaxe



Settings (Paramètres)

Device Name

Ce paramètre vous permet de nommer votre téléphone ou tablette. Ce nom sera affiché à coté du titre de la page Javis@Home. Cela permet, si vous utilisez plusieurs Jarvis@Home sur plusieurs téléphones ou tablettes de toujours savoir sur lequel vous êtes connectés.

Start Settings

Ce paramètre vous permet de définir un scénario à l'intérieur d'une configuration qui sera executé au lancement de Jarvis@Home. Par exemple, en choisissant, le scénario "Start" de la configuration "Nestor", au démarrage de Jarvis@Home, l'écran s'allumera, la page domotique de votre maison s'affichera (à configurer dans la configuration "Nestor") et une phrase dira qu'il est prêt à vous écouter.

HTTP Settings

Permet de définir le delai maximal d'une requète HTTP. Si le délai est dépassé, un message d'erreur sera diffusé.

Security

La clé HTTP API Key est une clé qui permet de sécuriser les appels HTTP à jarvis@Home. Cette clé doit être utilisée pour tous les appels HTTP.

State Notification

Permet de définir une URL contenant le terme: #VOICE_STATE# Ce terme sera remplacé par une valeur, définissant l'état de l'écoute vocale de Jarvis@Home. Lorsque la reconnaissance vocale est active. Cette url sera appelée régulièrement (toutes les 30 secondes). Si au bout de 30 secondes, il n'y a pas eu d'appel, alors il y a certainement un problème.

Si vous utilisez jeedom:
L'url doit être de la forme:
http://IP_JEEDOM/core/api/jeeApi.php?apikey=XXXXXXXXXXXXXXXXXXXX&type=virtual&id=***VIRTUAL_ID***&value=#VOICE_STATE#

Il faut installer le widget qui se trouve sur le market dans la section: Audio/Vidéo
Son nom: dashboard.info.numeric.JarvisHome
Puis créer un virtuel de cette façon:



et appliquer le widget Jarvis@Home (disponible sur le market) à ce virtuel
Prendre ensuite l'id du virtuel (sur le screenshot, c'est le 5772) et le mettre à la place de ***VIRTUAL_ID*** dans l'url de l'application.



Migration de la v1 à la v2

Pour executer des interactions jeedom

Il est cependant recommandé de ne plus passer par les interactions, mais directement par une configuration.
Il y a des exemples pour gérer des volets, une alarme, un store, une piscine, etc...
Ces configurations offrent davantage de possibilités et seront plus rapides à s'executer.


  1. Téléchargez la configuration "Jarvis v1"
  2. Démarrez l'application android et allez sur l'url indiquée. (Il est préférable d'utiliser un ordinateur de bureau, pour une navigation plus facile)
  3. Sélectionnez le fichier téléchargé et faites l'upload de la configuration dans Jarvis@Home
  4. Ouvrez la configuration "Jarvis v1"
  5. Remplissez les variables demandées
  6. Cliquez sur "Save" pour valider vos variables
  7. La configuration a changé, donc, sauvegardez la en cliquant sur la disquette rouge
  8. Dans les Settings (en haut à droite), vous avez la possibilité de définir un scenario au moment du démarrage de l'application. Par exemple, pour lancer une page web


Migration de l'api http

Afin de faire du TTS, l'url a changé, voici le format de la nouvelle:
     http://XXX.XXX.XXX.XXX:8181/jarvis?action=execute&type=TTS&data={"text":"Bonjour","volume":"100"}&jKey=ea9vn7q43nkekifnfkecf5rp80
le parammètre jKey peut être récupéré dans les Settings, dans l'onglet Security.



Migration de l'option "Ecoute non permanente"

Pour obtenir le même résultat, il faudra télécharger et installer la configuration: Ecoute Non Permanente (voir la section Téléchargement)



Migration de l'option "Ecoute la commande après le start"

Pour obtenir le même résultat, il faudra aller dans la page: Discussion et modifier le trigger de la discussion
Le changer pour la valeur: "Any Sentence", ce qui signifie que toutes les phrases seront analysées, même s'il n'y a pas eu de mot clé (ou majordome) dans la phrase.



Migration des urls (1 locale et 1 distante)

Pour cela, vous pouvez maintenant utiliser des variables et des expressions.
Au moment de définir votre url, mettez:
     system.ssid() == "VOTRE_SSID" ? "http://VOTRE_IP_LOCALE/cheminDeMonAction.html" : "https://VOTRE_IP_EXTERNE/cheminDeMonAction.html"
Vous pouvez également créer une configuration générale, qui contiendra une variable globale définissant la bonne adresse IP en fonction de votre connection wifi.
Exemple:
     variable globale: HTTP_SERVER
     valeur: system.ssid() == "VOTRE_SSID" ? "http://VOTRE_IP_LOCALE" : "https://VOTRE_IP_EXTERNE"

Ensuite vous pourrez utiliser cette variable globale "HTTP_SERVER" dans toutes vos URLs de n'importe quelle configuration.
Exemple d'utilisation:
     HTTP_SERVER + "/cheminDeMonAction.html"



Envoyer l'état de l'application par HTTP

Voir dans la section Settings