|
@@ -14,7 +14,7 @@
|
14
|
14
|
\usepackage[verbose]{layout}
|
15
|
15
|
|
16
|
16
|
\makeindex
|
17
|
|
-\setlength{\parskip}{0.21cm plus 0.21cm}
|
|
17
|
+% \setlength{\parskip}{0.16cm plus 0.16cm}
|
18
|
18
|
|
19
|
19
|
% -------------------------------------------------------------------
|
20
|
20
|
\title{DD2 Monitoring}
|
|
@@ -47,11 +47,11 @@ Les valeurs à mesurer étant de diverses natures, nous aurons l'occasion
|
47
|
47
|
de découvrir plein de capteurs différents : température, humidité,
|
48
|
48
|
\texttt{pH}, transparence, lumière, vibrations\dots
|
49
|
49
|
|
50
|
|
-\setlength{\parskip}{0.05cm plus 0.05cm}
|
|
50
|
+% \setlength{\parskip}{0.01cm plus 0.01cm}
|
51
|
51
|
\tableofcontents
|
52
|
|
-\setlength{\parskip}{0.16cm plus 0.16cm}
|
|
52
|
+% \setlength{\parskip}{0.16cm plus 0.16cm}
|
53
|
53
|
|
54
|
|
-\vspace{5cm}
|
|
54
|
+\vspace{4cm}
|
55
|
55
|
|
56
|
56
|
Bonne lecture.
|
57
|
57
|
|
|
@@ -61,8 +61,6 @@ Bonne lecture.
|
61
|
61
|
\pagebreak
|
62
|
62
|
\section{Présentation générale}
|
63
|
63
|
|
64
|
|
-
|
65
|
|
-
|
66
|
64
|
\subsection{Capteurs} \index{capteurs}
|
67
|
65
|
|
68
|
66
|
Actuellement nous disposons d'un capteur température et
|
|
@@ -75,6 +73,7 @@ l'influence humaine n'étant pas à négliger en cas d'afflux du public..
|
75
|
73
|
Par la suite, nous pourrons récupérer
|
76
|
74
|
(par liaison série, cf page \pageref{serial})
|
77
|
75
|
des données diverses en provenance de l'automate de contrôle de l'enceinte.
|
|
76
|
+Cet automate\index{automate} est décrit page \pageref{automate}.
|
78
|
77
|
|
79
|
78
|
Le premier capteur de température sélectionné est le \textsc{LM35}\index{LM35}
|
80
|
79
|
qui fournit en sortie une tension linéairement proportionnle à
|
|
@@ -116,6 +115,12 @@ C'est expliqué à la page \pageref{eyecandy}\index{curses}.
|
116
|
115
|
|
117
|
116
|
% -------------------------------------------------------------------
|
118
|
117
|
% ===================================================================
|
|
118
|
+% nouveau 2019-02-22
|
|
119
|
+
|
|
120
|
+\input{automate}
|
|
121
|
+
|
|
122
|
+% ===================================================================
|
|
123
|
+
|
119
|
124
|
\section{Outils}
|
120
|
125
|
|
121
|
126
|
\subsection{Simulations}
|
|
@@ -191,7 +196,8 @@ si on lui demande gentiment.
|
191
|
196
|
|
192
|
197
|
\subsection{Affichage}\index{affichage}
|
193
|
198
|
|
194
|
|
-Un exemple d'affichage avec Gnuplot\index{gnuplot} d'un fichier
|
|
199
|
+Pour commencer presque simple, un exemple d'affichage avec
|
|
200
|
+Gnuplot\index{gnuplot} d'un fichier plat
|
195
|
201
|
de température (décrit page \pageref{foo.dat}) :
|
196
|
202
|
|
197
|
203
|
\begin{verbatim}
|
|
@@ -215,6 +221,9 @@ __EOC__
|
215
|
221
|
|
216
|
222
|
\end{verbatim}
|
217
|
223
|
|
|
224
|
+Prochainement, dès que le premier prototype matériel fournira des
|
|
225
|
+données, une tentative de visualisation animée sera faite avec
|
|
226
|
+POVray\index{POV}.
|
218
|
227
|
|
219
|
228
|
|
220
|
229
|
% ===================================================================
|
|
@@ -243,6 +252,7 @@ eyecandy_banner s hacked by tTh
|
243
|
252
|
|
244
|
253
|
Certains de ces paramètres pourront être surchargé par des options
|
245
|
254
|
de la ligne de commande\index{cli} ou des variables d'environnement.
|
|
255
|
+
|
246
|
256
|
% ===================================================================
|
247
|
257
|
|
248
|
258
|
\section{Flatfile} \label{flatfile}
|
|
@@ -254,7 +264,7 @@ numériques peuvent suffire à beaucoup de \textsl{usecases} de la
|
254
|
264
|
vie courante.
|
255
|
265
|
|
256
|
266
|
Voici un exemple, un format\label{foo.dat} d'enregistrement de
|
257
|
|
-température facilement exploitable avec Gnuplot :
|
|
267
|
+température facilement exploitable avec Awk ou Gnuplot :
|
258
|
268
|
|
259
|
269
|
\begin{verbatim}
|
260
|
270
|
tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
|
|
@@ -263,9 +273,6 @@ tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
|
263
|
273
|
1550673836 20.215054 20.107527 20.215054 20.215054
|
264
|
274
|
\end{verbatim}
|
265
|
275
|
|
266
|
|
-Prochainement, dès que le premier prototype matériel fournira des
|
267
|
|
-données, une tentative de visualisation animée sera faite avec
|
268
|
|
-POVray\index{POV}.
|
269
|
276
|
|
270
|
277
|
% -------------------------------------------------------------------
|
271
|
278
|
\section{RRDB} \label{rrdb}
|
|
@@ -353,7 +360,7 @@ Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
|
353
|
360
|
plus ou moins l'exemple de rrdb..
|
354
|
361
|
|
355
|
362
|
Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne
|
356
|
|
-correspond plus trop à l'actualité. Et la \textit{current} est
|
|
363
|
+correspond plus trop à l'actualité. Et la \textit{current} semble
|
357
|
364
|
trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
|
358
|
365
|
|
359
|
366
|
% -------------------------------------------------------------------
|
|
@@ -376,52 +383,7 @@ NodeJs\index{nodejs} peut-il lire du Sqlite ?
|
376
|
383
|
|
377
|
384
|
% -------------------------------------------------------------------
|
378
|
385
|
|
379
|
|
-\section{Serial coms} \index{serial} \label{serial}
|
380
|
|
-
|
381
|
|
-Il va y avoir deux liaisons série entre l'automate et le monitoring.
|
382
|
|
-La première, que nous allons juste entrevoir, passera par le port
|
383
|
|
-USB de la carte Arduino. La seconde passera par un port série
|
384
|
|
-auxiliaire\footnote{Il y en a 4 sur le mega 2560} de celle-ci.
|
385
|
|
-
|
386
|
|
-\subsection{Un gros souci}
|
387
|
|
-
|
388
|
|
-\begin{lstlisting}
|
389
|
|
-tcgetattr(uart0, &options);
|
390
|
|
-options.c_cflag = baudbits | CS8 | CLOCAL | CREAD;
|
391
|
|
-options.c_iflag = IGNPAR;
|
392
|
|
-options.c_oflag = 0;
|
393
|
|
-options.c_lflag = 0;
|
394
|
|
-tcflush(uart0, TCIFLUSH);
|
395
|
|
-tcsetattr(uart0, TCSANOW, &options);
|
396
|
|
-\end{lstlisting}
|
397
|
|
-
|
398
|
|
-Et en fait, le \texttt{read} sur le \textsl{fd} du serial device
|
399
|
|
-n'est pas bloquant, \texttt{perror} annonce \emph{success}, mais
|
400
|
|
-rien ne marche. L'année 2019 va commencer sur du vaudou programming%
|
401
|
|
-\footnote {aka shotgun debugging.}.
|
402
|
|
-
|
403
|
|
-\textit{29 décembre 2018} : le petit grain de magie\index{magie}
|
404
|
|
-est très simple à mettre en oeuvre, mais
|
405
|
|
-très difficle à spotter dans le gazillion d'options. Il semblerait
|
406
|
|
-que mettre \texttt{options.c\_cc[VMIN]} à 1 permet d'avancer vers
|
407
|
|
-l'étape suivante.
|
408
|
|
-
|
409
|
|
-Laquelle étape est une tentative d'utilisation de \texttt{select(2)},
|
410
|
|
-dans l'objectif de pouvoir gérer nous-même le \textit{timeout},
|
411
|
|
-laquelle tentative n'est pas du tout concluante.
|
412
|
|
-
|
413
|
|
-\subsection{Protocole} \index{protocole} \label{serialprotocol}
|
414
|
|
-
|
415
|
|
-L'automate va avoir plusieurs types de données à envoyer.
|
416
|
|
-Nous allons donc transférer ces valeurs sous forme de ligne
|
417
|
|
-de texte commençant par un caractère clef (par exemple T pour
|
418
|
|
-les températures) et se terminant par un \textit{newline}.
|
419
|
|
-
|
420
|
|
-
|
421
|
|
-\subsection{Un peu de code} \label{serialcode}
|
422
|
|
-
|
423
|
|
-TODO\index{TODO}
|
424
|
|
-
|
|
386
|
+ \input{serial}
|
425
|
387
|
|
426
|
388
|
% -------------------------------------------------------------------
|
427
|
389
|
|