Aller au contenu

Messages recommandés

Posté(e)

hello !

 

je viens d’éplucher un exemple de trigger de scène, trouvé sur le la page d’aide de fibaro :

 

{
    operator = "all",
    conditions = {
        {
            type = "device",
            id = 54,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            operator = "any",
            conditions = {
                {
                    type = "date",
                    property = "sunset",
                    operator = ">=",
                    value = 0
                },
                {
                    type = "date",
                    property = "sunrise",
                    operator = "<=",
                    value = 0
                }
            }
        }
    }
}

en le lisant, on comprend assez facilement son fonctionnement :

si le device 54 passe à true ET que l’on est la nuit, alors la scène est triggée.

 

Ce qui me dérange c’est les conditions du sunset/sunrise :

 

1- il y a le symbole ‘’>=‘‘ ; ‘’<=‘’ et plus haut dans la page d’aide dans les explications, ils ne parlent que du symbole ==

2- l’operator = ‘any’, il ne devrait pas être = ‘all’ ?

         -> si l’heure est > couché ET < levé.           et non si l’heure est > couché OU < levé

 

je dis ça parce que je rencontre des soucis avec ce type de trigger... 

et j’ai un doute...

 

 

Posté(e)

Après des essais, 

 

Concernant les symboles de comparaison, c'est OK. les ">", ">=", "<", "<=" ça passe.

 

Concernant le "any"/"all"

 

Je maintiens ce que je dis, à savoir qu'il faut que ce soit un "all" et non un "any" :

 

{
	operator = "all",
	conditions = {
		{type = "date", property = "sunset", operator = ">=", value = 0},
		{type = "date", property = "sunrise", operator = "<=", value = 0},
	}
}

 

Posté(e)

Ben non, à minuit, on est au milieu de la nuit ;).

Donc entre le coucher du soleil et minuit, c'est la nuit, OU, entre minuit et le lever du soleil. Une seule de ces conditions suffit.

Posté(e)

[mention]jjacques68 [/mention] je ne suis pas certain de te suivre ;) c’est quoi exactement le problème avec all / any ?


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

@Krikroff

 

ben si je mets « any », j’ai pas le résultat voulu. les conditions sont comme « ignorées ».

Avec « all » ça correspond à ce que souhaite  (mais du coup n’est pas en phase avec l’exemple de fibaro)

 

Il y a 2 heures, Barelle a dit :

Donc entre le coucher du soleil et minuit, c'est la nuit, OU, entre minuit et le lever du soleil. Une seule de ces conditions suffit.

euh, alors là suis pas sûr !

y a pas de minuit dans l’histoire !

où tu vois ça ?

Posté(e)
Il y a 6 heures, jjacques68 a dit :

Je maintiens ce que je dis, à savoir qu'il faut que ce soit un "all" et non un "any" :

 


{
	operator = "all",
	conditions = {
		{type = "date", property = "sunset", operator = ">=", value = 0},
		{type = "date", property = "sunrise", operator = "<=", value = 0},
	}
}

 

 

Hum.. si cela fonctionne c'est un bug alors... Car je ne vois pas de trigger dans ta déclaration ;) rien à voir avec l'opérateur si tu veux mon avis .

Posté(e)

Dans ma compréhension, all correspond à un et logique des conditions et any à un ou logique.

 

A une heure du matin, nous sommes bien avant le lever du soleil et avant le coucher du soleil, donc avec all la condition n'est pas remplie, ce n'est pas la nuit !

 

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

ah mais j'avais pas tout mis, voici le complet

 

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée
        {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
        {type = "date", property = "sunset", operator = "<",  value = 0,  isTrigger = false},        
    }
}

ou comme ça, mais c'est pareil : 

 

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée 
        {
            operator = "all",
            conditions = {
                {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
                {type = "date", property = "sunset", operator = "<",  value = 0, isTrigger = false},        
            }
        }
    }
}

 

Modifié par jjacques68
Posté(e)

Ok, mais...

 

Cela ne peut toujours pas fonctionner ;)

il y a 20 minutes, jjacques68 a dit :

         --ET en journée 
        {
            operator = "all",
            conditions = {
                {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
                {type = "date", property = "sunset", operator = "<",  value = 0, isTrigger = false},        
            }
        }

 

impossible à réaliser ... (les deux conditions ne peuvent être réalisées simultanément) il faut obligatoirement un any (l'une ou l'autre des conditions)

 

il y a 20 minutes, jjacques68 a dit :

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée
        {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
        {type = "date", property = "sunset", operator = "<",  value = 0,  isTrigger = false},        
    }
}

 

