Browse Source

un peu plus de doc...

tth 1 year ago
parent
commit
8a5d00f289
4 changed files with 202 additions and 147 deletions
  1. 44
    2
      doc/automate.tex
  2. 18
    145
      doc/dd2-monitoring.tex
  3. 29
    0
      doc/detournements.tex
  4. 111
    0
      doc/storages.tex

+ 44
- 2
doc/automate.tex View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 L'automate qui contrôle les fonctions vitales des petites
4 4
 \textit{Pyrocystis Fusiformis} est basé sur un Arduino Mega\index{mega},
5
-qui a été choisi pour sa profusion d'entrées sorties\index{io}.
5
+qui a été choisi pour sa profusion d'entrées sorties\index{i/o}.
6 6
 Il va remplir plusieurs fonctions mises au point les unes et les autres.
7 7
 
8 8
 Dans un premier temps, le logiciel sera développé avec l'\textsl{IDE}
@@ -10,25 +10,67 @@ standard de l'Arduiono, malgré ses limitations.
10 10
 Il existe des solutions alternatives à base de \texttt{makefile}, que
11 11
 nous découvrirons un jour, si le besoin s'en fait sentir.
12 12
 
13
+Ce lo
14
+
13 15
 % -------------------------------------------------------------------
14 16
 \subsection{Dialogue}
15 17
 
18
+Le but étant d'avoir un système
19
+\textsl{standalone}\footnote{lowcost and easytouse ?}, le dialogue
20
+avec les humains extérieur sera plus que limité en fonctionnement
21
+courant.
22
+
23
+Pour la configuration, nous allons créer une \textsc{CLI}\index{cli} 
24
+rudimentaire qui sera accessible par le port USB et un émulateur
25
+de terminal\footnote{Minicom, Putty...}.
26
+
16 27
 % -------------------------------------------------------------------
17 28
 \subsection{Température} \index{temperature}
18 29
 
30
+Les capteurs utilisés sont des LM35\index{LM35}, à sortie analogique
31
+entre 0 et 5v pour une gamme de température de 0 à ??? degrés Celsius.
32
+
33
+Le convertisseur \small{A/D} a une résolution de 10 bits, qu'il
34
+est possible d'augmenter en changeant son Vref, soit pour une
35
+référence externe, soit pour une référence interne à 1.1 V.
36
+
19 37
 % -------------------------------------------------------------------
20 38
 \subsection{Voyants}
21 39
 
22 40
 Il faut \textbf{toujours} intégrer dans un projet une gestion avancée
23
-des \textsc{LED}\index{LED} qui clignotent avec entrain.
41
+des \textsc{led}\index{LED} qui clignotent avec entrain pour raconter
42
+la vie interne de la machinerie. 
43
+
44
+Une paire Rouge/Bleue indiquera les sorties de l'intervalle 
45
+de température pré-programmé.
46
+Une \textsc{led} orange clignotante indiquera une erreur
47
+en s'exprimant en code Morse.
48
+
49
+Quand à la \textsc{led} verte, elle sera là pour ne rien dire de précis,
50
+mais avec brio.
24 51
 
25 52
 % -------------------------------------------------------------------
26 53
 \subsection{Chauffage} \index{chauffage}
27 54
 
55
+En première approche, un choix simple a été fait~: nous allons
56
+utiliser un chauffage intégré d'aquarium en de basant d'abord
57
+sur son thermostat intégré. 
58
+
59
+Si ce n'est pas satisfaisant, pour diverses raisons (matériel
60
+chinois à 3 balles, par exemple),
61
+nous serons obligés de commander nous-même ce chauffage. 
62
+
63
+C'est à ce moment que les choses deviennent sérieuses, il va
64
+falloir commuter du 230v, tension assez mortelle dans les faits.
65
+Une solution à base d'opto-coupleur semble s'imposer.
28 66
 
29 67
 % -------------------------------------------------------------------
30 68
 \subsection{Refroidissement}.
31 69
 
