Page 20 sur 34

Re: chauffage PID

Publié : 06 déc. 2018, 17:37
par Ivro74
Hello,
Bon j'ai intégré ton script à Domoticz et il a l'air de fonctionner car la température de la pièce régul autour de la consigne.
En revanche, lorsque j'ai lancé l'autotune j'ai eu des paramètres suggérer immédiatement dans le log mais depuis plus rien :?:
Ou est ce que ça peux coincer d'après vous svp ?

Image

Image

J'avais également fait un script sur un bouton virtuel pour inverser ma commande de chauffage et j'utilisais ce bouton virtuel comme actionneur pour piloter le chauffage. J'ai supprimer ce script quelque temps après avoir lancer l'autotune et réassigner ce vrai actionneur dans le script pour eviter d'avoir mes logs surcharger par le script d'inversion.
Du coups après j'ai relancer le script en autotune mais plus de suggestion de PID. Il tourne depuis 8h ce matin...

Re: chauffage PID

Publié : 06 déc. 2018, 23:02
par vil1driver
Salut,
Ivro74 a écrit : 06 déc. 2018, 17:37 J'avais également fait un script sur un bouton virtuel pour inverser ma commande de chauffage et j'utilisais ce bouton virtuel comme actionneur pour piloter le chauffage.
Totalement inutile car déjà intégré

Corrige le script en fonction sinon comment veux tu obtenir quelques chose de correct

Code : Tout sélectionner

pid['invert'] = true
Ps: pour du texte, pas besoin d'une photo, un simple copié collé suffit

Pour les autre, je lâche pour l'instant l'idée d'améliorer le fonctionnement grâce à la logique floue car trop floue :D
Au final je suis plus que satisfait en l'état.
L'autotune est efficace, toute la maison y est passée, je valide complètement.
Je vai plutôt porter mes efforts futurs à reproduire cela avec un arduino, madame m'ayant réclamé une fiabilité à toute épreuve..

Re: chauffage PID

Publié : 06 déc. 2018, 23:29
par Ivro74
Salut,

Merci pour ta réponse. J'ai justement supprimer mon script et passer le PID['invert'] à true.
J'ai modifier le nom de mes fichier pour qu'il ne soit plus executer (en les renommants xxxxxx_demo). J'ai supprimer les variable utilisateurs précédement créé automatiquement. Mis à jour Raspian, rebooter le pi puis tous remis en fonctionnement en renomant à nouveau...
Sa tourne mais toujours pas de PID suggérer dans mes logs... J'ai du mal à comprendre pourquoi... :idea:

Re: chauffage PID

Publié : 06 déc. 2018, 23:30
par Ivro74
vil1driver a écrit : 06 déc. 2018, 23:02
Je vai plutôt porter mes efforts futurs à reproduire cela avec un arduino, madame m'ayant réclamé une fiabilité à toute épreuve..
Je connais ça, ce que madame veux madame doit avoir... (et on est tranquille pour jouer de notre coté quelque temps :lol: :lol: )

Re: chauffage PID

Publié : 06 déc. 2018, 23:33
par Ivro74
Exemple de mes dernier logs :

Code : Tout sélectionner

2018-12-06 23:21:52.326 Status: LUA: PID autotune SDB_ETAGE
2018-12-06 23:21:52.327 Status: LUA: mesures en cours..
2018-12-06 23:21:52.328 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_chauffageSdbHaut.lua
2018-12-06 23:23:39.009 Status: OpenZWave: Received timeout notification from HomeID: 3524960018, NodeID: 5 (0x05)
2018-12-06 23:23:49.011 Status: OpenZWave: Received timeout notification from HomeID: 3524960018, NodeID: 5 (0x05)
2018-12-06 23:23:52.799 Status: LUA: PID autotune SDB_ETAGE
2018-12-06 23:23:52.799 Status: LUA: mesures en cours..
2018-12-06 23:23:52.800 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_chauffageSdbHaut.lua
2018-12-06 23:28:35.076 Status: OpenZWave: Received timeout notification from HomeID: 3524960018, NodeID: 8 (0x08)
2018-12-06 23:28:45.079 Status: OpenZWave: Received timeout notification from HomeID: 3524960018, NodeID: 8 (0x08)
2018-12-06 23:28:55.081 Status: OpenZWave: Received timeout notification from HomeID: 3524960018, NodeID: 8 (0x08)
J'ai essayer cet aprém en forcant le reveil de tous mes noeuds zwave apparement endormis au cas ou mais pas mieux...

Re: chauffage PID

Publié : 06 déc. 2018, 23:41
par vil1driver
Vérifie à tout hasard qu'un fichier texte est bien créé dans le dossier lua (comportant les mesures de température) son nom doit correspondre avec le nom de zone, (SDB_ETAGE_temps.txt)

Re: chauffage PID

Publié : 07 déc. 2018, 03:24
par Ivro74
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 :lol: :?: :?:

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 :roll: :

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

Re: chauffage PID

Publié : 07 déc. 2018, 08:33
par vil1driver
Tu comprends que eco = confort - 3 °C ?

Si tu mets confort à 30, eco vaut 27..

Ton chauffage ne se coupe donc jamais

Achète une diode avant de tester quoi que ce soit

Re: chauffage PID

Publié : 07 déc. 2018, 08:44
par Ivro74
C'est fait elles arrivent ce matin (100 nu pour le prix d'une toute cablée...si vous en chercher je distribue le surplus lol)
Sa ira sans doute beaucoup mieux. En tous cas en tentant de comprendre le max du script pour ce qui est dans mes cordes, je me rends compte de la reflexion qu'un tel script (pour un usage perso) représente et du temps que t'a pu y passer, chapeau... Merci du partage et de le mettre à ma (notre) portée !

Re: chauffage PID

Publié : 07 déc. 2018, 09:50
par vil1driver
très légère maj de modules.lua pour que l'autotune ne se cogne pas tout le fichier texte de relèves de temps inutilement si les valeurs utiles sont déjà acquises