(Réalisation d'un Thermostat de chauffage Central)
Ca faisait longtemps que je n'avais pas touché à linux,la redhat 5.2 m'avait un peu "refroidie", elle manquait grandement de convivialité (et moi de bases pour me pencher sur les subtilités des fichiersde configurations et sans Internet c'est pas très facile). Dernièrement, je m'y suis remis à l'aide d'un bouquin et le CD fourni, la mandrake 7.2 est un peu plus abordable. Mon premier souci fut de me lancer dansla programmation C/C++ (que je maitrise pas mal dèja). Avec Internet, le plus long est de trouver l'information pertinente et on progresse vite. Je travaille en Mandrake 8.0 à ce jour.
Pour réaliser une application domotique, linux est idéal
car il est multi-tâches, multi-utilisateurs et dispose d'outils réseaux
assez intérressant.
Généralités de programmation C/C++ sous linux
J'ai donc réalisé de nombreuses recherches sur internet, collecté de nombreuses informations, analysé de nombreuxlisting et j'ai réalisé les 3 "petits" porgrammes suvant:
|
|
|
|
| Il faut pour réaliser une connexion sur un réseau
TCP/IP,réaliser une structure client/serveur.
- Le Serveur possède une adresse IP, un numéro de
portet un nombre de connexion simultanés possibles. "Détarez" dans un repertoire. |
L'ouverture du port série est réalisé exclusivement
en 1200,n,8,1 dans ce module, a vous de reconfigurer selon vos besoin.
La procédure de lecture sur le port serie peut se faire de
2manières : "Détarez" dans un repertoire. |
Pour qu'un programme s'execute en tache de fond sans qu'aucune
sessionne soit active sur le serveur, on réalise un Daemon, son execution
et transparente pour un utilisateur connecté sur une console.
EchoTerm est un exemple le plus simplifié possible de daemon
ou le role (process) est de faire un écho sur un port série.
"Détarez" dans un repertoire. J'utilise ce daemon comme point de départ à l'ecriture de tout mes daemons. |
|
|
|
|
| "serveur" est le serveur TCP/IP "client" est un client simple en lecture bloquante. "client2" est un client en lecture non bloquante. "client3" est un client en lecture non bloquante et détectionde coupure du serveur (SIG_PIPE) |
"ser" est un programme de lecture de la porte série en mode non bloquant. |
Thermostat Chauffage Central (Daemon)
En réalisant un "savant mélange" des 3 petites applications précédentes :
J'ai débuté la réalisation d'une application permettant de réguler un chauffage central, en utilisant la carte electronique "GestTemp" (fonctionnant avec un ATMEL AT90S2313 bien-sûr) : Telecharger le zip (Attention il n'y a pas de schéma encore déssiné : lire attentivement les premiers commentaires de TempRS.asm contenu dans ce zip, me contacter si besoin)
Cette partie de projet est en cours de construction, faisons un état des lieux :
ServTemp : Daemon permettant de communiquer avec la carte electronique via le port serié d'un coté et de procurer une interfaceTCP/IP sur le port 15000 de la machine de l'autre. Ce daemon est complet.
thermostat : Daemon permettant d'utiliser la carte electronique en thermostat de chauffage central. Il ne manque plus que l'écriture du contenudu fichier process.cc qui permettra d'un coté de se connecter àServTemp par le port 15000 et de l'autre coté de réaliser l'interface de configuration du thermostat via le port 15001.
C_Dialogue : Client "tchat" (une commande passé attend une réponse du serveur), permet de tester la communication avec ServTemp sur le port15000 et avec thermostat sur le port 15001.
Pour réaliser une interface utilisateurmoderne
et conviviale, l'utilisation d'un client http semble le plus pertinent.Il
existe plusieurs solutions en matière de serveur http :
- Utiliser le serveur Apache fourni par linux,en permettant
l'execution de fichiers cgi (ecrit en PERL ou en C/C++) onpeut réaliser
une interface de dialogue trés simple et conviviale.
- Utiliser un autre serveur http indépendant
d'apache. C'est cette solution que j'ai adopté car je l'ai déja
mise en oeuvre dans un autre projet pour mon travail (
voir facilinux).
Le Téléchargement de cette partiesera disponible dès que l'interface sera réalisée