Alors oui j'ai bien le fichier avec le bon nom et il s'incrémente régulièrement avec des nouvelles valeurs... ça dérive pas mal de la consigne d'ailleurs (peut être faute au PID aléatoire de base et au manque de diode sur le fil pilote pour une vraie commande TOR).
Mais la je ne comprends plus rien je viens de repasser le script en type "time" et compute(pid) et maintenant mon log se remplis régulièrement de suggestion de PID
Code : Tout sélectionner
2018-12-07 03:02:18.884 Status: LUA: PID Sdb_Etage initialisation..
2018-12-07 03:02:18.929 Status: Incoming connection from: 192.168.1.31
2018-12-07 03:10:01.316 Status: LUA: PID zone: SDB_ETAGE
2018-12-07 03:10:01.316 Status: LUA: température: 22.6°C pour 21°C souhaité
2018-12-07 03:10:01.316 Status: LUA: Kp: 44
2018-12-07 03:10:01.316 Status: LUA: Ki: 19
2018-12-07 03:10:01.316 Status: LUA: Kd: 44
2018-12-07 03:10:01.316 Status: LUA: erreur: -1.6
2018-12-07 03:10:01.316 Status: LUA: ∑ erreurs: 0
2018-12-07 03:10:01.316 Status: LUA: Δ erreurs: 0
2018-12-07 03:10:01.316 Status: LUA: P: -70.4
2018-12-07 03:10:01.316 Status: LUA: I: 0
2018-12-07 03:10:01.317 Status: LUA: D: 0
2018-12-07 03:10:01.317 Status: LUA: cycle: 10min (sécu: 30s)
2018-12-07 03:10:01.317 Status: LUA: commande: 0% (00'00")
2018-12-07 03:10:01.317 Status: LUA:
2018-12-07 03:10:01.319 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_chauffageSdbHaut.lua
2018-12-07 03:20:00.064 Status: LUA: PID zone: SDB_ETAGE
2018-12-07 03:20:00.064 Status: LUA: température: 22.6°C pour 21°C souhaité
2018-12-07 03:20:00.064 Status: LUA: Kp: 44
2018-12-07 03:20:00.064 Status: LUA: Ki: 19
2018-12-07 03:20:00.064 Status: LUA: Kd: 44
2018-12-07 03:20:00.064 Status: LUA: erreur: -1.6
2018-12-07 03:20:00.064 Status: LUA: ∑ erreurs: 0
2018-12-07 03:20:00.064 Status: LUA: Δ erreurs: 0
2018-12-07 03:20:00.064 Status: LUA: P: -70.4
2018-12-07 03:20:00.065 Status: LUA: I: 0
2018-12-07 03:20:00.065 Status: LUA: D: 0
2018-12-07 03:20:00.065 Status: LUA: cycle: 10min (sécu: 30s)
2018-12-07 03:20:00.065 Status: LUA: commande: 0% (00'00")
2018-12-07 03:20:00.065 Status: LUA:
2018-12-07 03:20:00.067 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_chauffageSdbHaut.lua
Si j'interprète bien il me suggère proportionnel à -70,4, intégrale et dérivé à 0...?
Merci pour ton aide...
EDIT : après relecture de toutes les pages de sujet non, je me rends compte que ce que je vois dans mon log en mode compute(pid) est simplement un rapport de la situation actuelle... Qui est très loin de ma consigne... Je vais tenter à nouveau l'autotune mais je ne vois pas ou est mon erreur... Sinon je n'aurais plus qu'à calculer mon PID manuellement mais ce n'est pas gagné pour tomber juste !
EDIT 2 : Je remarque aussi que dans mon rapport Epsilon et Delta ne sont pas affichés correctement. Il me manque également des tiret... J'edit mes script avec le programme "nano" sous Raspian. Je fait ça en connection ssh depuis un mac. Un problème d'encodage éventuel peut-être ?
EDIT 3 :
Je vois qu'ici :
Code : Tout sélectionner
-- journalisation
log('PID autotune '..string.upper(pid['zone']))
if init == 4 then
log('max1: '..max1..' a '..os.date('%H:%M', max1_ts),pid['debug'])
log('mini: '..mini..' a '..os.date('%H:%M', mini_ts),pid['debug'])
log('max2: '..max2..' a '..os.date('%H:%M', max2_ts),pid['debug'])
log('Pu:'..Pu,pid['debug'])
log('A:'..A,pid['debug'])
log('Ku:'..Ku,pid['debug'])
log('Kp:'..Kp..' Ki:'..Ki..' Kd:'..Kd)
else
log('mesures en cours..')
end
Il faut 4 enregistrement de mesure min/max pour pouvoir sortir une suggestion de pid. Je suis pour l'instant dans le cas "else" du coups il ne m'affiche que mesure en cours. J'ai essayer de me mettre des balise pour afficher dans mon log quand j'avance dans ces prises de mesures, je sais pas si j'ai fait ça correctement

:
Code : Tout sélectionner
-- recherche des valeurs mini/maxi
for _,v in spairs(ReverseTable(lines_from(pid['zone']..'_temps'))) do
t = tonumber(string.match(v,";([^%s]+)"))
ts = tonumber(string.match(v,"([^%s]+);"))
if t < mini and init == 0 then
log('1min max')
init = 1
elseif t > max2 and (init == 1 or init == 2) then
log('2min max')
init = 2
max2 = t
max2_ts = ts
elseif t < mini and (init == 2 or init == 3) then
log('3min max')
init = 3
mini = t
mini_ts = ts
elseif t > max1 and (init == 3 or init == 4) then
log('4min max')
init = 4
max1 = t
max1_ts = ts
end