Aller au contenu

Messages recommandés

Posté(e)

Encore moi :) désolé j'ai tendance à bombarder le forum de questions, mais je vous promets que je cherche des réponses avant de poster :15:

 

Alors on en avait un peu discuté avec @Lazer je crois, mais je me rends compte que les Trigger dans les scènes semblent être plus compliqués...

 

Je m'explique : Je veux qu'une scène soit triggée lorsque qu'un Wall Plug (pour cette exemple) change d'état.

 

Et bien je suis obligé de mettre 2 lignes de conditions, une pour tester le "True" et pour le "False".

{
    operator = "any",
    conditions = {
        {type = "device", id = 34, property = "value", operator = "==", value = true, isTrigger = true},
        {type = "device", id = 34, property = "value", operator = "==", value = false, isTrigger = true}
    }
}    

Je pensais qu'il était possible, par exemple, d'en avoir qu'une : 

{
    operator = "any",
    conditions = {
        {type = "device", id = 34, property = "value", operator = "!=", value = 2, isTrigger = true},
    }
}    

Mais visiblement, il n'accepte (pour ce type de module) que le "True" et "False" comme "value".

 

Alors imaginons maintenant que cette scène doit être triggée par tout tout tout plein de device !

La liste des conditions va exploser, minimum le double que ce qu'on faisait sur la HC2 !!

 

c'est un peu bof comme méthode non ?

 

où je me trompe complètement !

  • 1 mois après...
Posté(e)

Hello dans ce cas tu peux utiliser l'opérateur anyValue

voici un exemple pour moi qui fonctionne avec un détécteur de mouvement à chaque changement de statut:

{
  conditions = { { 
    type = "device",
    id = 511,
    property = "value", 
    operator = "anyValue",
    isTrigger = true
}},
  operator = "all"
}

 

  • Like 1
  • 3 mois après...
Posté(e) (modifié)

J'espère que je ne "déterre" pas ce sujet ?

 

Je sèche sur une combinaison de triggers (qui par ailleurs fonctionne à la perfection).

 

Le hic c'est qu'une condition dit toujours "oui". La première.

Elle est censée trigger quand un détecteur (Aeon Multisensor 6, à cause de l'option humidité) se déclenche ET quand la luminosité est à zéro.

Mais la condition est remplie et "trigge" même en plein jour.

 

Voici le listing :

{ operator = "any",
  conditions = { { operator = "all",
                   conditions = {{ type = "device",
                                   id = 54,
                                   property = "value",
                                   operator = "==",
                                   value = true,
                                   isTrigger = true },
                                 { type = "device",
                                   id = 149,
                                   isTrigger = false,
                                   operator = "<",
                                   property = "value",
                                   type = "device",
                                   value = 3 }} },
                 { type = "device",
                   id = 42,
                   property = "value",
                   operator = "==",
                   value = true,
                   isTrigger = true },
                 { id = 211,
                   isTrigger = true,
                   operator = "==",
                   property = "centralSceneEvent",
                   type = "device",
                   value = {keyAttribute = "Pressed", keyId = 2}},
                 { id = 211,
                   isTrigger = true,
                   operator = "==", 
                   property = "centralSceneEvent",
                   type = "device",
                   value = {keyAttribute = "Pressed", keyId = 4}} }}

 

L'ID "motion" est le 54, et celle de la luminosité est 149 (en tête de listing).

J'ai testé plusieurs syntaxes operator/conditions, mais on a vite fait le tour.

 

Je penche maintenant pour soit une erreur de property, soit un bug du concepteur (moi...).

 

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

etrange...

 

tu as essayé en enlevant les autres conditions, juste garder celle du motion et de la luminosité ?

 

{ 
	operator = "all",
	conditions = {
		{type = "device", id = 54,  property = "value", operator = "==", value = true, isTrigger = true},
		{type = "device", id = 149, property = "value", operator = "<", value = 3, isTrigger = false}
	} 
}

 

si tu as affiche dans le debug la valeur de luminosité lorsque la scène est triggée, ça donne combien ?

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

J'avais déjà testé (au début) seulement motion et lux;

Ca fonctionnait parfaitement.

 

Le debug donne la valeur correcte de luminosité.

 

Par contre, j'ai reproduit (et supprimé l'erreur - enfin je pense), car ma (?) HC3 est un peu fantasque, et ne supporte pas bien les enregistrements successifs de scènes, sans un reboot de temps en temps.

 