70
+Puisque l'enceinte choisi est un frigorifique de
71
+récupération\footnote{Merci DomDom :)}, nous pourrons utiliser son
72
+groupe froid. Comme pour le chauffage, nous sommes sur du 230v.
73
+
32 74
 % -------------------------------------------------------------------
33 75
 
34 76
 

+ 18
- 145
doc/dd2-monitoring.tex View File

@@ -1,4 +1,4 @@
1
-\documentclass[a4paper,11pt]{article}
1
+\documentclass[a4paper,10pt]{article}
2 2
 
3 3
 % \listfiles              % pour le debug
4 4
 
@@ -25,6 +25,12 @@
25 25
 
26 26
 \pagebreak
27 27
 
28
+% \setlength{\parskip}{0.01cm plus 0.01cm}
29
+\tableofcontents
30
+% \setlength{\parskip}{0.16cm plus 0.16cm}
31
+
32
+\pagebreak
33
+
28 34
 % -------------------------------------------------------------------
29 35
 
30 36
 \section{Introduction}
@@ -41,15 +47,14 @@ arrivons parfois à le faire.
41 47
 
42 48
 La première étape sera donc la mise au point d'un \textsl{cadriciel}
43 49
 permettant d'essayer diverses options en se basant sur une conception
44
-modulaire de l'ensemble.
50
+modulaire de l'ensemble. Une grosse partie sera écrite en C\index{C},
51
+avec d'éventuels modules en langages de script :
52
+Perl\index{Perl}, Awk\index{Awk}, Bash\index{Bash}\dots
45 53
 
46 54
 Les valeurs à mesurer étant de diverses natures, nous aurons l'occasion
47 55
 de découvrir plein de capteurs différents : température, humidité,
48 56
 \texttt{pH}, transparence, lumière, vibrations\dots
49 57
 
50
-% \setlength{\parskip}{0.01cm plus 0.01cm}
51
-\tableofcontents
52
-% \setlength{\parskip}{0.16cm plus 0.16cm}
53 58
 
54 59
 \vspace{4cm}
55 60
 
@@ -92,7 +97,7 @@ tentent de s'échapper.
92 97
 \subsection{Stockage}
93 98
 
94 99
 Pour entreposer toutes ces valeurs numériques, il existe plusieurs
95
-choix, et nous allons en évaluer quelques uns :
100
+choix, et nous allons en évaluer quelques uns~:
96 101
 
97 102
 \texttt{flatfile}\index{flatfile} (page \pageref{flatfile}),
98 103
 \texttt{rrdb}\index{rrdb} (page \pageref{rrdb}),
@@ -115,9 +120,9 @@ C'est expliqué à la page \pageref{eyecandy}\index{curses}.
115 120
 
116 121
 % -------------------------------------------------------------------
117 122
 % ===================================================================
118
-% nouveau 2019-02-22
123
+%			nouveau 2019-02-22
119 124
 
120
-\input{automate}
125
+			\input{automate}
121 126
 
122 127
 % ===================================================================
123 128
 
@@ -150,6 +155,7 @@ par un port série (page \pageref{serialcode}).
150 155
 Pour continuer dans une démarche disruptive, des outils
151 156
 avancés de visualisation sont proposés dans la rubrique
152 157
 \ref{eyecandy} qui parle de \texttt{vt100}\label{vt100}.
158
+
153 159
 % -------------------------------------------------------------------
154 160
 
155 161
 \subsection{Analyses}
@@ -263,8 +269,8 @@ Après tout, un \textsl{timestamp}\index{timestamp} et quelques valeurs
263 269
 numériques peuvent suffire à beaucoup de \textsl{usecases} de la
264 270
 vie courante.
265 271
 
266
-Voici un exemple, un format\label{foo.dat} d'enregistrement de
267
-température facilement  exploitable avec Awk ou Gnuplot :
272
+Voici le premier exemple, un format\label{foo.dat} d'enregistrement de
273
+température facilement exploitable avec Awk ou Gnuplot :
268 274
 
