Pour gérer ce pb d'allumage simultané de tous les radiateurs, j'ai légèrement modifié le script pour gérer un décalage.
Car outre le fait de voir tous les radiateurs s'allumer en même temps (avec risque de coupure courant), je me suis retrouvé avec un autre pb : l'émetteur envoie aussi en simultané un ordre à ces mêmes radiateurs : je perdais parfois un ordre...
L'idée est donc de garder le même cycle pour tous les radiateurs, puis de décaler chaque zone de manière unique.
Dans l'exemple ci-dessous, j'ai un cycle de 10 minutes, mais le script ne sera exécuté qu'à 4', 14, 24, 34 etc.
Code : Tout sélectionner
pid['cycle'] = 10 -- temps en minutes d'un cycle PID
pid['freq'] = 4 -- décalage du cycle (reste division minutes/cycle)
Le code dans modules.lua devient donc
Code : Tout sélectionner
-- à chaque cycle
if ( time.min%pid['cycle'] == pid['freq'] ) then
Evidemment, pour un autre radiateur je ne change QUE le pid[freq] pour un même cycle de 10 minutes, comme par exemple :
Code : Tout sélectionner
pid['cycle'] = 10 -- temps en minutes d'un cycle PID
pid['freq'] = 5 -- décalage du cycle (reste division minutes/cycle)
qui lui sera exécuté à 5', 15', 25' etc.
Pas de risque de voir tous les radiateurs commencer en même temps leur chauffe.
MAIS si le 1er doit être allumé pendant 10 minutes, le second aussi, le troisième aussi etc... il y a forcément un moment où ils sont tous allumés en même temps... Et donc potentiellement un risque de disjoncter !
Personnellement, avec cette petite modification, je n'ai jamais eu de coupure de courant, et de plus je ne perds plus d'ordre envoyé aux radiateurs !
Pour information, si cycle = 10 minutes, on peut gérer 10 décalages : de 0 à 9 minutes, et donc 10 zones.
Donc pour un cycle de 5 minutes, on peut gérer 5 décalages (de 0 à 4 minutes)
Je gère aujourd'hui 7 zones avec un cycle de 10 minutes : je peux rajouter 3 zones en gardant ce cycle de 10 minutes, le prochain aura un décalage de 7 minutes (j'utilise les 7 1er décalages de 0 à 6 minutes).
Si je voulais rajouter une 11ième zone, il me faudra modifier les cycles à 11 minutes minimum (et peut-être revoir les facteurs PID ??) pour les 10 scripts existants sans modifier le décalage, et je crée mon onzième avec un décalage de... 10 pour ceux qui ont suivi ^_^