Je pense que tu as un problème de copier/coller ceci il manque des chose ici, cette déclaration ne passera certainement pas à l'enregistrement dans ta scène ;)

 

 

  • Like 1
Posté(e)

Je pense comprendre ce qui te poses problème, l'opérateur global étant "all" si tu ne précise pas un "any" au niveau du bloque sunset/sunrise (bien que n'étant pas un trigger) alors la scène essaie de valider l'intégralité des conditions, ce qui est parfaitement logique.

Posté(e)

et pourtant

 

[DEBUG] 04.04.2020 14:56:51: Moyenne = 1545.3333333333 / Est = 2350.0 / Sud = 52.0 / Ouest = 2234.0
[DEBUG] 04.04.2020 14:56:56: Moyenne = 2191.0 / Est = 2350.0 / Sud = 1989.0 / Ouest = 2234.0

 

Posté(e) (modifié)

nan mais suis désolé, mais je maintiens mes conditions de déclenchement

 

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée
        {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
        {type = "date", property = "sunset", operator = "<",  value = 0,  isTrigger = false},        
    }
}

 

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

et ça me semble cohérant, les conditions sunset et sunrise sont justement des conditions ! pas des trigger !

 

il faut que l'on soit après le sunrise ET avant le sunset !

 

donc:  (capteurs LUX 1 OU capteurs LUX 2 OU capteurs LUX 3) ET après le sunrise ET avant le sunset

Modifié par jjacques68
Posté(e)

Ok si ça marche c'est parfait :)

 

Mais.. je ne vois pas la différence avec l'exmple de Fibaro, tu n'as pas d'opérateur dans tes bloques sunrise et sunset, l'opérateur par défaut est donc "any" :60:

Posté(e)
à l’instant, jjacques68 a dit :

non c'est le premier "all"

Tu ne comprends pas ce que je te dis.

 

Il faut logiquement un opérateur par bloque ;), si pas d'opérateur alors c'est "any" par défaut...

 

Posté(e) (modifié)

ben la je comprends pas non...

 

j'ai un premier bloc avec l'opérateur "all" avec un deuxième bloc avec l'opérateur "any", qui se trouve dans le premier bloc...

 

je peux le ré écrire comme ça, mais c'est pareil : 

l'équation reste identique...

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée
        {
            operator = "all",
            conditions = {
                {type = "date", property = "sunrise", operator = ">", value = 0, isTrigger = false},
                {type = "date", property = "sunset", operator = "<",  value = 0,  isTrigger = false},        
            }
        }
    }
}

 

Modifié par jjacques68
Posté(e)

Lol, je crois bien que c'est moi qui ne comprends pas ce que tu me dis :94:

 

En effet les 3 bloques sont dans le all

 :98:

Posté(e)

Je ne suis pas certain que le isTrigger = false soit utile, par défaut si non précisé c'est false.

Posté(e)

Faut avouer que c'est une logique un peu particulière...

 

en plus maintenant je décale le sunset sunrise :) 

 

{
    operator = "all",
    conditions = {
        --au moins un des 3 capteurs LUX <= 3000 (le max)
        {
            operator = "any",
            conditions = {
                {type = "device", id = 369, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 376, property = "value", operator = "<=", value = 3000, isTrigger = true},
                {type = "device", id = 385, property = "value", operator = "<=", value = 3000, isTrigger = true},
            }
        },
         --ET en journée (attention décalage de 14 minutes voir la scène Light - Sun Set/Rise))
        {
            operator = "all",
            conditions = {
                {type = "date", property = "sunrise", operator = ">", value = -14, isTrigger = false},
                {type = "date", property = "sunset", operator = "<",  value = 14,  isTrigger = false},        
            }
        }
    }
}

 

Posté(e)
à l’instant, Krikroff a dit :

par défaut si non précisé c'est false

oui oui tout a fait, c'est juste pour la lisiblité du code, histoire d'être clair...

 

Posté(e)

ben c'est ce que je soulevait dans le premier post, 

 

Mais si tu regardes l'exemple donné plus bas, qui m'a fait démarrer ce sujet

 

Citation
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
    operator = "all",
    conditions = {
        {
            type = "device",
            id = 54,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            operator = "any",
            conditions = {
                {
                    type = "date",
                    property = "sunset",
                    operator = ">=",
                    value = 0
                },
                {
                    type = "date",
                    property = "sunrise",
                    operator = "<=",
                    value = 0
                }
            }
        }
    }
}

 

×
×
  • Créer...