Aller au contenu

Heating Manager - PID and more


Dgille

Messages recommandés

Hello Jojo,

 

je confirme que la température extérieure n'est pas prise en compte dans la régulation. Elle est juste mentionnée dans les logs pour information.

 

Le programme d'origine permet de piloter plusieurs radiateurs avec des paramètres différents pour chacun (tu comprendras en regardant le fichier config). Ça serait compliqué de faire ça avec des variables. Et de toutes façons on a besoin du fichier config pour créer des événements.

 

En ce qui concerne l'air conditionné/réfrigéré, je n'en ai pas chez moi, donc c'est compliqué sans pouvoir tester. Mais ça doit être pas trop compliqué d'inverser la régulation, je pourrais tenter si tu es prêt à faire les tests de ton côté.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Felig a dit :

Le programme d'origine permet de piloter plusieurs radiateurs avec des paramètres différents pour chacun (tu comprendras en regardant le fichier config). Ça serait compliqué de faire ça avec des variables. Et de toutes façons on a besoin du fichier config pour créer des événements.

mais tu confirmes que le fqa actuel, c'est 1 par pièce/radiateur (ce qui est d'ailleurs bcp plus logique, car le nbr de pièce est variable d'une habitation à l'autre).

 

Il y a 2 heures, Felig a dit :

la température extérieure n'est pas prise en compte dans la régulation.

sais-tu comment elle pourrait être intégrée ? Les paramètres kP, kI & kD seraient définis pour un delta entre la température de consigne et la température extérieure ??? Et on pourrait les modifier automatiquement en fonction de ce delta ? Mais là on est peut-être en train de réinventer la roue ...

Il y a 2 heures, Felig a dit :

si tu es prêt à faire les tests de ton côté.

Evidemment que oui : je serais volontiers ton beta (testeur)

Lien vers le commentaire
Partager sur d’autres sites

Le fqa actuel c'est un QA par pièce, mais il peut y avoir plusieurs radiateurs dans cette pièce, qui dans le fqa sont gérés chacun individuellement (si leur inertie n'est pas identique, leur cycle ne sera pas identique).

Ça permet aussi de gérer des radiateurs avec des profils hétérogènes (ex: la radiateur 1 doit être allumé avec la commande "1" alors que le radiateur 2 peut être allumé avec la commande "turnOn").

 

On pourrait modifier l'inertie du radiateur en fonction de l'écart avec la température extérieure j'imagine. Mais ça demanderait bcp de tests (idéalement dans des périodes de variations fortes) pour pas grand chose au final je pense. Si le changement de température n'est pas trop brutal on ne verrait pas la différence puisque la régulation PID est déjà adaptive, et s'ajuste en fonction de la température constatée à la fin du cycle précédent.

 

Tu ne peux pas être beta, vu ce que tu as contribué sur GEA et ailleurs :). Je vais réfléchir à l'option froid. Ça rend un peu caduque les modes actuels par défaut (Confort, Eco, Vacances, etc.), il faudrait presque une UI distincte.

 

Lien vers le commentaire
Partager sur d’autres sites

ok pour la température extérieure : il ne faut pas se chatouiller pour se faire rire. Je pensais que c'était un paramètre important, mais je ne m'était encore jamais penché sérieusement sur la question.

 

je n'ai pas encore regardé les modes par défaut du QA. Je pensais que le QA ne s'occupait que de régler la régul du radiateur en fonction d'une température de consigne, mais apparemment, il fait beaucoup plus ... Il faut vraiment que je regarde ce qu'il a dans le ventre. Aujourd'hui, je choisis mes modes de chauffe (confort ou éco) en fonction d'un agenda Google. Il faut que je regarde comment pouvoir continuer à l'utiliser ...