269 275
 \begin{verbatim}
270 276
 tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
@@ -275,145 +281,12 @@ tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
275 281
 
276 282
 
277 283
 % -------------------------------------------------------------------
278
-\section{RRDB} \label{rrdb}
279
-
280
-Première tentative d'utilisation le lendemain du premier apéro 2019
281
-du Tetalab\footnote{Jean-Yves, je vous demande de vous calmer !}.
282
-
283
-Je suis parti sur quelques scripts shell, pour créer, mettre à jour et
284
-analyser les enregistrements d'une valeur de type \textsc{gauge}.
285
-
286
-\subsection{Create}
287
-
288
-\begin{lstlisting}
289
-#!/bin/bash
290
-
291
-source ./commun.sh
292
-starttime=$(date +'%s')
293
-echo creating $RRDB at ${starttime}s since epoch
294
-rrdtool	create $RRDB			\
295
-	--start $starttime		\
296
-	--step 60			\
297
-	DS:value:GAUGE:150:0:10		\
298
-	RRA:AVERAGE:0.5:1:60
299
-\end{lstlisting}
300
-
301
-\subsection{Update} \index{rrdtool}
302
-
303
-Une fois la base créée, il faut bien la remplir.
304
-Dans cet exemple, nous allons utiliser le \textit{load}
305
-de notre Linux.
306
-
307
-\begin{lstlisting}
308
-#!/bin/bash
309
-
310
-source ./commun.sh
311
-ctime=$(date +'%s')
312
-value=$(cut -d ' ' -f 1 /proc/loadavg)
313
-
314
-# inject value in the rrdb file 
315
-rrdtool	update $RRDB ${ctime}:${value}
316
-\end{lstlisting}
317
-
318
-\subsection{Analyze}
319
-
320
-Nous allons essayer d'exploiter les données dûrement acquises
321
-pendant les heures qui précèdent\dots
322
-
323
-\begin{lstlisting}
324
-#!/bin/bash
325
-
326
-source ./commun.sh
327
-tmpf="somevalues.dat"
328
-rrdtool fetch $RRDB LAST			|
329
-tr -d ':'					|
330
-awk	'
331
-	(!/nan/ && NF==2) { print $1, $2 }
332
-	' 					\
333
-			> ${tmpf}
334
-
335
-# as an example, we are gnuploting our datas
336
-gnuplot << __EOC__
337
-set term png size 800,600
338
-set output "graphe.png"
339
-set grid
340
-plot "${tmpf}" with lines
341
-__EOC__
342
-
343
-rm ${tmpf}
344
-\end{lstlisting}
345
-
346
-Il semble bien que l'utilisation de \texttt{fetch} ne soit pas
347
-vraiment prévue pour ça, donc j'en arrive à la conclusion que
348
-quelque chose m'échappe.
349
-
350
-On va laisser ça en suspens pour le moment.
351
-
352
-% -------------------------------------------------------------------
353
-
354
-\section{InfluxDB} \label{influxdb}
355
-
356
-La communication avec la bédédé se fait \textit{over HTTP}, un peu
357
-comme tous ces trucs de d'jeunz d'aujourd'hui\dots
358
-
359
-Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
360
-plus ou moins l'exemple de rrdb..
361
-
362
-Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne 
363
-correspond plus trop à l'actualité. Et la \textit{current} semble
364
-trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
365
-
366
-% -------------------------------------------------------------------
367
-
368
-\section{Gnocchi} \label{gnocchi} \index{Gnocchi}
369
-
370
-\texttt{pip install gnocchi[postgresql,ceph,keystone]}, finalement,
371
-çe ne me donne pas trop envie. C'est du genre \textit{usinagaz}.
372
-
373
-% -------------------------------------------------------------------
374
-\section{Sqlite} \index{sqlite} \label{sqlite}
375
-
376
-\textsf{À regarder de près}
377
-
378
-Est-il possible de traiter des \textit{time series} en SQL\index{SQL} ?
379
-Peut-on utiliser Sqlite depuis un programme en Perl\index{Perl} ?
380
-Faut-il commencer à trouver un \textit{usecase} crédible ?
381
-NodeJs\index{nodejs} peut-il lire du Sqlite ?
382
-
284
+		\input{storages}
383 285
 
