Aller au contenu

Gestion De "modes" Dans La Maison


Messages recommandés

Posté(e)

Suite aux nombreuses questions de nouveaux utilisateurs de la HC2, je vous propose un petit tutoriel sur la gestion manuelle de "modes" dans la maison.

 

Dans mon exemple, il y a 5 modes déclenchant chacun une scène différente (les modes étant "In" (Présence), "Out" (Absence), "Sleep" (Dodo), "Wake Up" (Réveil) et TV. Vous pouvez envisager bien d'autres scénarios (soirée romantique, fiesta à  la maison...) mais voici ceux par lesquels j'avais commencé mon implémentation domotique.

 

La première chose est de créer une variable globale qui enregistrera le statut de la maison. Il faut donc aller dans Panneaux > Panneau Variables puis créer une nouvelle variable prédéfinies en cliquant sur Ajouter. Il faut rentrer un nom (en faisant bien attention à  la casse (Majuscule, minuscule)) car cela pourrait avoir un impact dans vos scènes puis rentrer les différents modes. Afin de gérer des cas d'erreur, j'ai également créer pour cette variable une valeur "Default" que je détaillerais après.

 

post-3167-0-37880200-1453983608_thumb.png

 

Une fois la variable créée, il faut créer un nouveau VD (Virtual Device). Pour le faire il faut aller dans Modules > Ajouter un Périphérique Virtuel. En allant dans l'onglet Avancé, renseignez un nom, une pièce si vous le souhaitez. En dessous, choisissez le nombre de boutons que vous voulez faire apparaître puis cliquer sur "Ajouter un réglage". Vous vous retrouvez en dessous avec le paramétrage de ces boutons. Il suffit de répéter l'opération plusieurs fois pour obtenir plusieurs lignes comme dans l'exemple ci-dessous.

 

post-3167-0-84288400-1453983917_thumb.png

 

Dans chacun des boutons, nous allons mettre à  jour le statut de la maison en modifiant la valeur de la variable globale. Pour le faire, nous allons utiliser comme exemple l'instruction qui pour le bouton 'In' affectera la valeur In à  'Mode_Maison' (il faut également bien cocher "Code Lua" en bas des propriétés du bouton)

fibaro:setGlobal('Mode_Maison','In')

Afin de gérer le cas, ou nous voudrions rappuyer sur le bouton In une deuxième fois, nous allons passer par la valeur "Default" évoqué plus haut. Avec le code ci-dessous :

local value = fibaro:getGlobal('Mode_Maison')
if (value == 'In')
then
	fibaro:setGlobal('Mode_Maison','Default')
end
fibaro:setGlobal('Mode_Maison','In')

J'ai été amené à  rajouter ce code car le mode TV éteignait certaines lumières, hors si quelqu'un avait rallumé la lumière avec un interrupteur entre temps, la scène ne se déclenchait pas car la variable était déjà  en "Mode : TV". Le fait de repasser par le statut "Default" permet simplement de redéclencher la scène TV même si elle était déjà  en mode "TV" au préalable.

 

Une fois que vous avez créé l'ensemble de vos boutons et mis à  jour la valeur des différents modes, il faut créer les scènes spécifiques à  chaque mode.

 

Afin de faciliter la maintenance, j'ai choisi de créer une scène LUA par mode. Pour le faire, il suffit d'aller dans Scène > Ajouter une scène (Dans mon cas, j'ai utilisé du LUA mais vous pouvez également utiliser les scènes en mode bloc)

 

Ici, un exemple de code qui éteint 2 interrupteurs :

--[[
%% properties

%% globals
--]]


-- Liste des interrupteurs
local interId = {39,104}

fibaro:debug('TV Mode')
-- Arrêter les interrupteurs
for i = 1, #interId do
  fibaro:call(interId[i], 'turnOff')
end


Vous noterez que je n'ai rien mis sous properties, ni sous globals. En effet je ne souhaitais pas que l'ensemble des scènes se déclenchent lorsque la variable Mode_Maison a été mise à  jour. 

J'ai donc créer une scène principale qui se charge de lancer la bonne scène. Ce code utilise l'instruction

fibaro:startScene(XX)

Ou XX correspond au numéro de la scène à  lancer (Vous trouvez l'ID dans l'onglet Général de vos scènes).

 

Le code prend donc la forme ci-dessous :

--[[
%% properties

%% globals
Mode_Maison
--]]

local valueHouseMode = fibaro:getGlobal('Mode_Maison')


fibaro:debug(valueHouseMode)
if (valueHouseMode=='Out')
then
  	fibaro:debug('Out Scene')
	fibaro:startScene(10)
elseif (valueHouseMode=='TV')
then
  	fibaro:debug('TV Scene')
  	fibaro:startScene(11)
else
  	fibaro:debug('Switch Error')
end

Ce code est appelé à  chaque fois que la variable "Mode_Maison" est modifiée grâce aux lignes :

--[[
%% properties

%% globals
Mode_Maison
--]]

Puis nous récupérons, la valeur de "Mode_Maison" :

local valueHouseMode = fibaro:getGlobal('Mode_Maison')

Avant d'être testée pour lancer la scène qui nous intéresse

  	fibaro:debug('TV Scene')
  	fibaro:startScene(18)

Et voilà , vos scènes se lancent en fonction du changement de mode de votre maison. Vous pouvez bien évidemment compléter les différents modes en rajoutant des if / elseif en fonction de vos attentes. 

 

Il y a bien évidemment plusieurs solutions pour arriver à  ce résultat, mais j'ai considéré que c'était la manière la plus propre afin de limiter le nombre d'instances lancées en simultanées.

 

N'hésitez pas à  me faire part de vos remarques si certaines parties ne sont pas claires afin que je complète ce tutoriel qui a pour but de s'adresser aux débutants.

  • Upvote 8
Posté(e)

Merci

Moi qui suis jaloux des possibilités de la HC2 par rapport à  HCL, je suis frustré de constater quelque ligne plus bas que c'est pour HC2.

Je suggère pour des sujet de ce type soit de proposer une solution alternative pour HCL soit, dans le titre, mentionner HC2.

 

-_-

Posté(e)

@krastavac, pour le coup il y a un petit icone Tuto HC2  :) Sur le fond je suis persuadé qu'il doit être possible de faire un équivalent pour HCL, mais n'en ayant jamais eu une entre les mains je ne peux pas te proposer d'alternative malheureusement.

 

Pour le reste, je suis ravi de voir que ce petit tuto plait  ^_^

Posté(e)

C'est possible avec une HCL, il faut simplement un peu de plus de scène .

Sur le principe tu créés une variable qui reprend tes différents modes, tu créés autant de scènes qui change la valeurs de la variable  et tu regroupes le tout dans un VD qui appel les différentes scènes avec une commande HTTP.

Posté(e)

A vrai dire, j'étais bien motivé de passer à  une HC2 mais constatant que ma HCL avec quelques scènes basiques plante de manière intempestives, ça m'a refroidi. Je reste en observateur pour le moment et profite pour m'enrichir de cette expérience :)

 

Bon dimanche :60:

  • 4 semaines après...
Posté(e)

Bonsoir,

 

Merci pour le tuto.

 

J'avais une question, 

 

J'ai créée les variables

J'ai créée le VD, dans chaque texte du bouton j'ai mis le code

local value = fibaro:getGlobal('Mode_Maison')
if (value == 'In')
then
	fibaro:setGlobal('Mode_Maison','Default')
end
fibaro:setGlobal('Mode_Maison','In')
Posté(e)

puis j'ai créée une scène LUA pour éteindre comme dans l'exemple 2 lumières


--[[
%% properties
 
%% globals
--]]
 
 
-- Liste des interrupteurs
local interId = {39,104}
 
fibaro:debug('TV Mode')
-- Arrêter les interrupteurs
for i = 1, #interId do
  fibaro:call(interId[i], 'turnOff')
end
 

mais après j'ai pas compris ce qu'il fallait faire ?

 

Désolé je suis nouveau

 

merci pour votre aide

Posté(e)

Salut,

 

@D-GK

 

Merci pour ton tuto c'est exactement ce que je cherchai.

 

Que veux dire fibaro:debug('Switch Error'

 

Est'il possible de faire une scène pour activer exemple In et Out pour pouvoir le mettre en première page sur l'application Fibaro sur le Ipad ?

 

Merci pour ton aide.

 

Salutations.

Posté(e)

Salut pocket988, ravi que le tutoriel te serve :)

En fait cette scène teste la valeur de la variable globale. Si celle ci n'existe pas dans le if / elsif j'affiche un message. (Switch est simplement le moyen de faire les if / elsif dans d'autres langages)

À ma connaissance, il n'est pas possible de mettre un VD sur la page d'accueil de l'application tablette malheureusement.

Envoyé de mon SM-G901F en utilisant Tapatalk

Posté(e)

Salut.

Merci pour les explications. Je voulais faire la scène comme tu a fais mais nouveau làdedans je savais pas.

J'ai créée 2 scènes pour activer désactiver les scènes que j'ai mi sur la page principale de l'iPad.

Merci et bonne journée

Envoyé de mon iPhone en utilisant Tapatalk

×
×
  • Créer...