Maintenant, voici ce que je vois comme modes pour chaque pièce :

  • Chauffe
    • confort (= présent et température agréable)
    • éco (= présent et température réduite)
    • vacances (= température hors gel)
  • AirCo
    • confort (= présent et température fraiche : ma cave à vins qui doit être fraiche h24 serait tout le temps dans ce mode)
    • éco (= présent et température supérieure)
    • vacances (= on arrête l'AirCo)

Je vois donc les 3 mêmes modes en chauffe ou réfrigération, seules les consignes varient.

 

Donc dans ce super QA, je verrais:

  • mode régulation : chauffe | réfrigération
  • confort : température de consigne (exple : chauffe = 20°C - réfrigération = 23°C ou 13°C pour vin)
  • éco : température de consigne (exple : chauffe = 17°C - réfrigération = 25°C)
  • vacances : température de consigne (exple : chauffe = 6°C - réfrigération = 40°C)

Je crois donc qu'il "n'y aurait qu'à" changer la formule selon qu'on est en mode chauffe ou réfrigération ...

Lien vers le commentaire
Partager sur d’autres sites

Le programme d'origine était un mini GEA en fait. J'ai essayé de simplifier (avec l'objectif de le rendre plus robuste vu qu'on lui confie le chauffage) et j'ai enlevé plusieurs trucs genre les modes de régulation non PID, l'anticipation de chauffe, etc. mais avec l'ajout de l'interface UI et plusieurs fonctions de contrôle/débogage pour renforcer la robustesse, je crois que j'ai pas vraiment réduit le nb de lignes au final.

 

Bref, vu comme tu présentes les choses, ça simplifie le sujet et ça donne envie de s'y mettre. Je regarde ça ce week-end!

 

En attendant ci-joint un draft de mode d'emploi que j'avais commencé à rédiger, ça te donnera une idée de la bête.

mode emploi.lua

Lien vers le commentaire
Partager sur d’autres sites

Tu as un visuel du QA ? Il ressemble à quoi ? C'est quoi son type ?

 

La bonne solution, en tout cas celle qui respecte la logique Fibaro dans la HC3, ne serait pas d'utiliser le type thermostat ?

Dans ce cas, il n'y a plus de question à se poser pour l'UI, on est guidé, l'interface ajoute automatiquement les boutons de réglage, et le module peut être intégré au panneau de chauffage, application, etc.
Et pour que le QA fonctionne, il faut respecter les API imposées pour les thermostats (setThermostatMode(), setHeatingThermostatSetpoint(), etc)

Le mieux est de partir d'un QA exemple thermostat, et d'ajouter son code dedans.

J'ai fait cela pour un QA qui pilote ma PAC.

En effet, la sonde de T° du split est à 2m de haut, donc pas précis.
Mon QA prend une sonde dans la pièce, et régule la température au 1/10 de degré près en pilotant la PAC (plus chaud/moins chaud, force la vitesse du ventilo pour la remonté rapide de température, etc). Ce n'est pas de la régulation PID, mais un bricolage adapté au split mural.

Lien vers le commentaire
Partager sur d’autres sites

Jojo,

 

J'ai été plus rapide que prévu. Voici une première version, qui gère normalement à la fois les radiateurs et les climatiseurs.

J'ai encore des petites choses à améliorer, mais rien d'essentiel.

J'ai aussi mis à jour le mode emploi.lua.

A ta disposition dès que tu as pu tester.

 

 

 

 

 

 

 

Thermostat_Auto.fqa

Modifié par Felig
intégration du mode d'emploi dans le fqa
  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

tu as été ^lus rapide que prévue, et je n'ai toujours pas eu le temps de regarder ...

Afin de ne pas perdre le travail du mode d'emploi, ne le mettrais-tu pas comme un fichier supplémentaire dans le QA?

 

Lien vers le commentaire
Partager sur d’autres sites

Si j'y pensais, mais j'attends qu'il soit dans une forme à peu près finale. Idéalement lors de chaque petite mise à jour l'utilisateur n'aura que le fichier 'main' à mettre à jour.

 

EDIT: Ca y est je l'ai intégré.

Modifié par Felig
Lien vers le commentaire
Partager sur d’autres sites

k'ai commencé à lire le mode d'emploi : ce QA est une tuerie ! Rien qu'à en lire les 90 premières lignes, j'en vais mal de tête.
Je comprends maintenant, pourquoi il y a un fichier config, et pas uniquement des variables...

J'essaie d'implémenter ce monstre pour ma cave à vins ce pm ...

Lien vers le commentaire
Partager sur d’autres sites

je n'y arrive pas. :20:

 

J'ai importé ton QA et l'ai assigné à la pièce Cave à vins.

Dans le fichier config, la seule ligne que j'ai modifiée et celle de la définition du Heater:

  HM:addHeater({id=327, property="NO", Kp=100})

Le mode du QA était déjà ok :

  HMCF.coolingDevice  = true 

idem pour le mode auto ; je n'ai rien changé :

HM:setModes({Auto="#1", Aeration=5})

i'ai configuré la température de la pièce comme il faut (enfin, je crois, je ne suis plus sûr de rien)

f333.jpg

Et dans le preview du device :

gctk.jpg

  1. je n'ai pas de température
  2. il dit que le thermostat est OFF
  3. il affiche une erreur inconnue

Merci de ton aide

Lien vers le commentaire
Partager sur d’autres sites

Met le paramètre HMCF.showDebug à 4 (au lieu de 2), relance le programme et montre moi les logs dans la console stp

 

EDIT: Pas la peine, je pense que j'ai trouvé, c'est à cause du property="NO". Essaie cette version (à copier dans le fichier main)

HM HC3 Cool.lua

Modifié par Felig
Lien vers le commentaire
Partager sur d’autres sites

autre soucis qui apparait :

La config du mode Auto (config à laquelle je n'ai rien compris)

 

EDIT :  impossible de mettre ton Debug, car il contiendrait des caractères spéciaux, qui sont interprétés comme dex emoji non permis par le site ...

Modifié par jojo
Lien vers le commentaire
Partager sur d’autres sites

Je ne vois rien, le pavé du code a l'air vide

Mais effectivement le mode Auto="#1" fait référence à une zone de climat, aucun intérêt pour une cave à vins. Pas besoin de mode Aération non plus. Remplace la ligne par:

HM:setModes({Auto=13})

 

 

Modifié par Felig
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

j'ai du le vider, pour que le site accepte d'envoyer le message.

ton debug est trop joli, impossible de le publier sur le site.

en mettant la méthode en commentaires erreur car il ne trouve pas la mathode Auto

Lien vers le commentaire
Partager sur d’autres sites

ça va bcp mieux comme ça !

 

Plus d'erreur dans le dévug, et il m'affiche la bonne température.

 

Par contre, toujours impossible de t'envoyer le débug, même en le passat dans sublimetext (équivalen de NotePad++)

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, Felig a dit :

Il ne faut pas mettre en commentaires, il faut utiliser la syntaxe ci-dessous:


HM:setModes({Auto=13})

Voici une version sans emojis dans les logs:

HM HC3 Cool.lua

voici donc un debug 

[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: ------------------------------------------------------------------------------
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Updating outdoor temperature
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Setpoint Cave Vins : Resolving alias 'Auto'
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: readString: Auto
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: => Mode Auto = 13
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Setpoint Cave Vins : 'Auto' = 13° (Auto)
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Room Setpoint = {"sour":"Auto","setp":13,"manual":false,"user":"User","orig":"Auto","code":"Auto","desc":"Setpoint Cave Vins"}
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Translate: Auto
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: readString: Auto
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: UpdateLabelSource OK
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: updateRoomSetpoint OK
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Updating Heater Sensor value
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: getTempSensor : heater Cave_AirCo
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: (Cave_AirCo) Using room Cave Vins default sensor as temperature sensor
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Check PID cycle for Cave_AirCo
[06.01.2023] [18:32:36] [DEBUG] [QUICKAPP846]: Main Loop OK

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...