[Tuto] Gestion chauffage elect avec conso virtuel

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

[Tuto] Gestion chauffage elect avec conso virtuel

Message 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
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
leraver
Messages : 143
Inscription : 09 oct. 2015, 12:38
Contact :

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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?
Un jour j'irais vivre en théorie.
Parce que en théorie tous ce passe bien...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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 ;)
Dernière modification par vil1driver le 20 oct. 2015, 07:37, modifié 1 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
leraver
Messages : 143
Inscription : 09 oct. 2015, 12:38
Contact :

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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.
Dernière modification par leraver le 20 oct. 2015, 09:47, modifié 1 fois.
Un jour j'irais vivre en théorie.
Parce que en théorie tous ce passe bien...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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 ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
leraver
Messages : 143
Inscription : 09 oct. 2015, 12:38
Contact :

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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
Un jour j'irais vivre en théorie.
Parce que en théorie tous ce passe bien...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message par vil1driver »

Oui c'est ça.

script_time signifie : se lance chaque minute
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
alz937
Messages : 1
Inscription : 13 déc. 2015, 16:22

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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.
leraver
Messages : 143
Inscription : 09 oct. 2015, 12:38
Contact :

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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...
Un jour j'irais vivre en théorie.
Parce que en théorie tous ce passe bien...
padbol2002
Messages : 84
Inscription : 23 oct. 2017, 08:53

Re: [Tuto]Gestion chauffage elect avec conso virtuel

Message 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.
Répondre