Aller au contenu

Intégration Multiple Lua


chrispec

Messages recommandés

Bonjour,

 

J'ai 3 fenêtres et 3 portes fenêtres, tous équipés de VR.

 

J'ai une scène blocks qui ferme les 6 VR au coucher du soleil. Elle ne tient pas en compte la position ouvert/fermé des portes fenêtres.

 

Pour une porte fenêtre je fais une autre scène en LUA:

local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" )
and
 ( tonumber(fibaro:getValue(67, "value")) == 0 )
or
startSource["type"] == "other"
)
then
    fibaro:call(22, "close");
end

Comment me conseillez vous de faire pour intégrer deux autres VR à  fermer suivant la position ouvert/fermé des portes, et fermer les 3 VR de l'étage sans condition supplémentaire ?

 

Merki à  vous ;)

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 58
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Images postées

Et ça fonctionne ?

 

Première remarque, pour les portes fenêtres, avant de fermer les volets, je vérifierais que les fenêtres sont fermées (ça serait trop bête d'être enfermé dehors à  la tombé de la nuit...)

Lien vers le commentaire
Partager sur d’autres sites

@chrispec, lionel57 a raison, verifie si tes portes-fenetres sont ouvertes ou non avant de fermer les volets , imagine que tu sirotes une petite boisson desalterante a bulle ;-) au coucher du soleil et que tes volets se ferment....et hop dehors ;-)

Lien vers le commentaire
Partager sur d’autres sites

Ma première étape était de domotiser les VR. Fait.

La seconde étape, créer une scène pour les fermer tous le soir. ça marche nickel.

La troisième ... installer des fgk aux 3 VR de portes fenêtres. Installés.

La quatrième ... objet de ce post 'besoin d'aide' ... une seule: 3 VR de l'étage sans FGK (vais pas rentrer par la fenêtre du premier :D ) + 3 VR aux 'portes-fenêtres' avec FGK ne se fermant que si portes fermées ...

 

Voili ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Chrispec, peut tu éditer ton message et insérer les balises "code"   : <>

 

Merci

Désolé ... Je n'avais pas saisi ;)

 

Du taf, en accès distant, j'avais la V3.901. Par teamViewer ... 4.035

 

Et en rentrant ... erreur 503 ! :(

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Il faut que tu récupère la valeur du fgk

Si fgk = fermer alors je ferme le volet

Sinon la porte et ouverte

Mais regarde le tuto que j'ai fais ca te doonera une idée en une seul scene j ouvre et je ferme les volets apres je peux t aider pour ajouté les fkg

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Voici une mise à  jour pas encore testée. Vous semble t-elle correcte ? Le code peut-il être optimisé ?

 

Nuit+10mn = au couché du soleil + 10 minutes

--[[
%% properties
84 value -- id FGK Salon
67 value -- id FGK Cuisine
%% globals
Jour_Nuit
--]]

local startSource = fibaro:getSourceTrigger();
if (
( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" )
or
startSource["type"] == "other"
)
then
	fibaro:call(32, "turnOn"); -- lumière entrée
	fibaro:call(28, "turnOn"); -- lumière cuisine
	fibaro:call(26, "close"); --volet séjour
	fibaro:call(20, "close"); -- volet Chambre fille
	fibaro:call(18, "close"); -- volet Chambre fils
	fibaro:call(16, "close"); -- volet Chambre parents
end

if (
( tonumber(fibaro:getValue(84, "value")) == 0 )  --FGK salon
and
( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" )
or
startSource["type"] == "other"
)
then
	fibaro:call(24, "close"); --volet salon
end

if (
( tonumber(fibaro:getValue(67, "value")) == 0 ) -- FGK cuisine
and
( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" )
or
startSource["type"] == "other"
)
then
	fibaro:call(22, "close"); -- volet cuisine
end

	


Lien vers le commentaire
Partager sur d’autres sites


local J_N = fibaro:getGlobalValue( "Jour_Nuit" );

local Id = {}

local IdValue = {}

Id = {32, 28, 28, 20, 18, 16} -- Id des volets roulants

IdValue = {"turnOff", "turnOff", "close", "close", 0, 0} -- Valeur 0=Fermer - 99 = Ouvert

for i = 1,#Id do

local TestName = fibaro:getName(Id)

local TestValue = fibaro:getValue(Id, "value")

if IdValue == "open" or IdValue == "close" or IdValue == "turnOn" or IdValue == "turnOff" then

fibaro:call(Id, IdValue);

else

fibaro:call(Id, "setValue", IdValue); -- Commande Module

end

fibaro:debug("---------------------")

fibaro:debug("Nom = " ..TestName)

fibaro:debug("Valeur = " ..TestValue .." - Valeur demander = " ..IdValue)

end

Lien vers le commentaire
Partager sur d’autres sites

tu peux mettre 0 ou close cela dépend si tu utilises "setValue" dans le call

cela peut te permettre de fermer ou d'ouvrir tes volets avec la valeur que tu veux

il ne te restre plus qu'a ajouter les volets et FGK que tu veux

Lien vers le commentaire
Partager sur d’autres sites

Merci mrinfo.

Du coup quelques questions:

 

Quelle différence entre:

--[[
%% properties
84 value -- id FGK Salon
67 value -- id FGK Cuisine
%% globals
Jour_Nuit
--]]
 
local startSource = fibaro:getSourceTrigger();

et

 local J_N = fibaro:getGlobalValue( "Jour_Nuit" );
 
local Id = {}
local IdValue = {}

Pourquoi déclarer J_N  ainsi ? sans l'utiliser ensuite ?

 

Quelle différence entre:

fibaro:call(Id[i], IdValue[i]);

et

fibaro:call(Id[i], "setValue", IdValue[i]);

Et à  quoi sert:

 fibaro:debug("---------------------")
fibaro:debug("Nom = " ..TestName)
fibaro:debug("Valeur = " ..TestValue .." - Valeur demander = " ..IdValue[i])
Lien vers le commentaire
Partager sur d’autres sites

1 - c'est pas différent c'est complémentaire

 

on récupère la valeur de Jour_Nuit dans J_N

cela permet par exemple dans la même scénes d'ouvrir et de fermer les volets grâce a J_N

regarde ce poste http://www.domotique-fibaro.fr/index.php/topic/3959-ouverture-fermeture-allumer-eteindre-volets-lumi%C3%A9re-en-une-sc%C3%A9me/

 

la tu récupere la source du déclancheur

  • local startSource = fibaro:getSourceTrigger();

local Id = {} -- je déclare une table

exemple :

local Id = {15, 33, 44}

Id[1] = 15

Id[2] = 33

Id[3] = 44

#Id = 3 -- Nombre d'objet dans la table

 

- tu envoies une valeur comme open, close, turnOn etc....

fibaro:call(Id, IdValue);

 

- tu envoies une valeur de 0 à  99

0 = volet fermer ou lampe fermer avec un FGD

fibaro:call(Id, "setValue", IdValue);

 

Pour le debug ca me permet de savoir quel module sont actionnés

Lien vers le commentaire
Partager sur d’autres sites

@mprinfo

 

Que penses tu de ce code ? Optimisable pour cuisine salon et séjour ?

--[[
%% properties
%% globals
Jour_Nuit
--]]

-- Recupération de la valeur de la variable global Jour_Nuit
local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la sceme
fibaro:debug("Nombres de Scéme en cours = " ..num)

if (num == 1) then
local J_N = fibaro:getGlobalValue( "Jour_Nuit" );
fibaro:debug("Jour_Nuit = " ..J_N)


-- Fermeture des volets des chambres et allumage lumieres rdc
local Id = {}
local IdValue = {}

if J_N == "Nuit" then
Id = {16, 18, 20, 28, 34} – id des volets roulants et lampes rdc
IdValue = {0, 0, 0, TurnOn, TurnOn} -- Valeur 0=Fermer - 99 = Ouvert
fibaro:debug("Nuit")
end

--Fermeture volet cuisine si porte fenetre fermee
if J_N == "Nuit"
and
( tonumber(fibaro:getValue(107, "value")) == 0 )
then
	fibaro:call(22, "close");
end

--Fermeture volet salon si porte fenetre fermee
if J_N == "Nuit"
and
( tonumber(fibaro:getValue(115, "value")) == 0 )
then
	fibaro:call(24, "close");
end

--Fermeture volet sejour si porte fenetre fermee
if J_N == "Nuit"
and
( tonumber(fibaro:getValue(111, "value")) == 0 )
then
	fibaro:call(26, "close");
end

Lien vers le commentaire
Partager sur d’autres sites


-- Recupération de la valeur de la variable global Jour_Nuit

local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la sceme

fibaro:debug("Nombres de Scéme en cours = " ..num)

if (num == 1) then

local J_N = fibaro:getGlobalValue( "Jour_Nuit" );

fibaro:debug("Jour_Nuit = " ..J_N)

-- Fermeture des volets des chambres et allumage lumieres rdc

local Id = {}

local IdValue = {}

if J_N == "Nuit" then

Id = {16, 18, 20, 28, 34} – id des volets roulants et lampes rdc

IdValue = {0, 0, 0, TurnOn, TurnOn} -- Valeur 0=Fermer - 99 = Ouvert

VoletPorte = {22, 24, 26} -- Volet si porte fermée

Detecteur = {107, 115, 111} -- detecteur d'ouverture

fibaro:debug("Nuit")

end

for i = 1,#Id do

local TestName = fibaro:getName(Id)

local TestValue = fibaro:getValue(Id, "value")

if IdValue == "open" or IdValue == "close" or IdValue == "turnOn" or IdValue == "turnOff" then

fibaro:call(Id, IdValue);

else

fibaro:call(Id, "setValue", IdValue); -- Commande Module

end

if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur, "value")) == 0 ) then

fibaro:call(Detecteur, "close");

end

end

else

fibaro:debug("Nombre de Scénes en cours " ..num)

end

Lien vers le commentaire
Partager sur d’autres sites


×
×
  • Créer...