Optimiser du DzVents, gestion de désembuage d'un miroir de salle de bains

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
PatriceN
Messages : 65
Inscription : 26 nov. 2017, 18:53

Optimiser du DzVents, gestion de désembuage d'un miroir de salle de bains

Message par PatriceN »

Bonjour,

J'ai un script qui permet de gérer un miroir chauffant dans une salle de bains, pour éviter l'embuage à la sortie de la douche (c'est top!! :) ).
Sur le principe, si la valeur du point de rosée de la pièce s'abaisse et devient inférieure à la température de la pièce voisine (qui sert de référence pour la température du mur) modulo un seuil donné, on démarre la dalle chauffante du miroir.
J'ai un script, mais je pense qu'il pourrait être amélioré en comparant la valeur du point de rosée à la moyenne de la température de la pièce durant les dernières X minutes ou si je suis capable de détecter une variation soudaine du point de rosée (par analyse de l'écart-type par exemple).
- Si le script vous intéresse, il est ci-dessous, servez-vous!
- Je n'ai jamais utilisé les fonctions statistiques de Domoticz, donc si quelqu'un peut aider, ce serait top!
Bonne journée!

Code : Tout sélectionner

return 
{
    on =
    {
        devices = 
        {
            'SdB', -- change to name of Sensor
        },
    },
    
    data =
    {
        lastValue =
        {
            initial = 0,
        },
    },

    logging = 
    {
        level = domoticz.LOG_ERROR, --LOG_DEBUG, -- change to domoticz.LOG_ERROR when script is tested and OK
        marker = 'dewPoint-rise',
    },

    execute = function(dz, item)
         local temp = dz.devices('Couloir').temperature
         local dew  = dz.devices('SdB').dewPoint
		 local seuil = temp - 3
                
        dz.log('\nDevicename: ' .. item.name .. ', nValue: ' .. item.nValue .. ', sValue: ' .. item.sValue .. 
               '\nDevicetype: ' .. item.deviceType .. ', deviceSubType: ' .. item.deviceSubType .. 
               '\nlastValue: ' .. dz.data.lastValue ..', Current value : ' .. item.dewPoint .. '°', dz.LOG_DEBUG )
		
            if item.dewPoint >  dz.data.lastValue + 1 then
			    if (dew > seuil) then
                    dz.log('Allumage du miroir chauffant', dz.LOG_DEBUG)
                    local miroir = dz.devices('Miroir chauffant')
                    miroir.cancelQueuedCommands()
                    miroir.switchOn().checkFirst()
                    miroir.switchOff().afterMin(10)
                    dz.data.lastValue = item.dewPoint
                    -- on s'arrête là
                    return
                end
             
            end
            if dz.data.lastValue ~= item.dewPoint then
            dz.log('=========================dewPoint changé')
            dz.data.lastValue = item.dewPoint
            end
           
        -- condition d'extinction
        if (dew < seuil) then
            dz.log('Arrêt du miroir chauffant', dz.LOG_DEBUG)
            dz.devices('Miroir chauffant').switchOff().checkFirst()
        end
    
    end
}
Répondre