turlututu74 Posté(e) le 11 août 2014 Signaler Posté(e) le 11 août 2014 Bonsoir, je viens de voir que dans certain développement je me retrouve a solliciter chaque minutes un module figaro par un "turnOff" ou "turnOn". En effet, lorsque j'utilise (while true do) je sollicite des allumages ou arrêts, pour un contrôle d'une plage horaire, ou pour un contrôle de température et cela a des fréquences du type " fibaro:sleep(60*1000) " dans la boucle. Ce type de code lance alors un signal au module qui m'informe " Transfert OK ", " Transfert OK ", " Transfert OK " ... chaque minute! Est-ce un défaut donc un problème dans l'écriture du code, ou alors on considère que c'est une possibilité et donc normal ?
Steven Posté(e) le 11 août 2014 Signaler Posté(e) le 11 août 2014 C'est pas très normal car on ne devrait pas allumé un module déjà allumé et inversement. Je me permets de dire que c'est un problème de codage mais avec beaucoup de retenu vu que je n'en n'ai pas la connaissance.
turlututu74 Posté(e) le 12 août 2014 Auteur Signaler Posté(e) le 12 août 2014 Ok je pense aussi que le code n'est pas au top... je reprends mes sources et les soumettrais pour avis et surtout optimisation... merci encore.
Steven Posté(e) le 12 août 2014 Signaler Posté(e) le 12 août 2014 Hésite pas, des fois on passe àcôté d'un détail et on connait tellement bien notre code qu'on n'arrive plus le lire correctement.
turlututu74 Posté(e) le 14 août 2014 Auteur Signaler Posté(e) le 14 août 2014 Dernier bout de code avant les vacances au soleil. J'ai réglé mon problème de sollicitation des mes modules. j'avais zapé ce point! Une critique est toujours la bien venu... --[[ %% autostart %% properties %% globals --]] local IDSondeEauSani = 81 -- id de la sonde sanitaire local IDcontacteurSani = 45 --id du module cde mise en chauffe local ConsigneTmpSani = 50 local CurrentDate = os.date("*t"); local CurrentTime = string.format("%02d", CurrentDate.hour) .. ":" .. string.format("%02d", CurrentDate.min) local HeureDebut = "17:00" -- heure plage horaire local HeureFin = "19:30" -- heure plage horaire local IdSmartphone = 26 local TmpSani local InterContacteurSani local ValeurContacteurSani -- valeur du module cde mise en chauffe -- fonction function OnCoupeSiOn() fibaro:call(IDcontacteurSani, "turnOff") fibaro:call( IdSmartphone , "sendPush" , "Mise en chauffe coupée.") ValeurContacteurSani = fibaro:getValue(IDcontacteurSani, 'value') fibaro:debug('Circulateur sur Off = ' .. ValeurContacteurSani) return ("ok") end while true do fibaro:debug('======================================================') TmpSani = tonumber (fibaro:getValue(IDSondeEauSani, 'value')) fibaro:debug('Tmp sanitaire =' ..TmpSani) InterContacteurSani = fibaro:getValue(IDcontacteurSani , 'value' ) fibaro:debug('Etat contacteur =' ..InterContacteurSani) CurrentDate = os.date("*t"); CurrentTime = string.format("%02d", CurrentDate.hour) .. ":" .. string.format("%02d", CurrentDate.min) if CurrentTime >= HeureDebut and CurrentTime <= HeureFin then fibaro:debug('Plage horaire de fonctionnement') if (TmpSani < ConsigneTmpSani) then fibaro:debug('Mise en chauffe') if fibaro:getValue(IDcontacteurSani, 'value') == '0' then fibaro:call(IDcontacteurSani, "turnOn") fibaro:debug('Mise en chauffe') end else -- (TmpSani >= ConsigneTmpSani) fibaro:debug('Bonne température pas de chauffe') if fibaro:getValue(IDcontacteurSani, 'value') == '1' then OnCoupeSiOn() end end else -- hors plage horaire fibaro:debug('Hors plage horaire') if fibaro:getValue(IDcontacteurSani, 'value') == '1' then OnCoupeSiOn() end end fibaro:sleep(60*1000) end
Shad Posté(e) le 14 août 2014 Signaler Posté(e) le 14 août 2014 Déjà premier, ta scène va tourner en permanence. Tu devrais mettre ta boucle dans ta condition de vérification de l'heure. Second point, c'est vraiment utile de la faire tourner toute les minutes.
turlututu74 Posté(e) le 15 août 2014 Auteur Signaler Posté(e) le 15 août 2014 Bien reçu, je poursuis l’affinage... Mais il n'y a pas besoin d'intégrer la sonde dans la boucle pour rafraîchir la température ? En effet, je pourais faire tourné uniquement dans la plage de fonctionnement ! je "recode" j'aime. Merci shad.
Messages recommandés