Page 1 sur 1

Script chauffage

Publié : 07 janv. 2016, 15:51
par bzhsurfer
Je découvre les scripts lua et toutes les possibilités de Domoticz.

J'essaie de mettre en place un script pour la gestion des radiateurs électriques dans mon appartement.
Je vais pour cela utiliser le module z-wave fil pilote.

Voici l'idée génrale du script.

Un Switch virtuel me permettant de gérer les différents modes de chauffage :

- Off => Tous les radiateurs sont à l'arrèt
- Mode présence => Chauffage en fonction de semaine de travail ou week-end avec des conditions horraires
- Mode abscence => Radiateurs en mode Eco
- Mode forcée => Radiateurs en mode Confort sur l'ensmble de l'appartement pendant x minutes


Si j'ai bien saisi les différentes possibilités de script, le script_time s'exécute toutes les minutes, celui-ci serait le plus intéressant à utiliser à mon avis.

Déroulement du script :
Il se lance toute les minutes, regarde si le switch mode chauffage et dans un état différent => Non fin script
Oui script continu

Il exécute le mode en fonction de l'état du switch, par exemple en mode présence.
- Test de la journée
- Test de l'heure et envoie l'élément correspondant au module fil pilote

Liste des questions en tête et points ou je bloque :

L'idée du script_time est elle intelligente?
Je pense que le scrip_device s'exécutera uniquement si modification de l'état du switch mode chauffage

Si utilisation du script_time l'envoie de la commande d'ordre fil pilote sera à chaque exécution du scripte ?
Ou faut il faire un test si la valeur du device est changé aussi?

D'avance merci pour vos réponse
J'ajoute mon script pour votre jugement, il reste beaucoup de travail dessus

Code : Tout sélectionner

-- Récupération du jour,
local jour = os.date("%A")

-- Récupération de l'heure
time = os.date("*t")
local heures = time.hour
local minutes = time.min

-- Déclaration variables du module Z-Wave
local Off = 0
local HGel = 15
local Eco = 25
local Confort2 = 35
local Confort1 = 45
local Confort = 99
local Conf = 50

-- Déclaration des interrupteurs
local mode_chauffage = 'Mode Chauffage'
--local porte = 'Porte SdB'

-- Déclaration des Devices iD
local idx = 16






commandArray = {}


--if devicechanged['Mode Chauffage'] then


 --   if  (devicechanged['Mode Chauffage'] == 'Off') then
--    commandArray['Radiateur SdB'] = idx..'|0|'..Off
--   
--    end
--else
 
    
          --Du Lundi au Vendredi inclus
            if (jour == 'Monday' or jour == 'Tuesday' or jour == 'Wednesday' or jour == 'Thursday' or jour == 'Friday' ) then
            
                -- Mode Eco -3.5°      
                if ( ( heures >=22 and  heures < 5 ) and (heures == 7 and minutes ==30) ) then
                -- passer le radiateur SdB en mode eco fil pilote
                commandArray['OpenURL'] = 'http://14.6.212.72:8080/json.htm?type=command&param=switchlight&idx=20&switchcmd=Set%20Level&level=25'
                end
         
                -- Mode Eco -2° 
                if (( heures >= 5 and  heures == 5 and minutes == 30 ) and ( heures >= 18 and heures == 18 and minutes == 45 ) ) then
                -- passer le radiateur SdB en mode confort -2° fil pilote
                commandArray['OpenURL'] = 'http://14.6.212.72:8080/json.htm?type=command&param=switchlight&idx=20&switchcmd=Set%20Level&level=35'
                end   
            
                -- Mode Eco -1° 
                if (( heures == 5 and minutes == 31  and heures <6 ) and ( heures >= 8 and heures < 9 ) and ( heures >=21 and  heures < 22 ) ) then
                -- passer le radiateur SdB en mode confort -1° fil pilote
                commandArray['OpenURL'] = 'http://14.6.212.72:8080/json.htm?type=command&param=switchlight&idx=20&switchcmd=Set%20Level&level=45'
                end 
            
                -- Mode Eco Confort
                if (( heures >= 6 and  heures == 7 and minutes == 30 ) and ( heures == 19 and minutes ==30 and heures < 21 ) ) then
                -- passer le radiateur SdB en mode confort -1° fil pilote
                 commandArray['OpenURL'] = 'http://14.6.212.72:8080/json.htm?type=command&param=switchlight&idx=20&switchcmd=Set%20Level&level=99'
                end 
            end  

        
    
