Intelligence artificielle et domotique
 
AccueilPortailS'enregistrerConnexion

Partagez
 

 Tuto plugin Home Center 2

Aller en bas 
AuteurMessage
Admin
Admin
Admin

Messages : 106
Date d'inscription : 13/02/2019
Age : 36
Localisation : Belgique

Tuto plugin Home Center 2 Empty
MessageSujet: Tuto plugin Home Center 2   Tuto plugin Home Center 2 Icon_minitimeVen 15 Fév - 12:06

Bonjour,

Voici un tuto sur le plugin Home Center 2

Pour la Version PDF Téléchargeable ces ici : [Vous devez être inscrit et connecté pour voir ce lien]




Documentation Plugin Home Center de Fibaro pour SARAH

Auteur : e1000 (code inspiré du plugin Zibase de Baptiste MARIENVAL)
Version 0.3.2

1. CONFIGURATION : homecenter.prop
2. MODULES : devices.xml
3. ACTIONS : homecenter .xml
4. COMMENT ÇA MARCHE ?  

1. CONFIGURATION : homecenter.prop
Ce fichier contient les éléments indispensables pour la connexion à votre box Home Center de Fibaro : url Adresse IP ou nom de domaine sur lequel votre Home Center est accessible (ex.: 192.168.1.12). Pour connaître l'adresse IP de votre box, rendez-vous dans la partie Configuration puis Paramètres LAN.


[Vous devez être inscrit et connecté pour voir ce lien]


port
Port utilisé par le serveur de la box Home Center. Par défaut, le port 80 est utilisé.

username
Identifiant de l'utilisateur utilisé pour contrôle votre Home Center à distance. Il est conseillé de créer un compte dédié à cet usage, et de ne pas utiliser le compte Admin.

password
Le mot de passe correspondant au compte ci-dessus.

2. MODULES : devices.xml
Tous les périphériques que vous souhaitez contrôler via SARAH sont définis dans le fichier devices.xml.

La configuration se veut la plus simple possible et ne nécessite que 4 types d'informations.
À terme, la génération de ce fichier pourra être faite automatiquement.

Exemple :

<devices>
<!-- SONDES -->
<device name="temp_salon" type="com.fibaro.temperatureSensor" id="14" tts="La température du salon est de %s degrés " />
<device name="hygro_sdb" type="com.fibaro.humiditySensor" id="55" tts="L'hygrométrie de la salle de bain est de %s pourcent " />
<device name="lumi_entree" type="com.fibaro.lightSensor" id="132" tts="La luminosité de l'entrée est de %s pourcent " />
<!-- DETECTEURS -->
<device name="mouvement_sam" type="com.fibaro.motionSensor" id="9" tts="Mouvement dans la salle à manger " />
<device name="ouverture_2" type="com.fibaro.doorSensor" id="96" tts="Capteur de porte 2 ouvert " />
<device name="fumee_chaufferie" type="com.fibaro.FGSS001" id="218" tts="Il y a de la fumée dans la chaufferie " />
<device name="chaleur_combles" type="com.fibaro.heatDetector" id="227" tts="Température anormale dans les combles " />
<device name="inondation_buanderie" type="com.fibaro.FGFS101" id="186" tts="Inondation dans la buanderie " />
<!-- com.fibaro.binarySwitch -->
<device name="lampe_cuisine" type="com.fibaro.binarySwitch" id="39" tts=" la lampe de la cuisine " />
<device name="machine_a_laver" type="com.fibaro.binarySwitch" id="158" tts=" la machine à laver " />
<!-- com.fibaro.multiLevelSwitch -->
<device name="lampe_chambre" type="com.fibaro.multiLevelSwitch" id="80" tts=" la lampe de la chambre " />
<!-- VIRTUELS -->
<device name="volet_tous" type="virtual_device" id="102" tts=" tous les volets " buttonOn="1" buttonMy="2" buttonOff="3" slider="4" />
<device name="lampe_escalier" type="virtual_device" id="69" tts=" la lampe de l'escalier " buttonOn="1" buttonOff="2" />
</devices>
Pour chaque élément <device ... />, ont trouve :
name
Nom du module qui doit correspondre au nom utilisé pour les actions associées définies dans le fichier homecenter.xml décrit plus bas.
Ce nom doit être unique, mais ne doit pas obligatoirement correspondre au nom enregistré dans l'interface Home Center.

type
Type de module tel qu'ils sont définis dans l'API Fibaro. Il s'agit bien du type et non du basetype.
Ce paramètre est utilisé pour connaître les actions possibles sur ce module.

id
L'identifiant Home Center du module.

tts
Le texte que doit prononcer SARAH en retour lorsque l'action est réalisée. Pour les sondes, la chaine %s sera remplacée par la valeur retournée.

Dans le cas des modules virtuels uniquement, on trouve des paramètres supplémentaires :
buttonOn
Ce paramètre précise le numéro du bouton à presser pour activer le module via la commande pressButton en remplacement de la commande turnOn.

