Page 1 sur 2

[Tuto] Gestion chauffage elect avec conso virtuel

Publié : 28 mai 2015, 20:37
par mulot35
Salut,
Alors comme d'hab j'ai rien inventé je part du script V1 de Vil1driver récupéré ici viewtopic.php?f=10&t=233&start=10 normalement ca marche bien.

Donc Merci a vil1driver pour sont taf. :mrgreen:

_________________________________________
[Tuto]Gestion chauffage elect avec conso virtuel
_________________________________________
Alors on part tu principe que:
-chaque radiateur est branché / câblé sur un prise télécommandable par Domoticz (et qu'elle est reconnu)
-chaque zone a son thermomètre.

On part sur 3 zones:
-1 chambre
=>Nom du thermometre:Sonde_chambre_leia
=>Nom de l'interrupteur du radiateur:Radiateur_chambre_leia
-1 Salle de bain
=>Nom du thermometre:Sonde_sdb_rdc
=>Nom de l'interrupteur du radiateur:Radiateur_sdb_rdc
-1 Salle de jeu
=>Nom du thermometre:Sonde_sdj
=>Nom de l'interrupteur du radiateur:Radiateur_sdj

La finalité:
-Je veux pouvoir piloter chaque zones en fonction de mon emploi du temps.
-Je veux savoir dans mes deux zones que consomme mes radiateurs.
-Je veux 17° quand je suis absent (Thermostat_eco)
-Je veux 19° dans les pièces de vie (Thermostat_confort)
-Je veux 21° dans la salle de bain (Thermostat_SDB)
-Je veux 17,5° dans les chambres (Thermostat_chambre)

1.Matériels virtuels

On va activer le créateur de matériels virtuel en cliquant sur:
-Configuration/Matériel
-remplir comme suis:
Activé: coché
Nom: Dummy
Type: Dummy (Does nothing, use for virtual switches only)
Délai d'attente de données: Désactiver
-Puis ajouter

2.Création des devices

On active la reconnaissance des nouveaux matériels:
-Configuration/Paramètres/Matériel & dispositifs/ => Vérifier que "Accepter de nouveaux dispositifs matériels" est coché

2.1.Les thermostat

On creer les 4 thermostats:
-Configuration/Matériel
-Dans la ligne dummy cliquer sur le bouton "Créer capteurs virtuels"
-Puis dans le popup selectionner "consigne du thermostat"
puis on le refait encore 3 fois.
-Puis on part dans Configuration/Dispositif
-On appuie sur le bouton "Inutilisés" pour reperer nos 4 capteurs.
-On les ajoutes avec la fleche verte et nous les appelons:
Thermostat_eco, Thermostat_confort, Thermostat_sdb, Thermostat_chambre

Nos 4 thermostat sont désormais dans l'onglet "Mesures" .
On peut double cliqué sur chaqu'un pour faire notre réglage:
-Je veux 17° quand je suis absent (Thermostat_eco)
-Je veux 19° dans les pièces de vie (Thermostat_confort)
-Je veux 21° dans la salle de bain (Thermostat_sdb)
-Je veux 17,5° dans les chambres (Thermostat_chambre)

2.2.Les consos virtuels

Donc on dit 3 zones donc 3 radiateurs, donc 3 consos virtuels + 1consos total.
On creer les 4 capteurs:
-Configuration/Matériel
-Dans la ligne dummy cliquer sur le bouton "Créer capteurs virtuels"
-Puis dans le popup selectionner "Electrique (Instant+Compteur)"
puis on le refait encore 3 fois.
-Puis on part dans Configuration/Dispositif
-On appuie sur le bouton "Inutilisés" pour reperer nos 4 capteurs.
-On les ajoutes avec la fleche verte et nous les appelons:
Conso_chambre_leia, Conso_sdb_rdc, Conso_sdj, Conso_total
Nos 4 capteurs de conso sont désormais dans l'onglet "Mesures".

2.3.Les consos virtuels

On cree 3 interrupteurs de forcages/pilotage.Pour cela:
RDV dans Interrupteur/ajout manuel

Hardware: Dummy
Name: Confort_on_eco_off puis Capteur_presence puis Forcage_confort
Switch Type: On/Off
Type: X10
House Code: A/A/A/
Unit Code: 1/2/3/
Test
As: Main Device Sub/Slave Device

3.Les scripts

Script a déposé dans "/home/pi/domoticz/scripts/lua" avec le nom : scrip_time_chauffage_sdb_rdc.lua
=> script_time étant obligatoire

Code : Tout sélectionner

-- Ce script permet de maintenir la température
 
--------------------------------
------ Variables à éditer ------
--------------------------------
nom = 'SDB RDC'  --Affichage dans le log
local consigne_conf_semaine = tonumber(otherdevices_svalues['Thermostat_sdb'])  -- Température de consigne confort en semaine
local consigne_conf_weekend = tonumber(otherdevices_svalues['Thermostat_sdb'])  -- Température de consigne confort le weekend
local consigne_eco = tonumber(otherdevices_svalues['Thermostat_eco'])  -- Température de consigne économique
local consigne_abs = tonumber(otherdevices_svalues['Thermostat_eco'])  -- Température de consigne lors d'abscence prolongée

local sonde = 'Sonde_sdb_rdc' -- Nom de la sonde de température
local mode = 'Confort_on_eco_off' -- Nom de l'interrupteur virtuel de sélection de mode Off=eco On=confort
local thermostat = 'Capteur_presence' -- Nom de l'interrupteur virtuel de thermostat (Off=abscence prolongée)
local boost = 'Forcage_confort'  -- Nom de l'interrupteur virtuel de forçage de la consigne en mode weekend

local radiateur = 'Radiateur_sdb_rdc' -- Nom de l'interrupteur de chauffage
local puissance = 2000   -- puissance du chauffage en watt
local conso = 'Conso_sdb_rdc'   -- nom du capteur virtuel de consommation électrique
local conso_id = 57  -- idx du capteur virtuel de consommation électrique

--------------------------------
-- Fin des variables à éditer --
--------------------------------
 
time = os.date("*t") 

-- on regarde depuis combien de temps l'inter de mode à changé d'état
t1 = os.time()
s = otherdevices_lastupdate[mode]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))