L'éclairage extérieur s'allume (puisqu'il s'agit de cela) avec operator "==" et value = 0, ce qui ne devrait pas se produire puisque la luminosité extérieure est à plus de 300.

Par contre, l'allumage ne se produit pas avec les valeurs operator "<" et value = 3 - ce qui est le but !

 

Ce qui laisserait à penser que la valeur "zéro" n'est pas vraiment nulle - cela pourrait être 0.0 ?

Je testerai à la nuit pour voir...

 

Merci pour ta réponse et ton éclairage :D

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

In fine : à la nuit, ça fonctionne parfaitement.

 

J'en déduis donc que le trigger "operator "==" ... value = 0" pose un problème. Surtout value = 0.

Le test ne semble pas fonctionner (du moins avec ce module).

Soit il s'agit d'un bug (lié à la jeunesse de la HC3 ?), soit le "zéro" renvoyé par le module n'est pas un "vrai" zéro (peut-être une valeur de type 0.0) et ne peut donc pas répondre au test "= 0".

 

Ou alors le bug vient de moi :rolleyes: !

 

Modifié par Sowliny
Posté(e)

Jamais essayé - ce n'était qu'une hypothèse basée sur des "value" que j'ai déjà rencontré sur différents modules...

 

Je crois que je vais en rester là (avec un test "< 3" s'il n'y a plus de déclenchements en plein jour.

J'ai bien d'autres projets en cours et en vue.

 

Aujourd'hui je viens de réactiver (c.à.d. de transférer la scène depuis la HC2) ma boîte à insoler les circuits (imprimés).

20200827_231111.thumb.jpg.8c4db0394da833e2ed8f1a4ef95fe884.jpg

Réalisée à partir d'une boîte de rangement Ikéa. Elle me permet de tirer des cartes au format europe.

  • Like 2
Posté(e)

Bon, retour à la case départ...

 

Rien n'y fait, le déclenchement en plein jour persiste !

Du coup, j'ai supprimé le test de la luminosité dans la section trigger :

                { type = "device",
                  id = 149,
                  isTrigger = true,
                  operator = "==",
                  property = "value",
                  type = "device",
                  value = 0 },

 

et remplacé par un test au début de la scène elle-même :

if sourceTrigger.id == tonumber(fibaro.getGlobalVariable("MID_wykr_taras"))
   and tonumber(fibaro.getValue(149, "value")) > 5
   then fibaro.debug("debug","Scene "..sceneId.." killed (swiatlo = "..fibaro.getValue(149, "value")..")")
          fibaro.scene("kill", {sceneId})
end

 

"si le trigger est le détecteur terrasse et que la luminosité est > à 5" alors tuer la scène.

Pas très élégant, mais ca ira en attendant de trouver une solution à ce (bug ?).

 

Posté(e)

j'allais finir par te le proposer, rien de mieux que des lignes de code ;) :angry:

 

par contre je comprends pas pourquoi tu "kill" la scènes.

C'est quoi cette VG ?

 

tu fais simplement :

if sourceTrigger.id == TON_ID_DU_PIR and tonumber(fibaro.getValue(149, "value")) < 5 then
	--allumage
end

ou alors j'ai pas tout compris...

Posté(e)

C'est en effet la VG du PIR.

Tu as bien compris.

 

J'ai fait comme cela en attente de :

1) tester sur plusieurs jours (quoique le résultat soit déjà certain.

2) trouver ce qui coince dans le trigger (quoique là aussi, il n'y a plus grand chose à attendre...)

 

Ta solution est plus élégante bien sûr, et je l'adopterai certainement. C'est bien sur mieux que de "killer" !

 

Posté(e)

PS : pour répondre à ton interrogation sur le nom de la VG (je te dois bien ça) :

 

MID_ : Module ID

wykr_ : détection (wykrywanie...)

taras_ : terrasse (facile !)

 

C'est ma syntaxe générale sur les noms de VG.

  • Like 1
Posté(e)
Il y a 22 heures, Sowliny a dit :

Aujourd'hui je viens de réactiver (c.à.d. de transférer la scène depuis la HC2) ma boîte à insoler les circuits (imprimés). 

 

Réalisée à partir d'une boîte de rangement Ikéa. Elle me permet de tirer des cartes au format europe.

it's the final countdown....

 

désolé :D

 

Posté(e)
Il y a 10 heures, Lazer a dit :

it's the final countdown....

 

désolé :D

 

Je me suis douté en écrivant cela que j'aurai bien un commentaire marrant :P...

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

j'allais finir par te le proposer, rien de mieux que des lignes de code ;) :angry:

 

par contre je comprends pas pourquoi tu "kill" la scènes.

C'est quoi cette VG ?

 

tu fais simplement :


if sourceTrigger.id == TON_ID_DU_PIR and tonumber(fibaro.getValue(149, "value")) < 5 then
	--allumage
end

ou alors j'ai pas tout compris...

Ce matin, tout est correct (normal...).

Peut-etre demain j'inverserai la logique du test pour éviter le "kill", en incluant tout le processus dans un "if then..."

 

Mais avec quelques réserves dues au fait que cette scène est déclenchée par trois acteurs :

PIR de la terrasse,

PIR de la grange,

télécommande Nodon...

 

Et plus tard PIR du pignon nord-est de la maison, PIR du "couloir" entre la maison et la grange (surtout pour l'entrée de la grange)...

 

Avec une gestion séparée des deux zones "grange" et "maison". 

Posté(e)

alors attention avec le fait d'avoir "beaucoup" de trigger...

Il n'y a pas de multi instance dans les scènes...

Si tu as plusieurs PIR qui déclenche la scène en même temps, tu vas avoir de jolies surprises... je sais  de quoi je parle... :( 

 

pour les autres trigger, tu mets à la suite :

if sourceTrigger.id ~= TON_ID_DU_PIR then
...
...
end

 

Posté(e) (modifié)

Voici la liste des triggers (hormis la condition "fautive" initialement associée à la condition 54) :

 
-- ID  42 = Wykrywacz stodoły
-- ID  54 = Wykrywacz taras
-- ID 149 = Jasność tarasu
-- ID 211 = Nodon Pink
 
{ operator = "any",
  conditions = { { type = "device",
                   id = 54,
                   property = "value",
                   operator = "==",
                   value = true,
                   isTrigger = true },
                 { type = "device",
                   id = 42,
                   property = "value",
                   operator = "==",
                   value = true,
                   isTrigger = true },
                 { id = 211,
                   isTrigger = true,
                   operator = "==",
                   property = "centralSceneEvent",
                   type = "device",
                   value = {keyAttribute = "Pressed", keyId = }},
                 { id = 211,
                   isTrigger = true,
                   operator = "==", 
                   property = "centralSceneEvent",
                   type = "device",
                   value = {keyAttribute = "Pressed", keyId = }} }}
 

 

Pour le moment, tout fonctionne bien.

Il y en a 2 pour les PIR, et 2 pour la télécommande Nodon (211).

 

La scène redémarre à chaque déclenchement - je l'ai vérifié avec le debug des deux PIR.

Donc pas de souci ?

 

A quel genre de surprise je devrais m'attendre ?

Modifié par Sowliny
Posté(e)

typiquement un message d'erreur dans le debug, si la scène est en court d'exécution et qu'un autre déclenchement (suivant l'option choisi sans les propriété de la scène) vient faire le "kill".

ou encore, toujours suivant l'option, tout simplement pas de déclenchement de la scène.

 

Je parle de cette option

038E5545-7958-4075-AE3A-79B0B8485934.jpeg.55c4c5b6420b8a0e2c61d5d0d5b84d97.jpeg

Posté(e)

Bonjour en ce beau matin !

 

Oui, l'option "Allow..." est bien sur YES (mais il me semble que pour le moment cela n'a pas d'importance, comme le restart n'est pas implémenté).

 

J'ai aussi régulièrement (à chaque redéclenchement alors que l'instance primaire est en cours) cette ligne dans le debug :

