Franco268 Posté(e) le 12 juillet 2016 Signaler Posté(e) le 12 juillet 2016 Hello, Je voudrai partager mon code car il ne fonctionne pas. Pouvez vous m'aider? Le but est defermer mes volets lorsque la température commence à monter. Le programme fonctionne en manuel mais pas en automatique. C'est comme si la scène n'est jamais déclenché, malgres les variations de 164 et 4. --[[ %% properties 194 value --Température Chambre parentale 3 Temperature --Température exterrieur Internet %% events %% globals --]] if(fibaro:countScenes() >1) then fibaro:abort() fibaro:debug('Abort') end fibaro:debug("Température exterrieur Internet : " ..fibaro:getValue(3, "Temperature")); fibaro:debug("Température exterrieur Internet : " ..fibaro:getValue(194, "value")); local startSource = fibaro:getSourceTrigger(); if (startSource["type"] == "other") then fibaro:debug("Commande manuelle") end if ( (tonumber(fibaro:getValue(3, "Temperature")) >= tonumber(23.5) and tonumber(fibaro:getValue(194, "value")) >= 23 and fibaro:getGlobalValue("Etat_Volets") ~= "Fraîcheur") or startSource["type"] == "other" ) then fibaro:setGlobal("Etat_Volets", "Fraîcheur"); fibaro:startScene(263); -- Démarrage de la scène Ferm.fraî. volets fibaro:call(8, "sendDefinedEmailNotification", "373"); fibaro:call(133, "sendDefinedPushNotification", "373"); fibaro:call(375, "sendDefinedPushNotification", "373"); fibaro:call(229, "sendDefinedEmailNotification", "373"); fibaro:call(230, "sendDefinedPushNotification", "373"); fibaro:call(251, "sendDefinedPushNotification", "373"); fibaro:debug("Fermeture demandée") end
jojo Posté(e) le 12 juillet 2016 Signaler Posté(e) le 12 juillet 2016 ligne 22 au lieu de` (tonumber(fibaro:getValue(3, "Temperature")) >= tonumber(23.5) and met (tonumber(fibaro:getValue(3, "value")) >= 23.5 and
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 Ligne 5 pareil? Je l'ai écrite de cette façon car le "transformateur" bloc vers LUA l'a écrit de la sorte.
Nikko Posté(e) le 12 juillet 2016 Signaler Posté(e) le 12 juillet 2016 Salut, Je ne savais pas que Temperature pouvait être un trigger. J'aurais laissé value. Evite peut être aussi les commentaires dans l'entete, Il me semble que par moment ça peut mettre le bronx. ton fibaro:debug('Abort') à mettre avant le fibaro:abort() (ton problème ne vient pas de là .
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 Moi, je vois 3 et 164 comme Id. lol, j'ai écrit n'importe quoi dans mon post. C'est 194 et 3
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 Salut, Je ne savais pas que Temperature pouvait être un trigger. J'aurais laissé value. Evite peut être aussi les commentaires dans l'entete, Il me semble que par moment ça peut mettre le bronx. ton fibaro:debug('Abort') à mettre avant le fibaro:abort() (ton problème ne vient pas de là . ok, j'ai corrigé le Abort
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 Je viens de me rendre compte d'une autre bizarrerie. Le code ci dessous me permet de ré-ouvrir les volet s'il est 18h30 ou si la température est acceptable. Ce que j'ai remarqué, c'est que lorsque je pilote manuellement le code pour fermer les volet alors qu'il ne fait pas chaud, la scène ci dessous réouvre tout de suite les volets. Ce qui montre que les déclencheurs fonctionnent. Pourtant, ce sont les mêmes qu'utilisé dans le code de fermeture. --[[ %% autostart %% properties 194 value --Température Chambre parentale 3 Temperature --Température exterrieur Internet %% events %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "18:30") or (tonumber(fibaro:getValue(3, "Temperature")) < tonumber(23.5) or tonumber(fibaro:getValue(194, "value")) <= 23) and fibaro:getGlobalValue("Etat_Volets") == "Fraîcheur") ) then fibaro:debug("Température 1 exterrieur Internet : " ..fibaro:getValue(3, "Temperature")); fibaro:debug("Température 1 Chambre parentale : " ..fibaro:getValue(194, "value")); fibaro:setGlobal("Etat_Volets", "Ouverts"); fibaro:startScene(261); fibaro:call(8, "sendDefinedEmailNotification", "374"); fibaro:call(133, "sendDefinedPushNotification", "374"); fibaro:call(375, "sendDefinedPushNotification", "374"); fibaro:call(229, "sendDefinedEmailNotification", "374"); fibaro:call(230, "sendDefinedPushNotification", "374"); fibaro:call(251, "sendDefinedPushNotification", "374"); end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then tempFunc() else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( (tonumber(fibaro:getValue(3, "Temperature")) < tonumber(23.5) or tonumber(fibaro:getValue(194, "value")) <= 23) and fibaro:getGlobalValue("Etat_Volets") == "Fraîcheur" or startSource["type"] == "other" ) then fibaro:debug("Température 2 exterrieur Internet : " ..fibaro:getValue(3, "Temperature")); fibaro:debug("Température 2 Chambre parentale : " ..fibaro:getValue(194, "value")); fibaro:setGlobal("Etat_Volets", "Ouverts"); fibaro:startScene(261); fibaro:call(8, "sendDefinedEmailNotification", "374"); fibaro:call(133, "sendDefinedPushNotification", "374"); fibaro:call(375, "sendDefinedPushNotification", "374"); fibaro:call(229, "sendDefinedEmailNotification", "374"); fibaro:call(230, "sendDefinedPushNotification", "374"); fibaro:call(251, "sendDefinedPushNotification", "374"); end end
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 ligne 22 au lieu de` (tonumber(fibaro:getValue(3, "Temperature")) >= tonumber(23.5) and met (tonumber(fibaro:getValue(3, "value")) >= 23.5 and Je viens de tester, cela ne fonctionne pas: [DEBUG] 22:41:55: Température extérieur Internet : 18 [DEBUG] 22:41:55: Température chambre parental : 23.7 [DEBUG] 22:41:55: Commande manuelle [DEBUG] 22:41:55: line 25: attempt to compare number with nil
Franco268 Posté(e) le 12 juillet 2016 Auteur Signaler Posté(e) le 12 juillet 2016 Je viens de comprendre pourquoi le programme d'ouverture fonctionne. Il n'utilise pas les déclencheurs, m^me s'ils sont déclaré. Il utilise la fonction cyclique pour détecter le besoin d'ouvrir ou fermer. Je viens aussi de m’apercevoir d'une autre chose, mais je ne pense pas qu'il y est un lien. Cependant cela met en évidence un gros délais dans le programme. La température est issue d'un capteur à pile. Il n'est interrogé que toutes les 3840 secondes. Mais je ne comprends tjrs pas pourquoi la scène ne se déclenche pas.
pepite Posté(e) le 13 juillet 2016 Signaler Posté(e) le 13 juillet 2016 Bonjour, je pense que cela vient de ton entête, enlève tes commentaires. L'entête doit être propre ;-) A tester, surtout si elle fonctionne manuellement ;-)
Franco268 Posté(e) le 14 juillet 2016 Auteur Signaler Posté(e) le 14 juillet 2016 Salut, Je ne savais pas que Temperature pouvait être un trigger. J'aurais laissé value. Evite peut être aussi les commentaires dans l'entete, Il me semble que par moment ça peut mettre le bronx. ton fibaro:debug('Abort') à mettre avant le fibaro:abort() (ton problème ne vient pas de là . Bonjour, je pense que cela vient de ton entête, enlève tes commentaires. L'entête doit être propre ;-) A tester, surtout si elle fonctionne manuellement ;-) A priori, cela fonctionne depuis que j'ai supprimé les commentaires de l'entête. Merci à vous 2 est à tous les autres. @+
Messages recommandés