manulemalin Posté(e) le 18 janvier 2021 Signaler Posté(e) le 18 janvier 2021 (modifié) Bonjour Pour commencé, sans vous raconter toute ma vie, je vous rassure, je placer le contexte ;-) J'ai donc trois enfants. deux garçons dans une chambre et ma fille dans une autre le tout placé a l’étage... J'ai un HC3, j'ai créer des profils (surtout pour le chauffage) sur la box qui sont les suivants : Away => tout le monde est sorti (je sais, c'est pas très original) chauffage au ralenti Seul => il y a que moi chauffage qu'au rdc garçons => les garçons sont là chauffage au rdc et dans leurs chambre (pas dans celle de ma fille) Fille => ma fille est là chauffage au rdc et dans sa chambre (pas dans celle des garçons) tous => Tous le monde est la chauffage partout Maintenant que le décor est planté... la question qui tue !!! J'ai créer 5 scènes (avec des blocs) avec le geofencing de l’application fibaro (qui fonctionne bien d’ailleurs) pour spécifié si tous le monde est la , personnes que les garçons etc... Ça marche plutôt bien, sauf que vu qu'il y a 5 scènes, c'est un peux au bonheur la chance sur le lancement des profils (pauvre hc3... je lui en fait voir de toutes les couleurs!) Du coup, pour qu'il n'y ai pas de mélange, je me suis dit qu'en faisant une seul scènes en LUA, ça serai plus facile a digérer (pour elle... moi je cherche encore à en comprendre le fonctionnement) Si quelqu'un a créer ce genre de scènes ou ne serais-ce qu'un morceau pour me guider dans ma rédaction, j'en serais ravi En vous remerciant de m'avoir lu jusqu'ici, déjà, et pour vos réponses ensuite Merci Modifié le 18 janvier 2021 par manulemalin
Lazer Posté(e) le 19 janvier 2021 Signaler Posté(e) le 19 janvier 2021 Très clairement, les scènes blocs sont prévues pour des scénarios ultra simples, du genre si ... alors... Du coup, tu as plusieurs scénarios, donc plusieurs scènes, une pour chaque scénario, c'est logique, simple, efficace. Ne t'inquiète pas, ce ne sont pas 5 scènes en mode bloc qui vont mettre à genoux la HC3. Si tu veux tout regrouper en une seule scène, je pense que le mode bloc n'est pas du tout adapté. Le mieux est encore de faire ça avec GEA. Sans connaitre le LUA, tu peux écrire des règles prenant en compte différentes conditions, et effectuant les actions correspondantes, tout cela depuis un point unique (un QuickApp)
manulemalin Posté(e) le 19 janvier 2021 Auteur Signaler Posté(e) le 19 janvier 2021 Merci Lazer, encore une fois pour ton aide J'ai vu que tu avais poster une quick app GEA il y a quelque temps, mais je ne savais pas trop a quoi ça pouvais servir.... Je vais me pencher dessus Merci et bonne soirée
jjacques68 Posté(e) le 22 janvier 2021 Signaler Posté(e) le 22 janvier 2021 vous parlez de geofencing... je l'ai essayé, ça fonctionne très bien. Sauf que là le rayon de détection minimum d'un point de localisation est de 150m... c'est large, très large... trop large... pas moyen de réduire ce rayon, même directement via l'API, si je rentre autre une valeur plus petite, il ne me l'accepte pas. bien dommage
manulemalin Posté(e) le 22 janvier 2021 Auteur Signaler Posté(e) le 22 janvier 2021 Pour la distance, je pensais comme toi au départ et puis en y réfléchissant, surtout que pour moi, c’est essentiellement pour le chauffage, ça évite que le chauffage se coupe lorsque je vais chercher le pain ... il se coupe que lorsque je m’éloigne vraiment ;-)
jjacques68 Posté(e) le 23 janvier 2021 Signaler Posté(e) le 23 janvier 2021 mouai dans ton cas, c'est un bon exemple. Mais pour des gestion autres, (je pense à de l'éclairage, wifi, ...) ça peut être gênant...
manulemalin Posté(e) le 22 février 2021 Auteur Signaler Posté(e) le 22 février 2021 (modifié) Bonsoir @Lazer Je me suis donc penché à plusieurs reprise sur le GEA afin de mettre en place la vérification des conditions de mes scenarios "blocks" d'entrée et sortie (le geofencing fonctionne bien sans ça, mais il faut que tous le monde rentre dans l'ordre dans la maison sinon ça déconne LOL pas pratique) Je dois avouer être plutôt perdu malgré toutes les explications donnée sur les différentes fonctions dans l'app GEA Je poste ma question ici plutot que dans la "section" de GEA, afin de voir le contexte de ma question (j'espere bien faire !) j'ai mis ceci (voir en dessous) dans le coté "main", mais je sais pas ou renseigné ID de la scene (je suppose dans la premiere ligne : function GEA:check(30) ), ni d'ailleur s'il faut reconpier la totalité de la fonction !!! Je te remercie par avance de ta réponse et désolé pour la taille de la capture du code... pas réussi à réduire plus Emmanuel -- -------------------------------------------------------------------------------- -- Vérifie une entrée pour s'assurer que toutes les conditions soient remplies -- -------------------------------------------------------------------------------- function GEA:check(entry) if self.options.restarttask.getValue(entry.id) then self:reset(entry) self.stoppedTasks[entry.id] = nil self.globalvalue = self.globalvalue:gsub("|R_" .. entry.id.."|", ""):gsub("|S_" .. entry.id.."|", ""):gsub("|M_" .. entry.id .. "{(%d+)}|", "") end if self.options.stoptask.getValue(entry.id) then entry.stopped = true end if entry.stopped then if not self.stoppedTasks[entry.id] then tools.debug(" ["..self.trad.stopped.."] " .. entry.log) end self.stoppedTasks[entry.id] = true end -- test des conditions local ready = true for i = 1, #entry.conditions do --tools.error("i = " .. i) -- DEBUG self.currentCondition = entry.conditions[i] --for k, v in pairs(entry.conditions) do --tools.warning("k = " .. k .. " - v : " .. type(v) .. " => " .. tostring(v)) -- DEBUG --end local result, _ = entry.conditions[i].check() if self.lldebug then tools.warning("GEA:check() result = " .. tostring(result) .. ", " .. tostring(_), "blue") end -- DEBUG ready = ready and result end if not entry.stopped then tools.debug("@" ..(self.nbRun*self.checkEvery) .. "s ["..self.trad.validate..tools.iif(ready, "*] ", "] ") .. entry.log) end -- si toutes les conditions sont validées if ready then --tools.error("ready") -- DEBUG if entry.stopped then return end if tools.isNil(entry.lastvalid) then entry.lastvalid = self.runAt end if tools.isNil(entry.firstvalid) then entry.firstvalid = self.runAt end if os.difftime(self.runAt, entry.lastvalid) >= entry.getDuration() then entry.count = entry.count + 1 entry.lastvalid = self.runAt tools.info(" ["..self.trad.start_entry.."] " .. entry.log, "green") -- gestion des actions for i = 1, #entry.actions do self.currentAction = entry.actions[i] tools.debug(" ["..self.trad.action.."] " .. self:getMessage(entry.actions[i].getLog(), nil, true)) if self.secureAction then local status, err = pcall(function() entry.actions[i].action() end) -- Lazer if not status then if self.debug then tools.error(err, "red") end tools.error(self.trad.err_check .. entry.actions[i].getLog(), "red") self:addHistory(self.trad.err_check .. entry.simplelog) end else entry.actions[i].action() end end -- envoi message push if entry.message ~= "" then if type(self.output)~="function" then for i = 1, #entry.portables do local status, err = pcall(function() self:getOption({"Portable", entry.portables[i], self:getMessage()}).action() end) if not status then if self.debug then tools.error(err, "pink") end end end else -- Message push personnalisé self.output(self:getMessage()) end end entry.runned = true -- mise à jour des écoutes -- for i=1, #entry.listeners do self:findEntry(entry.listeners[i]).isWaiting[entry.id] = false end -- remise à zéro des attente -- for i=1, #entry.isWaiting do entry.isWaiting[i] = true end -- Vérification du MaxTime if entry.maxtime > 0 then local timeleft = self.options.maxtime.getValue(entry.id) if not timeleft then self.options.maxtime.action(entry.id, entry.maxtime-1) else timeleft = tonumber(timeleft) self.options.maxtime.action(entry.id, timeleft-1) end end self:addHistory(entry.simplelog) if not entry.repeating then entry.stopped = true end end else self:reset(entry) end return ready end Modifié le 22 février 2021 par manulemalin
Lazer Posté(e) le 22 février 2021 Signaler Posté(e) le 22 février 2021 Euh... je suis pas sûr de comprendre là (ton code est illisible, il faut utiliser les balises d'insertion de code dans l'éditeur du forum). Mais si tu as modifié le code de GEA, ça ne va pas du tout, il ne faut modifier que le fichier config comme indiqué dans le tuto
manulemalin Posté(e) le 23 février 2021 Auteur Signaler Posté(e) le 23 février 2021 Merci de ta réponse J'ai supprimé le code puisque illisible... Et vu ta réponse de toute façons, ce n’était pas ça ! Je cherche a mettre dans le fichier config les commandes pour demander de vérifier régulièrement si toute les conditions d'une scène sont rempli (et de l'effectué si c'est vrai) car si je met une des conditions comme déclencheur, les différentes scènes ne s'active qu'au fur et a mesure de l’entrée des différentes personnes (si mon fils rentre en premier, sa chambre se met en chauffe, mais si je rentre ensuite, il n'y a plus que le rdc (prévu lorsqu’il n'est pas chez moi). J’espère avoir été assez clair dans mon explication Si ce n'est pas trop long et que tu en as le temps je serai preneur des lignes de commande "type" que j'adapterai Merci de ton aide
Lazer Posté(e) le 24 février 2021 Signaler Posté(e) le 24 février 2021 C'est compliqué ta demande.... je n'ai pas suivi honnêtement Des lignes types, tu en as dans la config de base (4 pour être précis) Et des milliers dans les différents sujets, il faut vraiment que tu commences par prendre le temps de lire le sujet officiel de @Steven, qui contient également la doc de syntaxe de @pepite Tu as aussi des "showroom GEA" sur le forum avec tous les exemples des forumeurs. C'est tout simple. Tu commences par des lignes basique (tu type "si... alors", exemple si la lumière est allumée depuis 30s, alors éteindre), puis tu augmente la complexité en fonction de tes besoins
manulemalin Posté(e) le 24 février 2021 Auteur Signaler Posté(e) le 24 février 2021 Bonsoir Je vais suivre ton conseil et reprendre la lecture (j'avais commencé, puis ca m a embrouillé lol) Merci d'avoir pris le temps de me répondre
Messages recommandés