Aller au contenu

Messages recommandés

Posté(e)
il y a 9 minutes, pepite a dit :

local Ouvrants = false

if (Ouvrants == nil) then Ouvrants = false end

Ce genre de code me fait toujours iriser les poils. Je te laisse chercher pourquoi ;)

 

il y a 13 minutes, pepite a dit :

-- Alarme de nuit

-- test si toutes les lampes intérieures sont éteintes

--GEA.add (true, 1, "", {{"Function", function() LampesIntTmp = "Non" end}, {"Repeat"}})

for _,v in ipairs(groupeLampesInt) do

   GEA.add (v, 1, "", {{"Function", function() LampesIntTmp = true end}, {"Repeat"}})

end

Ne test pas si toutes les lampes intérieures sont éteintes mais belle et bien si au moins UNE est allumée. Attention, les commentaires doivent collés au code sinon cela porte, parfois, a d'énorme incompris/mégarde.

 

Sinon, le reste me semble pas trop mal. J'avoue ne pas comprendre ce genre d'usine à gaz mais pourquoi pas.

Tu as donc bien compris l'utilisation des variables de type "boolean" soit true/false.

  • Upvote 1
Posté(e)

hihi, heuu je ne peux pas te dire pourquoi, comment @jojo a besoin de ce genre de code. Ben je cherche mais je vois pas, c'est fonction du type ? ou Ouvrants = false or nil. J'avais un doute sur la syntaxe, "function", return true/false, value en condition. Si je veux false par exemple en condition,je me demandais si ceci etait juste :

...return toto, false end

 

Posté(e)

Alors "return toto, false" est réalisable, false sera utilisé dans #value# du message et va planté mais c'est pas grave si ce n'est pas utilisé. Tu aurais pu mettre "return toto". Dans ce cas #value# sera nul (nil) mais pas utilisé donc aucun soucis.

 

Par contre si je reviens sur le code 

local Ouvrants = false
if (Ouvrants == nil) then Ouvrants = false end

et que je r'ajoute les commentaires, tu vas vite comprendre mon désarroi :D

 

-- Initialisation de la variable "Ouvrants" avec comme valeur "false"
local Ouvrants = false

-- Si la variable "Ouvrants" n'est pas initialisée, la créer en mettant false
if (Ouvrants == nil) then Ouvrants = false end

-- Maisssss heeeuuuuu, laquelle des 2 lignes ne sert à rien.

 

  • Upvote 1
Posté(e)

Dans le cas de return toto, false, est-ce que ca lit la condition "false" tout de même ? je dirais oui..

 

soit l'une soit l'autre ;-). Naturellement, comme je fais d'hab,je n'aurais mis que la 1ere.

Et au pire, j'aurais fait un

local ouvrants = false or qqch

Posté(e)

Pour "return toto, false", 

toto (1er paramètre) est la condition true ou false

false (2ème paramètre) est la valeur

 

donc si "toto" est true, la condition sera donc respectée et la #value# sera remplacé par le 2ème paramètre "false" dans ce cas.

 

 

tu aurais pu faire

local Ouvrants = Ouvrants or false

 

  • Upvote 1
Posté(e)

Bonjour!

 

c'est à nouveau moi!

 

La variable TimeOfDay fonctionne correctement, en revanche pour les volets, la ligne d'ouverture fonctionne, pas celle de fermeture...

La voici:

