jjacques68 Posté(e) le 8 mars 2020 Signaler Posté(e) le 8 mars 2020 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 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 !
idomotique Posté(e) le 2 mai 2020 Signaler Posté(e) le 2 mai 2020 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" } 1
jjacques68 Posté(e) le 2 mai 2020 Auteur Signaler Posté(e) le 2 mai 2020 Oui oui en effet, depuis la dernière mise à jour ça fonctionne comme ça... Envoyé de mon iPhone en utilisant Tapatalk Pro
Sowliny Posté(e) le 26 août 2020 Signaler Posté(e) le 26 août 2020 (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é le 26 août 2020 par Sowliny
jjacques68 Posté(e) le 27 août 2020 Auteur Signaler Posté(e) le 27 août 2020 (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é le 27 août 2020 par jjacques68
Sowliny Posté(e) le 27 août 2020 Signaler Posté(e) le 27 août 2020 (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 Modifié le 27 août 2020 par Sowliny
Sowliny Posté(e) le 27 août 2020 Signaler Posté(e) le 27 août 2020 (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 ! Modifié le 27 août 2020 par Sowliny
jjacques68 Posté(e) le 27 août 2020 Auteur Signaler Posté(e) le 27 août 2020 Et si mets > 0.0 ?Envoyé de mon iPhone en utilisant Tapatalk Pro
Sowliny Posté(e) le 27 août 2020 Signaler Posté(e) le 27 août 2020 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). Réalisée à partir d'une boîte de rangement Ikéa. Elle me permet de tirer des cartes au format europe. 2
Sowliny Posté(e) le 28 août 2020 Signaler Posté(e) le 28 août 2020 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 ?).
jjacques68 Posté(e) le 28 août 2020 Auteur Signaler Posté(e) le 28 août 2020 j'allais finir par te le proposer, rien de mieux que des lignes de code 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...
Sowliny Posté(e) le 28 août 2020 Signaler Posté(e) le 28 août 2020 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" !
Sowliny Posté(e) le 28 août 2020 Signaler Posté(e) le 28 août 2020 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. 1
jjacques68 Posté(e) le 28 août 2020 Auteur Signaler Posté(e) le 28 août 2020 Ah ouai d'accord !! Excellent Envoyé de mon iPhone en utilisant Tapatalk Pro
Lazer Posté(e) le 28 août 2020 Signaler Posté(e) le 28 août 2020 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é
Sowliny Posté(e) le 29 août 2020 Signaler Posté(e) le 29 août 2020 Il y a 10 heures, Lazer a dit : it's the final countdown.... désolé Je me suis douté en écrivant cela que j'aurai bien un commentaire marrant ...
Sowliny Posté(e) le 29 août 2020 Signaler Posté(e) le 29 août 2020 Il y a 13 heures, jjacques68 a dit : j'allais finir par te le proposer, rien de mieux que des lignes de code 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".
jjacques68 Posté(e) le 29 août 2020 Auteur Signaler Posté(e) le 29 août 2020 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
Sowliny Posté(e) le 30 août 2020 Signaler Posté(e) le 30 août 2020 (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 = 2 }}, { id = 211, isTrigger = true, operator = "==", property = "centralSceneEvent", type = "device", value = {keyAttribute = "Pressed", keyId = 4 }} }} 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é le 30 août 2020 par Sowliny
jjacques68 Posté(e) le 30 août 2020 Auteur Signaler Posté(e) le 30 août 2020 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 :
Sowliny Posté(e) le 30 août 2020 Signaler Posté(e) le 30 août 2020 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.
jjacques68 Posté(e) le 30 août 2020 Auteur Signaler Posté(e) le 30 août 2020 (modifié) oui voilà c'est ça... non ça a pas d'incidences. mais... c'est pas propre... L'option peut avoir une incidence, essaye sur NO et fait des essais, tu verras que des déclenchements seront loupés... Modifié le 30 août 2020 par jjacques68
Sowliny Posté(e) le 30 août 2020 Signaler Posté(e) le 30 août 2020 Tout à fait pas propre , ç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...
971jmd Posté(e) le 5 octobre 2020 Signaler Posté(e) le 5 octobre 2020 (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é le 5 octobre 2020 par 971jmd
Sowliny Posté(e) le 6 octobre 2020 Signaler Posté(e) le 6 octobre 2020 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.
Messages recommandés