[30.08.2020] [09:11:28] [ERROR] [SCENE33]:

 

Je pense que cela correspond à ta description.

Quoi qu'il en soit, cela ne semble pas avoir d'incidence sur le déroulement de la scène, ni sur son arrêt - toujours correct.

 

Posté(e) (modifié)

oui voilà c'est ça... non ça a pas d'incidences.

 

mais... c'est pas propre... B)

 

L'option peut avoir une incidence, essaye sur NO et fait des essais, tu verras que des déclenchements seront loupés...

Modifié par jjacques68
Posté(e)

Tout à fait pas propre :22:, ça me gave profond quand je vois ça... comme disent les d'jeun's.

 

On est soumis au bon vouloir de Fibaro pour arranger cela (je parle de "restart running scene").

Je pense sincèrement qu'ils auraient pu se concentrer sur ces fonctionnalités "de base", au lieu de donner dans "l'esbrouffe pour d'autres choses moins fondamentales.

 

Mais bon, tant que ça déclenche correct...

 

Promis, je vais tester sur NO, pour voir...

 

  • 1 mois après...
Posté(e) (modifié)

salut à tous

 

j'ai une scène avec 2 device (volet roulant) 

 

pensez-vous qu'il est possible que quand j'actionne un seul volet le 98 par exemple que je ne recois pas de réaction du le 95 

