Aller au contenu

Messages recommandés

Posté(e) (modifié)

Hello la foule,

 

Je viens poster une complication crânienne de niveau 12 :unsure:

Je n'arrive pas à transposer dans GEA ce que je veux faire.

 

Sur détection de présence, je souhaite que lorsque l'un "ou" l'autre du foyer est "Présent" cela actionne ou pas un truc.

J'ai pris exemple avec une simple lampe, mais je ne comprends pas comment faire un "Ou" car ça fonctionne uniquement avec des "Et" > "Alors"

 

-- Test l'état du QA Présence (ID 188), si mon smartphone est présent ou non..
	local B_estAbsent        	= {"Value","188","false"}
	local B_estPresent       	= {"Value","188","true"}

-- Test l'état du QA Présence (ID 202), si le smartphone de Nathalie est présent ou non.
	local N_estAbsente     	= {"Value","202","false"}
	local N_estPresente     = {"Value","202","true"}

-----------------------------
--- là c'est compliqué car chacun change l'état de la box en fonction de si il est là ou pas.
------------------------------
-- Si je suis absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas mon smartphone
	GEA.add({"Value", 188, false}, 0, "Bernard est absent profile changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
-- Si je suis présent (true), passe le mode HC3 à 1 (HOME)
	GEA.add({"Value", 188, true}, 0, "Bernard est présent profile changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

-- Si Nathalie est absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas son smartphone
	GEA.add({"Value", 202, false}, 0, "Nathalie est absente profile changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
-- Si Nathalie est présent (true), passe le mode HC3 à 1 (HOME)
	GEA.add({"Value", 202, true}, 0, "Nathalie est présente profile changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

-----------------------------------------------------------------
-- ACTIONS


-- Bernard est absent, rien ne se passe car Nathalie est présente
	GEA.add({B_estAbsent, N_estPresente}, 0, "Allumage du couloir à #time#", {{"Value",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Nathalie est absente, rien ne se passe car Bernard est présent
	GEA.add({B_estPresent, N_estAbsente}, 0, "Allumage du couloir à #time#", {{"Value",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Nathalie et Bernard sont présent, la lumière s'allume.
	GEA.add({B_estPresent, N_estPresente}, 0, "Allumage du couloir à #time#", {{"Value",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Besoin que quand l'un ou l'autre soit là, la lumière s'allume ou une action quelconque.

Si quelqu'un a plus de cerveau que moi, il est le bienvenue :60:

Modifié par Domodial
Posté(e) (modifié)
il y a 5 minutes, fredokl a dit :

@Domodial As tu essayé avec un "XOr"? Pour la syntaxe exacte voir le fichier GEA v7.37 Syntaxe.lua.

Je te le met ici au cas où. À partir de la ligne 1894.

GEA v7.37 Syntaxe.lua

Merci @fredokl je n'avais pas vu cela ! Alors que c'est la bible. Effectue un OU exclusif sur plusieurs conditions !!! Grr m'a échappé.

 

Merci !

Modifié par Domodial
Posté(e) (modifié)
Il y a 19 heures, Domodial a dit :

Hello la foule,

 

Je viens poster une complication crânienne de niveau 12 :unsure:

Je n'arrive pas à transposer dans GEA ce que je veux faire.

 

Sur détection de présence, je souhaite que lorsque l'un "ou" l'autre du foyer est "Présent" cela actionne ou pas un truc.

J'ai pris exemple avec une simple lampe, mais je ne comprends pas comment faire un "Ou" car ça fonctionne uniquement avec des "Et" > "Alors"

 


-- Test l'état du QA Présence (ID 188), si mon smartphone est présent ou non..
	local B_estAbsent        	= {"Value","188","false"}
	local B_estPresent       	= {"Value","188","true"}

-- Test l'état du QA Présence (ID 202), si le smartphone de Nathalie est présent ou non.
	local N_estAbsente     	= {"Value","202","false"}
	local N_estPresente     = {"Value","202","true"}

-----------------------------
--- là c'est compliqué car chacun change l'état de la box en fonction de si il est là ou pas.
------------------------------
-- Si je suis absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas mon smartphone
	GEA.add({"Value", 188, false}, 0, "Bernard est absent profile changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
-- Si je suis présent (true), passe le mode HC3 à 1 (HOME)
	GEA.add({"Value", 188, true}, 0, "Bernard est présent profile changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

-- Si Nathalie est absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas son smartphone
	GEA.add({"Value", 202, false}, 0, "Nathalie est absente profile changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
-- Si Nathalie est présent (true), passe le mode HC3 à 1 (HOME)
	GEA.add({"Value", 202, true}, 0, "Nathalie est présente profile changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

-----------------------------------------------------------------
-- ACTIONS


-- Bernard est absent, rien ne se passe car Nathalie est présente
	GEA.add({B_estAbsent, N_estPresente}, 0, "Allumage du couloir à #time#", {{"Value+",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Nathalie est absente, rien ne se passe car Bernard est présent
	GEA.add({B_estPresent, N_estAbsente}, 0, "Allumage du couloir à #time#", {{"Value+",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Nathalie et Bernard sont présent, la lumière s'allume.
	GEA.add({B_estPresent, N_estPresente}, 0, "Allumage du couloir à #time#", {{"Value+",Lum_Entree, 10}, {"Portable", Phone_Bernard}})

-- Besoin que quand l'un ou l'autre soit là, la lumière s'allume ou une action quelconque.

Si quelqu'un a plus de cerveau que moi, il est le bienvenue :60:

Pour ce type de réflexions, rien ne vaut la création d'une table de vérité, employée lorsqu'on simplifie des fonctions avec l'algèbre booleen.
Par exemple:
A = Bernard

B = Nathalie


A peut prendre les valeurs suivantes:
Bernard Présent = 1
Bernard Absent = 0

B peut prendre les valeurs suivantes:
Nathalie Présente = 1
Nathalie Absente = 0

 

La création de la table de vérité permet d'envisager tous les cas de figure. Le nombre de variables d'entrées ne se limite pas qu'a 2.
Dans ton exemple, la table pour XOR (OU exclusif) ressemble à cela:
image.thumb.png.1d7feaa802de9b19e0d2385e6e29fa10.png

En passant par cette approche, tu définis clairement la fonction puis il ne te reste plus qu'à employer la bonne fonction ET, OU, OU Exclusif, etc...
L'exemple ci dessus provient d'un exemple créé par Didier Müller qui a publié le document complet sous https://www.apprendre-en-ligne.net/info/logique/logique.pdf 

Cette approche permet de gagner beaucoup de temps et d'éviter d'omettre des conditions.
 

Modifié par sumsum
  • Like 2
Posté(e) (modifié)

@sumsum ça y est j'ai mal crâne :lol:

Je vais regarder, car j'avoue que ce que j'ai fais hier soir avec XOr ça n'a pas l'air d'être au poil.

 

 

Merci

 

PS : j'ai regardé la table sur le site, je suis infoutu de faire ça, comme d'ab.

Si je pige bien il me faudrait un AB+BA et non AB+AB

Modifié par Domodial
Posté(e)

je suis du style "keep it simple"...

 

Si j'ai bien compris ton besoin, ce n'est pas un OU exclusif, mais un OU "normal" :

  • OU exclusif : Bernard ou Nathalie est présent MAIS PAS les 2 ensembles
  • OU "normal" : Bernard ou Nathalie ou les 2 sont présents.

Pour le OU "normal", il faut simplement dupliquer les lignes GEA

GEA.add (Bernard est là, temps,"message", action)
GEA.add (Nathalie est là, temps,"message", action)

GEA.add ({Bernard est absent, Nathalie est absente}, temps, "message", action)

 

Posté(e)

Merci @jojo je vais tester, mais a y réfléchir maintenant que je le vois, je me dit que je suis vraiment con.

Ca semble faire la l'affaire !

 

Je viendrais dire ici ma joie ! car ce n'est pas simple à distance... avec 2 QA présence alors que les 2 personnes ne sont pas sur place.

 

Encore merci !

Posté(e)

@Domodial j'essaie de simplifier ton besoin pour limiter le nombre de conditions et donc de lignes. Comme @jojo je suis pour la simplicité.
Si je lis les commentaires que tu as mis dans ton code, j'y vois des conditions qui s'annulent.
Par exemple le changement de l'état de la box:

  • Condition 1: Si je suis absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas mon smartphone
  • Condition 2: Si je suis présent (true), passe le mode HC3 à 1 (HOME)
  • Condition 3: Si Nathalie est absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas son smartphone
  • Condition 4: Si Nathalie est présent (true), passe le mode HC3 à 1 (HOME)

Comme vous êtes 2 il faut impérativement inclure les deux variables dans les conditions, sinon, la condition 1 et 2 sera annulée par la 3 ou la 4 et c'est là que la table dont je parlais plus haut prend tout son sens.
 

Nathalie
0 = absente
1 = Présente

Bernard
0 = absent
1 = Présent

Etat Box
2 = AWAY
1 = HOME

Etat Lumière
0 = éteinte
1 = allumée

0

0

2

0

0

1

1

0

1

0

1

0

1

1

1

1

 

Vérifie/confirme ou modifie la table ci-dessus pour que tes conditions et tes actions correspondent à ce que tu veux que GEA fasse.
En lisant tes commentaires dans ton code et analysant ton code, les deux ne correspondent pas. Comme dit plus haut, si tu travailles aux conditions de Nathalie et de Bernard ligne par ligne, tu ne couvriras pas le cas de Bernard et Nathalie présents les deux ou absents les deux.

PS dans tes actions de pilotage de ta lampe tu mets "Value+". Value+ est prévu pour tester une valeur plus grande que... dans les conditions. Pour les actions, c'est "Value" qu'il faut employer.
Une fois ta table confirmée il restera à créer les lignes GEA qui engloberont tes conditions et tes actions.
Redis-moi et je t'assiste pour les créer, cela te permet d'avoir le strict nécessaire de lignes et des actions qui correspondent exactement à ce que tu souhaites.
 

Posté(e) (modifié)

Re,

 

Oui désolé pour le Value+

Entre temps j'ai modifié le code après test, car ça ne fonctionnait pas.

Maintenant c'est bon. Je viens de voir le message de @Jojo et ça bloque ici effectivement : 

 

tu ne couvriras pas le cas de Bernard et Nathalie présents les deux ou absents les deux.

Du coup je suis encore en train de coincer.
C'est vrais que juste sur le test de présence du smartphone, un annule l'autre.
ça me rends dingue.

 

EDIT : "et je t'assiste" le soucis c'est que je ne suis pas expert et ne sais pas créer une table. J'ai du mal avec les QA en plus.

Je ne joue qu'avec GEA et pour le coup je demande un besoin qu'il ne couvre pas.

J'avoue n'avoir jamais eu besoin de ça jusqu'alors, mais là ça se fait sentir fortement, et je n'ai plus les réflexions d'avant (ne pas  voir ma photo j'ai changé :) )

 

 

Modifié par Domodial
  • Like 1
Posté(e)

Je n'ai pas tout lu en détail, mais tu dois faire les actions1 si:

Bernard, ou Nathalie ou (Bernard et Nathalie) sont là. Pour cela juste 2 lignes GEA, car ce n'est pas important de savoir s'ils sont tous les 2 là, il suffit que 1 des deux soit là pour déclencher l'action1.

Et tu fait l'action2, si vous êtes tous les 2 absents => 1 ligne GEA.

 

où est l'erreur de mon raisonnement ?

Posté(e) (modifié)

@jojo disons qu'il y a un soucis sur le test de présence à mon avis. 

 

Si je ne suis pas là je passe le profile à Away.

Mais comme Nathalie est là elle va voir que le profile est a Away et va le passer à Home car elle est là. 

Modifié par Domodial
Posté(e) (modifié)

@jojo Il faut deux lignes car il faut changer le statut de profile à Away une fois qu'il était à Home

 

GEA.add( {"Or", {"Value", 188, false}, {"Value", 202, false} }, 30, "Bernard, Nathalie ou les deux sont absents changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
GEA.add( {{"Value", 188, true}, {"Value", 202, true}, }, 30, "Bernard, Nathalie sont présents changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

PS je n'ai pas testé, mais ça devrait couvrir tes besoins

 

 

 

Modifié par sumsum
EDIT: Rajouté le temps qui avait été oublié lors de mon copier-coller d'exemple
  • Like 1
Posté(e)

comme tu as confirmé que to besoin a bien été résumé par @sumsum,

Ces 3 règles GEA

Il y a 5 heures, jojo a dit :

GEA.add (Bernard est là, temps,"message", action)
GEA.add (Nathalie est là, temps,"message", action)

GEA.add ({Bernard est absent, Nathalie est absente}, temps, "message", action)

 

devraient faire le job

  • Like 1
Posté(e)
il y a 4 minutes, sumsum a dit :

Il faut deux lignes car il faut changer le statut de profile à Away une fois qu'il était à Home

 


GEA.add( {"Or", {"Value", 188, false}, {"Value", 202, false} }, "Bernard, Nathalie ou les deux sont absents changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
GEA.add( {{"Value", 188, true}, {"Value", 202, true}, }, "Bernard, Nathalie sont présents changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

 

pk; mais je trouve plus lisible de mettre les "or" sur des lignes différentes, mais c'est parfaitement la même chose

  • Like 1
Posté(e) (modifié)

C'est vrais que ça fait la même chose, 2 lignes vs trois. 

 

Hé ben... J'aurais du moins sauter les cours de math quand j'étais jeune. 

 

Je regarde ça demain. Mais mon cerveau va y penser toute la nuit :huh:

Modifié par Domodial
  • Like 1
Posté(e) (modifié)
Le 17/10/2022 à 18:20, sumsum a dit :

@jojo Il faut deux lignes car il faut changer le statut de profile à Away une fois qu'il était à Home

 


GEA.add( {"Or", {"Value", 188, false}, {"Value", 202, false} }, "Bernard, Nathalie ou les deux sont absents changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}})
GEA.add( {{"Value", 188, true}, {"Value", 202, true}, }, "Bernard, Nathalie sont présents changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}})

PS je n'ai pas testé, mais ça devrait couvrir tes besoins

 

@sumsum je viens d'essayer, quelque chose ne va pas, ça me bloque le lancement de GEA. (pas d'erreur).
Si je commente les 2 lignes GEA repart comme en 40. Je ne vois rien qui peut clocher.

 

PS Je pense qu'il manque le , temps, (c'était bien ça) un piège ? :D

Modifié par Domodial
  • Sad 1
Posté(e) (modifié)

Un GRAND merci à vous 2 ! Après une batterie de tests ça fonctionne super bien.

J'ai simulé la présence alors que nous n'y sommes pas mais ça fonctionne. :wub:

Par contre j'ai inversé les lignes true à la place de false, car je voulais que ce soit comme

Bernard, Nathalie ou les deux sont présent, mode changé à Home
Modifié par Domodial
  • Like 1
Posté(e)
Il y a 10 heures, Domodial a dit :

quelque chose ne va pas

je ne vois pas le paramètre temps (-1, 30, ...) après les conditions et avant la notif

  • Like 1
Posté(e) (modifié)

J'ai une tite question sur WeatherLocal.
Il est dit que WeatherLocal est traduit dans la langue. Mais il me parle Anglais. C'est normal comme réponse PartlyCloudy ?

Modifié par Domodial
Posté(e) (modifié)

C'est parce que le commentaire dans GEA Syntaxe dit : -- "WeatherLocal" : Teste la météo traduit dans la langue

Du coup je croyais que PartlyCloudy était traduit dans la langue ou la Box a été réglé (Français, Polonais, Anglais)
Comme HC3 me parle Français, et que je vois PartlyCloudy je ne comprenais pas. (enfin moi si mais pas ma femme :P)

Modifié par Domodial
Posté(e)

je n'ai pas encore essayé de faire parler la box.
De toute façon, pour la météo locale, je passe la tête par la fenêtre, et donc pas de soucis de langue ...

  • Haha 1
×
×
  • Créer...