Système de domotique case study



Resources
Headlines
Requirements

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 :

Le thermostat inclut une interface utilisateur (pavé de dix boutons) ainsi qu'un témoin d’activité, un commutateur de saison et un commutateur de ventilation :

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 « activité de programme » (ou mode 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 (bouton Hold temp de l’interface utilisateur). Le mode alternatif du mode Operate est le mode « configuration/programmation » (ou mode Setup). 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 le mode Operate et son sous-état Target 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 :

Pre-analysis

UML Class DiagramComputational-Independent Model -CIM- « métier »

Specification

UML Class DiagramPlatform-Independent Model -PIM- « besoins »

UML State Machine DiagramPlatform-Independent Model -PIM- « besoins »

OCL

UML State Machine DiagramPlatform-Independent Model -PIM- « besoins »

UML Communication DiagramPlatform-Independent Model -PIM- « besoins »

Implementation
   

Graphical User Interface -GUI- ⤳ JavaFX (basic version) and Java ME

Models (Enterprise Architect)

UML Class Diagram (incomplete)

UML State Machine Diagram (incomplete)

UML Activity Diagram (ill-formed: 1 or 3 business processes?)

UML Communication Diagram (ill-formed: signals instead of calls)

UML Component Diagram (incomplete)

Project management

Project management is divided into themes: Maintenance (Defect relative to element, Issue relative to element, Task relative to element, etc.), Project (Decision relative to element, Effort relative to element, etc.), Resources (project stakeholders, project roles…), Testing (model validation especially)

Resource

Exercise

MaintenanceIssue

Maintenance Diagram is the expression of maintenance on a set of elements (≠ relative to element), a diagram, a set of diagrams, etc.

Perspective

Sample

MaintenanceTask

MaintenanceResource Allocation & Task Completion

Exercise

Project managementGuidance

Guidance is project management-related process.

Project managementConstruction Diagram
Project managementGantt View
Project managementProject Tasks

Project Tasks are element-independent parts of project.

Search

Exercise ⤳ Search

Create new project role and check with query ⤳ t_projectroles

SELECT * FROM t_projectroles

Changes? ⤳ t_object

SELECT * FROM t_object WHERE Object_Type LIKE 'Change'

Tasks? ⤳ t_object, t_objectproblems

SELECT * FROM t_object WHERE Object_Type LIKE 'Task'
SELECT * FROM t_objectproblems WHERE ProblemType LIKE 'ToDo'

Defects & Issues? ⤳ t_objectproblems

SELECT * FROM t_objectproblems WHERE ProblemType IN ('Defect', 'Issue')

Maintenance on Communication package? ⤳ t_packages

Vous trichez ! Cherchez un peu…
UML profile

Design of My_profile

Export

Import

Usage

Exercise ⤳ Search

Tags? ⤳ t_objectproperties

SELECT * FROM t_objectproperties

Duration stereotype applied? ⤳ t_object

SELECT * FROM t_object WHERE Stereotype = 'Duration'