Aller au contenu

Je Sollicite Chaque Minute Un Module Fibaro, Un Problème Ou Une Possibilité?


Messages recommandés

Posté(e)

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 ?

Posté(e)

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.

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e)

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.    :74:

×
×
  • Créer...