{
    operator = "any",
    conditions = {
        {
            type = "device",
            id = 95,
            property = "value",
            operator = "anyValue",
            value = false,
            isTrigger = true
        },
        {
            type = "device",
            id = 98,
            property = "value",
            operator = "anyValue",
            value = false,
            isTrigger = true
        }
    }
}
local id = 95
local variable = "telegram" --- nom de la variable
local idlampe = fibaro.getName(id)  --- nom du device
local valeur = fibaro.get(id, "value")-- récupérartion de la valeur du device

fibaro.setGlobalVariable(variable,  tostring(idlampe .. " est à " .. valeur)  .. "  pourcent")

local id = 98
local variable = "telegram" --- nom de la variable
local idlampe = fibaro.getName(id)  --- nom du device
local valeur = fibaro.get(id, "value")-- récupérartion de la valeur du device
fibaro.sleep(3000)
fibaro.setGlobalVariable(variable,  tostring(idlampe .. " est à " .. valeur)  .. "  pourcent")

 

Modifié par 971jmd
Posté(e)

Tout à fait.

 

Si tu n'actionnes qu'un seul device (le 98 par exemple) le trigger déclenchera la scène.

 

Par contre, ta scène va se dérouler d'une façon linéaire, c'est à dire qu'elle va exécuter toutes les lignes sans se préoccuper si le trigger est le 98 ou le 95.

 

Pour éviter cela, mets cette ligne en premier :

local ID = fibaro.get(id, "value")

Tu pourras ensuite faire la différence avec :

if ID == 98

    then ....

    elseif ID == 95

               then ...

end

 

ou plus simple s'il n'y a qu'un choix binaire :

 

if ID== 98

    then ...

    else ...

end

 

Si j'ai bien compris la scène bien sûr.

×
×
  • Créer...