for _,v in ipairs(VOLETSSB) do
  	GEA.add(Sunset, 15*60, "", {{"Days", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"}, {"Close", v, 100}})
  	end

c'est le 15*60 qui ne va pas? il vaudrait mieux un sunset+15?

 

Question 2:

 

je voudrais fermer le volet de ma baie vitrée à 19h mais uniquement si les portes vitrées sont bien fermées, autrement dit si mes capteurs FGK ne sont pas en alerte, j'ai rédigé mais bien sur ca ne marche pas!

 

GEA.add(true, 30, "", {{"Time", "18:00", "19:01"}, {"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0}, {"Close", DeviceID["volet_2"], 100}})
  

 

 

Posté(e)
il y a 7 minutes, Steven a dit :

Pour "return toto, false", 

toto (1er paramètre) est la condition true ou false

false (2ème paramètre) est la valeur

 

donc si "toto" est true, la condition sera donc respectée et la #value# sera remplacé par le 2ème paramètre "false" dans ce cas.

 

 

tu aurais pu faire


local Ouvrants = Ouvrants or false

 

 


@Steven

Moi je voudrais savoir comment tester la condition false pour ma culture hihi. Test de la condition true je pense que j'ai pige avec le return toto

voila ce que j'ai compris/
-- test si true
function() return toto end

Ce que je ne sais pas faire, tester si c'est false, pour moi ceci, mais peut-etre faux
-- test si false
function return toto end}....{Inverse} 

ou sinon comment le faire ? 

 

Posté(e)

 @magic. Je crois que je te l'avais deja dit, le Time avec Sunset ne peut pas se trouver en CONDITIONS c'est une OPTIONS. Va voir la : http://gea.piccand.me/doku.php/start

J'aurais fait comme ceci

 

GEA.add(v, 15*60, "", {{"Time", "Sunset+15", "Sunset+15"}, {"Days", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"}, {"Close", v, 100}})

 

Posté(e) (modifié)

Remplacer une variable global par un Local 

 

dans le code suivant, quand j'allume mon PLAFONNIER_CUISINE ma variable Global passe a 1

et 

quand je l'éteint elle passe a 0 

 

GEA.add({"Value",  id["PLAFONNIER_CUISINE"], 1}, -1, "Mode interupteur actif", {{"Global", "MODEINTERUP", "1"}, {"Global", "MODEDETECTEUR", "0"}})
GEA.add({"Value",  id["PLAFONNIER_CUISINE"], 0}, -1, "Mode interupteur inactif", {{"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}})

la question est il possible de stoker la valeur dans  variable local

Quand j'allume mon PLAFONNIER_CUISINE stoker la valeur 1 dans une variable local pour me permettre de l'utiliser par exemple pour actionner une autre chose.....

Modifié par 971jmd
Posté(e)

 @magic_281 "true" me semble aussi plus cohérent car on s'en fiche de l'état des volets, on veux les fermer, après c'est la box qui gère.

 

 

Pour ta 2ème ligne. Si on reprend ce que @pepite a dit :

 

GEA.add( <conditions>, ..., ..., <options> )

 

Ta condition est que tous soit fermé : 

{"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0}

 

On obtiens donc

GEA.add({{"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0}}, 30, "", {{"Time", "18:00", "19:00"}, {"Close", DeviceID["volet_2"], 100}})

Oui, oui oui, je sais "Time" devrait être une condition mais ne l'est pas. Il fait ce dire que GEA ne vérifie cette ligne qu'entre 18h et 19h. Ainsi c'est plus facile à cataloguer dans les options.

Posté(e)

@971jmd Non, dans ce cas cela n'est pas possible.

 

Tu utilises le -1, donc un déclenchement immédiat provoqué par le changement de valeur de ton plafonnier. A chaque changement de cette valeur, ta box CREE un nouvelle copie du script de GEA qu'elle exécute et fait mourir aussitôt. Chaque copie exécutée ainsi naisse et meurs en quelques secondes, c'est pour cela qu'on utilise les variables globales qui sont inscrite ailleurs dans la box.

 

Seule une instance de GEA ne meurt jamais, c'est celle qui se lance quand tu démarre ta boxe ou sauve GEA, celle si tourne tout le temps et ne meurt "normalement" jamais. Elle traite les GEA.add( ...) qui ont comme durée tout sauf le -1. Donc si tu veux t'amuser avec les variables locales, c'est uniquement dans une instruction GEA.add( .. ) qui n'a pas de "-1" comme durée.

  • Upvote 1
Posté(e)
il y a 32 minutes, pepite a dit :

 


@Steven

Moi je voudrais savoir comment tester la condition false pour ma culture hihi. Test de la condition true je pense que j'ai pige avec le return toto


voila ce que j'ai compris/
-- test si true
function() return toto end

Ce que je ne sais pas faire, tester si c'est false, pour moi ceci, mais peut-etre faux
-- test si false
function return toto end}....{Inverse} 

ou sinon comment le faire ? 

 

 

Oui, c'est bien cela. Attention, le {"Inverse"} ne traite que la condition principale (la 1ère).

 

Sinon tu peux aussi faire ainsi :

function return not toto end

Le "not" permet d'inverse un true par un false et inversement.

 

D'ailleurs le code de GEA agit ainsi. Il va tester la condition et s'il voit que tu as mis "Inverse", il va rajouter un "not" devant (ce n'est pas le code réel) :

local condition = ...... (on teste ce qui est demandé)

if GEA.contient("Inverse") then
   condition = not condition
end
return condition

 

  • Upvote 2
Posté(e)

merci @Steven c'est très clair.

 

Par contre j'ai inséré ta ligne

 

GEA.add({{"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0}}, 30, "", {{"Time", "18:00", "19:00"}, {"Close", DeviceID["volet_2"], 100}})

qui me renvoit dans le debug : "line 752 attempt to concatenate field '?' (a nil value)"

 

pour savoir si un capteur n'est pas en alerte c'est bien value = 0 pourtant?

Posté(e)

@magic_281

 

c'est:     ID["Capteur_baie1"], 0}.......  et pas DeviceID["Capteur_baie1"], 0}

GEA.add({{"Value", ID["Capteur_baie1"], 0}, {"Value", ID["Capteur_baie2"], 0}}, 30, "", {{"Time", "18:00", "19:00"}, {"Close", ID["volet_2"], 100}})

 

Posté(e)
il y a 35 minutes, Steven a dit :

 

Oui, c'est bien cela. Attention, le {"Inverse"} ne traite que la condition principale (la 1ère).

 

Sinon tu peux aussi faire ainsi :


function return not toto end

Le "not" permet d'inverse un true par un false et inversement.

 

D'ailleurs le code de GEA agit ainsi. Il va tester la condition et s'il voit que tu as mis "Inverse", il va rajouter un "not" devant (ce n'est pas le code réel) :


local condition = ...... (on teste ce qui est demandé)

if GEA.contient("Inverse") then
   condition = not condition
end
return condition

 

 

il y a 35 minutes, Steven a dit :

 

Oui, c'est bien cela. Attention, le {"Inverse"} ne traite que la condition principale (la 1ère).

 

Sinon tu peux aussi faire ainsi :


function return not toto end

Le "not" permet d'inverse un true par un false et inversement.

 

D'ailleurs le code de GEA agit ainsi. Il va tester la condition et s'il voit que tu as mis "Inverse", il va rajouter un "not" devant (ce n'est pas le code réel) :


local condition = ...... (on teste ce qui est demandé)

if GEA.contient("Inverse") then
   condition = not condition
end
return condition

 

 

@Steven

sans vouloir abusé, pour mieux comprendre, aurait tu des exemples de code fonctionnelle sur les local condition .......

 

 

Posté(e)

@Steven

 

je me troupe ou pas sur le principe ?

 

j'ai une erreur : [DEBUG] 14:36:34: line 71: expected near 'end'

local condition = {"Value", ID["DETTEC_COUL"], 0} 
  

if GEA.contient("Inverse") then
   condition = not condition
end
return condition
 
  end
GEA.add(condition, 30, "fermer") 
  
GEA.add(condition, 30, "ouvert") 

 

Posté(e)

hey les dieux GEA, si mon log n'affiche pas GEA Version 5.40 : en exécution... toutes les minutes, c'est qu'il tourne sur 3 pattes non ?

J'ai comme l'impression que c'était le cas avant, et comme je n'ai que des problèmes depuis la 4.1 

Posté(e)

juste une petit parenthèse

 

pour une meilleur lisibilité des codes il est possible de rajouter les numéros de ligne avec nopad++

 

Insérer les numéros de lignes

  • Au moyen de l'Éditeur notpad++:
    • Placer le curseur à l'endroit voulu et ouvrir l'Éditeur de Colonne avec Alt+C.
    • Choisir Nombre à insérer, Nombre initial : 1, Augmenter de : 1 et appuyer sur OK.
1 local coco = 0
2 local MODEINTERUP_1 = 1
3 
4 
5 local on = {"turnOn", id["PLAFONNIER_CUISINE"]}
6 local coco = {"Value",  id["DETTEC_COUL"], 1}, -1 , "",   {coco})

 

 

 

  • Upvote 1
×
×
  • Créer...