buttonOff
Ce paramètre précise le numéro du bouton à presser pour désactiver le module via la commande pressButton en remplacement de la commande turnOff.

buttonMy
Spécifique aux volets roulants Somfy, ce paramètre précise le numéro du bouton à presser pour mettre le volet en position « My ».

slider
Ce paramètre précise le numéro du slider permettant de régler le module via la commande setSlider en remplacement de la commande setValue.

Voici la liste (non exhaustive) des types de modules :

Capteurs ou sondes :
com.fibaro.multilevelSensor
Capteur générique
com.fibaro.lightSensor
Capteur de luminosité
com.fibaro.temperatureSensor
Capteur de température
com.fibaro.humiditySensor
Capteur d'humidité
Actionneurs :
com.fibaro.binarySwitch
Actionneur tout ou rien (On/Off)
com.fibaro.multilevelSwitch
Gradateur (ou Dimmer)
Détecteurs de sécurité :
com.fibaro.motionSensor
Détecteur de mouvement. Les périphériques esclaves de certains modules sont de ce type (exemple : capteur d'inondation FGFS101)
com.fibaro.FGFS101
Détecteur d'inondation
com.fibaro.FGSS001
Détecteur de fumée ; à noter que les détecteurs de deuxième génération (FGSD) sont également identifiés sous ce type
com.fibaro.heatDetector
Détecteur de chaleur anormalement élevée
com.fibaro.doorSensor
Détecteur d'ouverture
Divers :
HC_user :
Utilisateur de la box
weather :
Informations météo
iOS_device
Téléphone ou tablette iOS
virtual_device
Périphérique virtuel
3. ACTIONS : homecenter.xml
Ce fichier contient l'ensemble de la grammaire et les actions à réaliser.
Quelques exemples :


<one-of>
<item>ouvre <tag>out.action.actionModule="turnOn"; out.action.ttsAction="j'ouvre"; out.action.button="1"; </tag></item>
<item>ferme <tag>out.action.actionModule="turnOff"; out.action.ttsAction="je ferme";out.action.button="3"; </tag></item>
<item>allume <tag>out.action.actionModule="turnOn"; out.action.ttsAction="j'allume"; </tag></item>
<item>éteint <tag>out.action.actionModule="turnOff"; out.action.ttsAction="j'éteint"; </tag></item>
<item>ferme <tag>out.action.actionModule="turnOff"; out.action.ttsAction="je ferme"; </tag></item>
<item>augmente <tag>out.action.actionModule="setValue";out.action.ttsAction="oké, je règle"; </tag></item>
<item>quelle est <tag>out.action.actionModule="getValue";out.action.ttsAction=""; </tag></item>
</one-of>

<one-of>
<!-- VOLETS -->
<item>le volet de la salle a manger <tag>out.action.module="volet_sam";</tag></item>
<item>le volet du séjour <tag>out.action.module="volet_sejour";</tag></item>
<!-- LAMPES -->
<item>la cuisine <tag>out.action.module="lampe_cuisine";</tag></item>
<item>la lampe de la cuisine <tag>out.action.module="lampe_cuisine";</tag></item>
<item>la lumière de la cuisine <tag>out.action.module="lampe_cuisine";</tag></item>
<!-- Sondes -->
<item>la température du salon <tag>out.action.module="temp_salon";</tag></item>
<item>l'hygrométrie de la salle de bain <tag>out.action.module="hygro_sdb";</tag></item>
<item>la luminosité de l'entrée <tag>out.action.module="lumi_entree";</tag></item>
</one-of>

<item repeat="0-1">
<one-of>
<item>à vingt cinq pour cent <tag>out.action.ttsDim=" à vingt cinq pour cent"; out.action.setValue=25;</tag></item>
<item>à cinquante pour cent <tag>out.action.ttsDim=" à cinquante pour cent"; out.action.setValue=50;</tag></item>
<item>à soixante quinze pour cent <tag>out.action.ttsDim=" à soixante quinze pour cent"; out.action.setValue=75;</tag></item>
<item>à cent pour cent <tag>out.action.ttsDim=" à cent pour cent"; out.action.setValue=100;</tag></item>
</one-of>
</item>

Les informations importantes de ce fichier sont :

actionModule
Action à réaliser ; les choix possibles sont :

Commandes de type tout-ou-rien (turnOn et turnOff) :
Utilisée pour allumer ou éteindre les lumières, activer ou désactiver les prises commandées, ouvrir ou fermer les volets roulants, etc.

Pour les périphériques à sortie variable tels que les gradateurs ou les commandes de volets roulants, et si la commande comporte une information de niveau (exemple : « à 50 % ») ce paramètre est ignoré au bénéfice de setValue (cf ci-dessous).

Commande de réglage (setValue) :
Utilisée pour régler l'intensité d'une lampe ou la position d'un volet roulant.

Si vous omettez de préciser le réglage, cette action sera remplacée par turnOn.

Commande de lecture (getValue) :
Utilisé pour lire la donnée d'une sonde, l'état d'un module, connaître la météo, etc.

ttsAction
Phrase prononcée par SARAH lorsque l'action est réalisée.

module
Le nom du module concerné par l'action. Ce nom doit correspondre à une (et une seule) des lignes <device> du fichier devices.xml.

setValue
Valeur à transmettre au module à sortie variable (dimmer, volet-roulant, etc.).
Cette valeur est comprise en 0 et 100 %.

ttsDim
Phrase prononcée par SARAH pour confirmer le réglage.

4. COMMENT ÇA MARCHE ?
Dans le code de la section précédente, 3 blocs sont mis en évidence. Nous allons les illustrer avec la commande suivante :
« Sarah, allume la lampe de la cuisine à 50 % ».

La description des ordres (en bleu)
La première partie, juste après la balise <item>, détaille la phrase à prononcer (toujours précédée de "Sarah", pour rappel).
Exemple : Sarah, allume ... va activer la ligne suivante :

<item>allume <tag>out.action.actionModule="turnOn"; out.action.ttsAction="j'allume";</tag></item>
À ce stade, SARAH sait qu'il faut allumer (car actionModule="turnOn") un module, mais ne sait pas encore lequel. Elle mémorise également le début de sa réponse tts (grâce à ttsAction="j'allume")

Le module à contrôler (en vert)
La première partie constitue le complément de la phrase à prononcer.
Exemple : ...la cuisine ou ... la lampe de la cuisine ou encore ...la lumière de la cuisine.

Dans l'exemple précédent, il y a ainsi trois façon de commander le même dispositif. C'est l'avantage de la méthode manuelle qui consiste à adapter les fichiers .xml pour que l'interaction avec SARAH soit la plus naturelle possible.

<item>la lampe de la cuisine <tag>out.action.module="lampe_cuisine";</tag></item>
Maintenant, SARAH sait que le module à commander est celui identifié par module="lampe_cuisine".
Elle sait donc qu'il faut « turnOn » le module « lampe_cuisine» c'est à dire « allumer la lampe de la cuisine »

SARAH va donc interroger le fichier devices.xml pour chercher l'id associé à lampe_cuisine (ici id="39") et pourra donc formatter l'url destinée à votre Home Center :

[Vous devez être inscrit et connecté pour voir ce lien]
Elle va également récupérer le paramètre tts=" la lampe de la cuisine" afin de compléter sa réponse :
j'allume la lampe de la cuisine

La commande pourrait s'arrêter là, et tout fonctionnerait parfaitement. Mais en fait, il est encore possible de compléter l'ordre donné à SARAH pour préciser le degré d'allumage de la lampe : ici, 50 %.

Le paramètre optionnel (en rouge)
Vous en avez maintenant l'habitude, la première partie permet de compléter la commande, c'est-à-dire la phrase prononcée à l'intention de SARAH.

Avant tout, le premier élément important est le paramètre repeat:

<item repeat="0-1">
On constate ici que ce paramètre peut être ajouté zéro ou une fois : il s'agit donc d'un paramètre optionnel, et si la phrase prononcée s'arrête à « Sarah, allume la lampe de la cuisine », ça ne constituera donc pas une erreur.

Mais on peut compléter avec « à cinquante pour cent » :

<item>à cinquante pour cent <tag>out.action.ttsDim=" à cinquante pour cent"; out.action.setValue=50;</tag></item>
La commande initiale (turnOn) est donc ignorée, et c'est l'action trouvée ici (setValue=50) qui sera envoyée à votre Home Center à la place.

Enfin, la réponse vocale de SARAH est complétée avec le paramètre ttsDim=" à cinquante pour cent"

En résumé, lorsque vous dite :
Sarah, allume la lampe de la cuisine à 50 %
SARAH traduit par :
turnOn 39 setValue 50
et confirme son action en répondant :
j'allume la lampe de la cuisine à 50 %

La requête sera formatée pour être envoyée à l'aide de la méthode POST à l'url :
[Vous devez être inscrit et connecté pour voir ce lien]
et les arguments (ici le paramètre 50) seront envoyés au format json dans le corps de la requête :
{"args":[50]}.
Dans le cas ou aucun argument optionnel n'est nécessaire (par exemple pour les commandes turnOn et turnOff), le corps de la requête est remplacé par
{"args":[null]}.

Note : les explications données ici ne sont qu'une approximation assez éloignée de la réalité, notamment sur la temporalité d'analyse des paroles et de formatage des requêtes, mais elles ont - je l'espère - le mérite de décrire de manière assez juste la logique de fonctionnement de SARAH.
Revenir en haut Aller en bas
http://s-a-r-a-h.forumactif.com
 
Tuto plugin Home Center 2
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tuto toshop Belle asiatique
» Center blog ?
» Petit soucis esthétique avec le tuto intitulé "ajouter un bouton de sauvegarde"
» Plugin manquant pour affichage lecteur WMP ??
» Colonne décalée avec le tuto "Avatar du membre ayant posté en dernier"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
S.A.R.A.H :: Plugin pour vos Box Domotique :: Home center 2 Fibaro-
Sauter vers: