Aller au contenu
chrispec

Intégration Multiple Lua

Recommended Posts

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 ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

 

Voilà  ce que je te propose pour la fermeture des volets des portes fenêtres

 

post-1437-0-68108900-1425579269_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Moicphil,

 

Quand la page erreur 503 disparaitra en local... oui :3:

Partager ce message


Lien à poster
Partager sur d’autres sites

@Lionel57

 

J'ai ça actuellement:

scene01

 

Je n'arrive pas à  avoir un entre deux :

 

Une seule scène avec:

3 VR sans condition pour FGK

3 VR avec condition pour FGK

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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...)

Partager ce message


Lien à poster
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 ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Regarde sur le fofo j ai posté un script pour les volets tu pourras l adapté pour tes besoins assez facilement

Partager ce message


Lien à poster
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 ;)

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Tes contacteurs ont un statut "en alerte" si tes portes fenêtres sont ouvertes. Il faut donc les testes dans tes conditions

Partager ce message


Lien à poster
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

	


Partager ce message


Lien à poster
Partager sur d’autres sites

Suis pas un expert en LUA mais ca me semble pas mal, tu testes bien tes FGK et ta variable globale. Pour moi ca devrait fonctionner

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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])

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

merci de tes explications!

 

debug pour savoir ... tu le vois où ?

 

Donc:

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

C'est comme pour une valeur de slider ... de 0 à  99%.

Et pourquoi pas 100 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

De 0 a 99 ca fait bien 100

Debug permet de voir ce qui ce passe lors de l execution d un script

Dans la fenetre du bas tu vois les infos du debug

Partager ce message


Lien à poster
Partager sur d’autres sites

Regarde avec le tookit de krikroff tu veras que un volet ouvert a une valeur de 99

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Décale bien tes lignes comme j'ai fais sinon tu vas oublier un end

j'ai pas tester mais je crois que c'est ok

Partager ce message


Lien à poster
Partager sur d’autres sites

×