commandArray = {}
   
   local today = os.date("%A")
    local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) -- Température relevée
   
   if (today == "Saturday" or today == "Sunday" or otherdevices[boost] == 'On') then
      consigne_conf = consigne_conf_weekend
   else
      consigne_conf = consigne_conf_semaine
   end
   
   -- si le thermostat général est actif
    if (otherdevices[thermostat] == 'On') then
      -- si il y a présence ou abscence depuis moins d'une heure, la journée
        if (otherdevices[mode] == 'On' or (otherdevices[mode] == 'Off' and difference < 3600 and time.hour >= 7 and time.hour < 23)) then
         consigne = consigne_conf
         else
         consigne = consigne_eco
      end
   else
         consigne = consigne_abs
   end   
   
   if (temperature < consigne) then
   
      commandArray[radiateur]='On'
      print('Chauffage ' .. nom .. ' -. ON .-')
      
                  
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
      energy = tonumber(energy) + (puissance / 60)    
      commandArray['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy    
         
   else
      
      commandArray[radiateur]='Off'
      print('Chauffage ' .. nom .. ' -. OFF .-')
      
         
      -- envoie de la conso dans le capteur virtuel d'énergie
      npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
      energy = tonumber(energy)
      commandArray['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy   
      
   end

   print('il fait '..temperature..'C pour une consigne de '..consigne..'C souhaite dans la ' .. nom .. '')
      
return commandArray

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 19 oct. 2015, 22:34
par leraver
Bonjour,
Je suis en train de jouer un peut avec cette gestion.
Mais un doute m'habite... les 3 zones utilisent le meme script, ou bien il faut deposer 3 scripte (A mon humble avis il faut en faire 3 en fin un par zone en modifiant a chaque fois les bonne info...)

Et 2eme question de gros newbie... le scrpt-time? une piste?

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 19 oct. 2015, 22:46
par vil1driver
Question 1, oui autant de scripts que de zone.
le compteur peut être commun ou pas..
Ainsi que l'inter de mode.

Question 2, pas compris ;)

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 20 oct. 2015, 07:22
par leraver
3.Les scripts

Script a déposé dans "/home/pi/domoticz/scripts/lua" avec le nom : scrip_time_chauffage_sdb_rdc.lua
=> script_time étant obligatoire
script_time, je ne vois pas ou le trouver... je refait une recherche du taff dans la journée.

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 20 oct. 2015, 07:41
par vil1driver
Je ne comprends toujours pas.

C'est un _ et non un -

Comme indiqué, le nom du script doit être

script_time_blablabla.lua

Changes blablabla par ce que tu veux..

Et tu le déposes dans le dossier indiqué..

Où bloques tu ?

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 20 oct. 2015, 09:33
par leraver
Oula j'ai compris:
C'est la chaine de caractère :" script_time" qui doit etre la... dans le nom du script
il y aura donc:
- scrip_time_chauffage_sdb_rdc.lua
- scrip_time_chauffage_chambre_leia.lua
- scrip_time_chauffage_sdj.lua
enfin pour rester sur cet exemple

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 20 oct. 2015, 10:49
par vil1driver
Oui c'est ça.

script_time signifie : se lance chaque minute

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 13 déc. 2015, 16:27
par alz937
Bonjour,

Je trouve très bien cette gestion du chauffage par Domoticz (j'en ai essayé de différentes) mais j'ai un souci de fonctionnement.

Code : Tout sélectionner

2015-12-13 16:21:00.126 Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_chauffage_sdb.lua:70: bad argument #1 to 'match' (string expected, got nil)
Apparemment ça bloque sur le string.match et je ne comprend pas trop quoi faire, c'est au niveau de la gestion de la conso.

Le reste a l'air de bien fonctionner.

Je pense avoir mis les bons éléments virtuels pourtant.

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 30 déc. 2015, 19:38
par leraver
Je viens de le mettre pour une piece ca fonctionne, cool.
A part le capteur virtuel de consommation mais je pense que j'ai pas compris le lien virtuel a faire est si le idx doit etre remis autre part...

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Publié : 23 oct. 2017, 08:58
par padbol2002
Bonjour,

Petites questions sur ce srcipt :

1 - Le pourquoi du j'attend 1h aprés que j'ai appuyé sur bouton eco (absence) pour passer en éco

2 - N'y a t'il pas de risque (usure, etc etc) à piloter la commande on/off chaque minute ? Ne faudra t'il pas le faire que lors d'un véritable changement?

merci de vos réponses.