Un thermostat programmable contrôle un chauffage et un conditionneur d’air en fonction de données entrées à l’aide d’un pavé de dix boutons par un utilisateur. En fonctionnement, le thermostat agit soit sur le chauffage, soit sur le conditionneur d’air, pour faire converger la température ambiante vers la température cible courante. Au chauffage et au conditionneur d’air s’ajoute un ventilateur également contrôlé par le thermostat. En fonctionnement, le thermostat contrôle chacun de ces trois éléments par le biais de trois relais de puissance. Le thermostat établit la température ambiante à l’aide d’un capteur de température. Le cycle et le mode de rafraîchissement de cette information ne sont pas connus car ils dépendent du dispositif retenu pour l’installation finale. En effet, en fonction de contraintes matérielles et logicielles ultérieurement définies (type de capteur, protocole de communication, etc.), la spécification doit être suffisamment flexible pour s’adapter à ces contraintes.
Le thermostat a besoin à tout moment de quatre informations : la température ambiante, l’heure et le jour courants, la température cible courante, ainsi que la constante « delta » telle que la condition d’arrêt du chauffage soit exprimée par « température ambiante > température cible courante + delta », et la condition d’arrêt du conditionneur d’air soit exprimée par « température ambiante < température cible courante - delta ». Le ventilateur est piloté via un commutateur comportant deux modes : le mode forcé entraîne le fonctionnement du ventilateur quelle que soit la situation. Le mode automatique n’entraîne lui au contraire la mise en marche du ventilateur que si le chauffage ou le conditionneur d’air se lance. En mode automatique, le ventilateur s’arrête aussi si le chauffage ou le conditionneur d’air s’arrête. La température cible est décrite dans une table de huit valeurs préalablement entrées par l’utilisateur. Avec chaque valeur est enregistrée une heure. Par convention, les quatre premières heures enregistrées décrivent les instants d’une journée de la semaine auxquels la température cible va changer. Les quatre dernières heures elles, décrivent les instants d’une journée du week-end auxquels la température cible va changer.
Exemple :
- Période de programmation n°1, heure : 22H, température cible : 21°Celsius à partir de 22H
- n°2, 7H, 14°Celsius à partir de 7H
- n°3, 9H, 22°Celsius à partir de 9H
- n°4, 17H, 18°Celsius à partir de 17H
- n°5, 23H, 22°Celsius à partir de 23H
- n°6, 9H, 14°Celsius à partir de 9H
- n°7, 13H, 22°Celsius à partir de 13H
- n°8, 18H, 19°Celsius à partir de 18H
Le thermostat dépend d’une interface utilisateur intégrant le pavé de dix boutons. Un témoin d’activité, un commutateur de saison et un commutateur de ventilation sont aussi membres de l’interface utilisateur. Chaque commutateur accepte une valeur de paramètre parmi deux ou trois possibilités. Les commutateurs et leurs valeurs de paramètre se présentent ainsi comme suit :
- Commutateur de saison
Heat
: le thermostat ne contrôle que le chauffage pour réguler la température ambiante.Cool
: le thermostat ne contrôle que le conditionneur d’air pour réguler la température ambiante.Off
: dans ce dernier cas, le chauffage et le conditionneur d’air sont stoppés et ne peuvent être remis en fonctionnement qu’en sortant du modeOff
.- Commutateur de ventilation
On
: le ventilateur opère en permanence.Auto
: le ventilateur n’opère que si le chauffage est actif ou le conditionneur d’air est actif.Le témoin d’activité quant à lui ne s’allume que si le chauffage est actif ou si le conditionneur d’air est actif. L’interface utilisateur est dotée d’un système alternant toutes les deux secondes l’affichage de l’heure et du jour courants avec l’affichage de la température ambiante, ainsi qu’un système d’affichage de la température cible courante (cf. figure). C’est le mode d’activité de programme (état
Operate
) dans lequel le thermostat vérifie seconde par seconde si l’heure courante est égale à l’instant auquel la température cible doit changer. Dans un tel cas, il faut passer à la période de programmation suivante et fixer la nouvelle température cible courante à partir de la table. Il est cependant possible de ne pas tenir compte du programme en maintenant jusqu’à nouvel ordre la température cible courante (boutonHold temp
de l’interface utilisateur). Le mode alternatif au mode d’activité de programme est le mode de configuration/programmation (étatSetup
). Les données affichées par l’interface utilisateur dépendent alors du fait que l’on configure le jour et l’heure courants du thermostat ou alors que l’on programme la table avec de nouvelles températures cibles à des créneaux horaires précis. L’affichage a cet aspect :![]()
Interface utilisateur
Dans la figure, les quatre lignes correspondent à quatre possibilités de visualisation. Dans une ligne donnée, il y a deux zones d’affichage. Selon l’état courant du thermostat programmable, ces zones sont réservées à l’affichage de données bien précises. En ce sens, nous avons mentionné en italique, pour information, l’état dans lequel se trouverait le thermostat pour être en mesure d’afficher le type de données. Par exemple, la première ligne en haut de la figure, il apparaît à gauche, le jour et l’heure courants et à droite, la température cible courante à atteindre. C’est seulement dans l’état
Operate
et son sous-étatTarget temperature displaying
que cela est possible.Chacun des dix boutons du pavé génère un événement chaque fois qu’il est poussé. Il y a donc un type d’événement par bouton :
Temp up
: dans le mode d’activité de programme, ce type d’événement incrémente et modifie la température cible courante qui est affichée. Dans le mode de configuration/programmation, ce type d’événement incrémente la température cible d’une période de programmation donnée sans dépasser 90°Fahrenheit. On passe d’une température cible à une autre dans la table en appuyant sur la toucheView program
(cf. ci-après).Temp down
: dans le mode d’activité de programme, ce type d’événement décrémente et modifie la température cible courante qui est affichée. Dans le mode de configuration/programmation, ce type d’événement décrémente la température cible d’une période de programmation donnée sans dépasser 40°Fahrenheit. On passe d’une température cible à une autre dans la table en appuyant sur la toucheView program
(cf. ci-après).Time forward
: cette touche n’est utilisable que dans le mode configuration/programmation. En plus de la possibilité d’incrémenter l’heure courante (cf.Set clock
), cette touche permet d’incrémenter de quinze secondes à chaque appui, l’heure associée à une période de programmation donnée (cf.View program
).Time backward
: cette touche n’est utilisable que dans le mode configuration/programmation. En plus de la possibilité de décrémenter l’heure courante (cf.Set clock
), cette touche permet de décrémenter de quinze secondes à chaque appui, l’heure associée à une période de programmation donnée (cf.View program
).Set clock
: en appuyant sur cette touche, on entre dans le mode de configuration/programmation et donc on quitte le mode d’activité de programme. Dans cet état, en appuyant de nouveau sur la toucheSet clock
, on affiche les heures si les minutes étaient affichées, on affiche les minutes (affichées par défaut en entrant dans l’état) si les heures étaient affichées. On incrémente ou décrémente les heures ou les minutes affichées en appuyant respectivement sur les touchesTime forward
ouTime backward
. De manière générale, la toucheSet clock
permet de modifier l’heure courante du thermostat. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le mode d’activité de programme et plus spécialement dans l’étatHold
(cf. boutonHold temp
).Set day
: en appuyant sur cette touche, on entre dans le mode de configuration/programmation et donc on quitte le mode d’activité de programme. On incrémente ou décrémente la période de l’année affichée d’une journée en appuyant respectivement sur les touchesTime forward
ouTime backward
. De manière générale, la toucheSet day
permet de modifier le jour courant du thermostat. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le mode d’activité de programme et plus spécialement dans l’étatHold
(cf. boutonHold temp
).View program
: ce type d’événement permet d’entrer dans le mode de configuration/programmation et donc de quitter le mode d’activité de programme. Le système d’affichage de l’heure et du jour courants sert alors à afficher et à modifier une heure associée à une période de programmation donnée (par défaut, l’heure associée à la période de programmation n°1). Le système d’affichage de la température cible courante sert lui à afficher et à modifier une température cible associée à une période de programmation donnée (par défaut, la température cible associée à la période de programmation n°1). La période de programmation est aussi affichée. On passe d’une période de programmation à une autre, d’une heure associée à une autre, d’une température cible associée à une autre, en appuyant de nouveau sur cette toucheView program
. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le mode d’activité de programme et plus spécialement dans l’étatHold
(cf. boutonHold temp
).Run program
: ce type d’événement permet d’entrer dans le mode d’activité de programme et donc de quitter le mode de configuration/programmation. On entre dans l’étatRun
où il y a prise en compte du programme par opposition à l’étatHold
où il n’y a pas prise en compte du programme.Hold temp
: cette touche permet d’atteindre l’étatHold
. Au lieu de comparer seconde par seconde l’heure courante à l’instant auquel la température cible doit changer, le thermostat maintient la température cible courante jusqu’à ce que la toucheRun program
soit appuyée. L’étatHold
est le sous-état par défaut du mode général d’activité de programme qui est rappelons-le,Operate
.F-C
: cette touche permet d’alterner l’affichage de la température ambiante, la température cible courante, et éventuellement une température associée à une période de programmation donnée, entre °Fahrenheit (affichage par défaut) et °Celsius.
context Programmable thermostat::ambient temperature changed(temperature : Temperature)
post: ambient temperature = temperature
context Programmable thermostat::run program()
post: alternately = 0
context Programmable thermostat::set clock()
post: no input = 0
![]()
![]()
![]()
Graphical User Interface (GUI) in JavaFX and Java ME