384 286
 % -------------------------------------------------------------------
385 287
 
386 288
 		\input{serial}
387
-
388
-% -------------------------------------------------------------------
389
-
390
-\section{Détournements} \label{detournements}
391
-
392
-Dans le contexte myryssien\index{Myrys}, il est évident que l'aspect
393
-artistique\index{Art}
394
-doit être dès le départ pris en compte.
395
-Les possibilités ne seront limitées que par votre manque d'imagination.
396
-
397
-Si vous voulez un petit exemple, imaginez des courbes de température
398
-qui pilotent un \texttt{uGen} de Chuck\index{Chuck} ou des algues dont
399
-les pulses lumineux envoie du \texttt{cv/gate} en temps réel.
400
-
401
-\subsection{Variante sonore}
402
-
403
-Un peu de \texttt{awk} pipé dans du \texttt{sox} ?
404
-Voire même l'occasion (ou un bon prétexte) de résoudre ce problème
405
-de saut de phase qui me tracasse depuis des mois ?
406
-
407
-\subsection{Eye candy}\index{eyecandy}\label{eyecandy}
408
-
409
-Pour maximiser l'impact visuel, il sera convenant de sortir du
410
-cadre pseudo-moderne des omniprésents écrans de ces
411
-smartphones\footnote{Quand les téléphones étaient attachés par
412
-un fil, les humains étaient libres.} qui nous lavent le cerveau.
413
-Sortons donc du contexte pixeliste et revenons aux fondamentaux :
414
-le caractère\index{ncurses},
415
-avec toute la simplicité de son concept sémantique.
416
-
289
+		\input{detournements}
417 290
 % -------------------------------------------------------------------
418 291
 
419 292
 \section{Conclusion} \label{conclusion} \index{conclusion}

+ 29
- 0
doc/detournements.tex View File

@@ -0,0 +1,29 @@
1
+% -------------------------------------------------------------------
2
+
3
+\section{Détournements} \label{detournements}
4
+
5
+Dans le contexte myryssien\index{Myrys}, il est évident que l'aspect
6
+artistique\index{Art}
7
+doit être dès le départ pris en compte.
8
+Les possibilités ne seront limitées que par votre manque d'imagination.
9
+
10
+Si vous voulez un petit exemple, imaginez des courbes de température
11
+qui pilotent un \texttt{uGen} de Chuck\index{Chuck} ou des algues dont
12
+les pulses lumineux envoie du \texttt{cv/gate} en temps réel.
13
+
14
+\subsection{Variante sonore}
15
+
16
+Un peu de \texttt{awk} pipé dans du \texttt{sox} ?
17
+Voire même l'occasion (ou un bon prétexte) de résoudre ce problème
18
+de saut de phase qui me tracasse depuis des mois ?
19
+
20
+\subsection{Eye candy}\index{eyecandy}\label{eyecandy}
21
+
22
+Pour maximiser l'impact visuel, il sera convenant de sortir du
23
+cadre pseudo-moderne des omniprésents écrans de ces
24
+smartphones\footnote{Quand les téléphones étaient attachés par
25
+un fil, les humains étaient libres.} qui nous lavent le cerveau.
26
+Sortons donc du contexte pixeliste et revenons aux fondamentaux :
27
+le caractère\index{ncurses} blanc sur fond noir,
28
+avec toute la simplicité de son concept sémantique.
29
+

+ 111
- 0
doc/storages.tex View File