--end
return commandArray
Ce script est réalisé dans l'éditeur de script de Domoticz
Après des modifications (bricolage dessus), il faut que je relance les services de Domoticz, est-ce normal?

Re: Script chauffage

Publié : 07 janv. 2016, 17:28
par oula85
j'ai des doléances assez semblables aux tiennes et en script device ca fonctionne nickel c'était obligatoire vu que j'ai un autre script de delestage qui doit venir enclencher un mode eco repris ici dans la ligne de démarrage de la chauffe , je commande le tout en mode Plan ( tu peux voir mon installation ici : viewtopic.php?f=21&t=1096

l'ordre n'est envoyé chez moi que lorsqu'une condition change en revanche j'ai doublé les ordres toutes les 15min pour m'assurer que le module à bien commuté dans l'état ou il doit être histoire de fiabiliser la chauffe idem avec une détection de perte du capteur de température

Code : Tout sélectionner

--script_device_chauffagechambre2.lua

--------------------------------
 ------ Start of edit section ------
 --------------------------------
 local consigneconfort = 18.5  --Température de consigne
 local consigneeco = 16.5  --Température de consigne
 local sondechambre2 = 'Temp Chambre 2' --Nom de la sonde de température
 local modulechambre2 = 'Module Chambre 2' --Nom du radiateur à allumer/éteindre
 
 --------------------------------
 -- End of edit section --
 --------------------------------
 
 commandArray = {}
tempchambre = otherdevices_temperature[sondechambre2]

-- conditions de chauffe --

-- marche confort --

if (otherdevices['Calendrier chauffage Chambre 2']=='On') and (tempchambre < consigneconfort ) and (otherdevices['Module Chambre 2']=='Off') and (otherdevices['Pile Chambre 2']=='Off') and (otherdevices['Eco chauffage Chambre 2']=='Off') then

commandArray[modulechambre2]='On'
end

-- arret confort --

if (otherdevices['Calendrier chauffage Chambre 2']=='On') and (tempchambre > consigneconfort ) and (otherdevices['Module Chambre 2']=='On') and (otherdevices['Eco chauffage Chambre 2']=='Off') then

commandArray[modulechambre2]='Off'
end

-- marche eco --

if (otherdevices['Calendrier chauffage Chambre 2']=='Off') and (tempchambre < consigneeco ) and (otherdevices['Module Chambre 2']=='Off') and (otherdevices['Pile Chambre 2']=='Off') and (otherdevices['Eco chauffage Chambre 2']=='Off') then

commandArray[modulechambre2]='On'
end

-- arret eco --

if (otherdevices['Calendrier chauffage Chambre 2']=='Off') and (tempchambre > consigneeco) and (otherdevices['Module Chambre 2']=='On') and (otherdevices['Eco chauffage Chambre 2']=='Off') then

commandArray[modulechambre2]='Off' 
end

-- marche eco forcé --

if (otherdevices['Eco chauffage Chambre 2']=='On') and (tempchambre < consigneeco ) and (otherdevices['Module Chambre 2']=='Off') and (otherdevices['Pile Chambre 2']=='Off') then

commandArray[modulechambre2]='On'
end

-- arret eco forcé --

if (otherdevices['Eco chauffage Chambre 2']=='On') and (tempchambre > consigneeco ) and (otherdevices['Module Chambre 2']=='On') then

commandArray[modulechambre2]='Off'
end


return commandArray

Re: Script chauffage

Publié : 07 janv. 2016, 21:35
par rimram31
Du coup ce post m'a motivé pour rédiger celui-ci: viewtopic.php?f=10&t=1329#p11434 ca doit couvrir a peu près ça, je n'ai pas le mode "forcé pour n minutes". Un mode On/off que je peux basculer "manuellement" (+ accès a distance & ImperiHome pour commuter au besoin).

Ca demande peut-être un peu plus de "tuyauterie", a vous de voir.