Page 1 sur 1

moyennes de température

Publié : 05 avr. 2018, 17:12
par vwolive
Bonjour à tous, j'avance tout doucement dans domoticz, et je suis confronté à un nouveau problème.
J'ai un capteur de température dans chaque pièce de la maison, et j'ai créé un capteur virtuel dans lequel je souhaiterai afficher une température moyenne.
je ne sais pas comment faire, si vous aviez des pistes pour que je puisse essayer de vous soumettre quelque chose ce serait sympa.

Merci

Re: moyennes de température

Publié : 05 avr. 2018, 20:39
par Fredok
Bonsoir, j'ai un capteur de temp vituel "Temp_moy_maison" qui se calcul toutes les 10min
Voici le script time en lua

Code : Tout sélectionner



function timedifference (str) 
 year = string.sub(str, 1, 4)
 month = string.sub(str, 6, 7)
 day = string.sub(str, 9, 10)
 hour = string.sub(str, 12, 13)
 minutes = string.sub(str, 15, 16)
 seconds = string.sub(str, 18, 19)
 t1 = os.time()
 t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
 difference = os.difftime (t1, t2) --résultat en secondes
 return difference
end

--calcul de la temp moy de la maison
local capteurs_temp_interieur={'Temp_Bureau1(Oregon BB02)','SDB2_Cresta','Temp_poele_bois(oregon CB)','Temp_cuisine_gw','Etage2_TempLum','Temp_chambre2(gw)','TV_Temp','Bureau2_TEMP','EntreeTemp','Netatmo_Temperature','Salle_A_Manger_Temp'}
heur=os.date('*t')
if (heur.min%10==0) then
    local cpt=0
    local temp_moy=0
    for i,v in ipairs(capteurs_temp_interieur) do
        local lastupdate=otherdevices_lastupdate[v]
        if(lastupdate==nil) then 
            lastupdate='2017-06-02 15:02:41' 
            print(v.."nil")
        end
        if (timedifference(lastupdate)<1800) then
            temp_moy = temp_moy + otherdevices_temperature[v]
            cpt=cpt+1
        end
    end
    if cpt>0 then 
        temp_moy=temp_moy/cpt
        commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx['Temp_moy_maison']..'|0|' .. tostring(round(temp_moy,1))}
    end
end

Re: moyennes de température

Publié : 09 avr. 2018, 14:24
par vwolive
bonjour,
merci pour ton retour
en ce qui me concerne, j'ai créé un capteur virtuel (Temp + Hygro) qui s'appelle 'Maison'.
Je souhaite y faire remonter la moyenne des capteurs Temp{'Entrée','Cuisine','Salle de Bain','Salon','Chambre Erynn','Chambre Parentale'}
et
la moyenne des capteurs Hygro{'Salle de Bain','Salon','Chambre Erynn','Chambre Parentale'}

J'ai pas réussi a adapter ton code.
pourrais tu me l'expliquer, pour que j'essaye à nouveau.

Je m'excuse par avance, mais j'essaye de me familiariser avec les codes LUA de Domoticz, et ça fait qu'une semaine que j'essaye d'écrire. j'en ai qui marchent et d'autres non...

Merci

Re: moyennes de température

Publié : 10 avr. 2018, 20:34
par Fredok
Bonjour,
1) On définit un tableau qui regroupe les sondes T° dont on veux la moyenne
2) toute les 10min (if (heur.min%10==0))
on boucle sur le dit tableau (for i,v in ipairs(capteurs_temp_interieur) do)
3) Pour chaque sonde, on récupère le dernier lastupdate , si la sonde à émis il y a au plus 1800s (=30min) alors on incrémente la variable
temp_moy = temp_moy + otherdevices_temperature[v]
ainsi qu'une autre (cpt++)
4) A la sortie de la boucle, si cpt>0 (=nb de sondes du tableau ayant émis il y a au plus 30min) alors on calcule la moyenne et on retourne un commandArray:
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx['Temp_moy_maison']..'|0|' .. tostring(round(temp_moy,1))}

Voila c'est tout