@@ -0,0 +1,111 @@
1
+% ============================================
2
+%
3
+%	Various storages systems
4
+%
5
+% ============================================
6
+
7
+\section{RRDB} \label{rrdb}
8
+
9
+Première tentative d'utilisation le lendemain du premier apéro 2019
10
+du Tetalab\footnote{Jean-Yves, je vous demande de vous calmer !}.
11
+
12
+Je suis parti sur quelques scripts shell, pour créer, mettre à jour et
13
+analyser les enregistrements d'une valeur de type \textsc{gauge}.
14
+
15
+\subsection{Create}
16
+
17
+\begin{lstlisting}
18
+#!/bin/bash
19
+
20
+source ./commun.sh
21
+starttime=$(date +'%s')
22
+echo creating $RRDB at ${starttime}s since epoch
23
+rrdtool	create $RRDB			\
24
+	--start $starttime		\
25
+	--step 60			\
26
+	DS:value:GAUGE:150:0:10		\
27
+	RRA:AVERAGE:0.5:1:60
28
+\end{lstlisting}
29
+
30
+\subsection{Update} \index{rrdtool}
31
+
32
+Une fois la base créée, il faut bien la remplir.
33
+Dans cet exemple, nous allons utiliser le \textit{load}
34
+de notre Linux.
35
+
36
+\begin{lstlisting}
37
+#!/bin/bash
38
+
39
+source ./commun.sh
40
+ctime=$(date +'%s')
41
+value=$(cut -d ' ' -f 1 /proc/loadavg)
42
+
43
+# inject value in the rrdb file 
44
+rrdtool	update $RRDB ${ctime}:${value}
45
+\end{lstlisting}
46
+
47
+\subsection{Analyze}
48
+
49
+Nous allons essayer d'exploiter les données dûrement acquises
50
+pendant les heures qui précèdent\dots
51
+
52
+\begin{lstlisting}
53
+#!/bin/bash
54
+
55
+source ./commun.sh
56
+tmpf="somevalues.dat"
57
+rrdtool fetch $RRDB LAST			|
58
+tr -d ':'					|
59
+awk	'
60
+	(!/nan/ && NF==2) { print $1, $2 }
61
+	' 					\
62
+			> ${tmpf}
63
+
64
+# as an example, we are gnuploting our datas
65
+gnuplot << __EOC__
66
+set term png size 800,600
67
+set output "graphe.png"
68
+set grid
69
+plot "${tmpf}" with lines
70
+__EOC__
71
+
72
+rm ${tmpf}
73
+\end{lstlisting}
74
+
75
+Il semble bien que l'utilisation de \texttt{fetch} ne soit pas
76
+vraiment prévue pour ça, donc j'en arrive à la conclusion que
77
+quelque chose m'échappe.
78
+
79
+On va laisser ça en suspens pour le moment.
80
+
81
+% -------------------------------------------------------------------
82
+
83
+\section{InfluxDB} \label{influxdb}
84
+
85
+La communication avec la bédédé se fait \textit{over HTTP}, un peu
86
+comme tous ces trucs de d'jeunz d'aujourd'hui\dots
87
+
88
+Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
89
+plus ou moins l'exemple de rrdb..
90
+
91
+Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne 
92
+correspond plus trop à l'actualité. Et la \textit{current} semble
93
+trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
94
+
95
+% -------------------------------------------------------------------
96
+
97
+\section{Gnocchi} \label{gnocchi} \index{Gnocchi}
98
+
99
+\texttt{pip install gnocchi[postgresql,ceph,keystone]}, finalement,
100
+çe ne me donne pas trop envie. C'est du genre \textit{usinagaz}.
101
+
102
+% -------------------------------------------------------------------
103
+\section{Sqlite} \index{sqlite} \label{sqlite}
104
+
105
+\textsf{À regarder de près}
106
+
107
+Est-il possible de traiter des \textit{time series} en SQL\index{SQL} ?
108
+Peut-on utiliser Sqlite depuis un programme en Perl\index{Perl} ?
109
+Faut-il commencer à trouver un \textit{usecase} crédible ?
110
+NodeJs\index{nodejs} peut-il lire du Sqlite ?
111
+

Loading…
Cancel
Save