[Python] suggerimenti applicazione python
Daniele Tricoli
eriol a mornie.org
Ven 3 Apr 2020 04:39:10 CEST
Ciao Andrea,
On Thu, Apr 02, 2020 at 06:12:58PM +0200, Andrea D'alessandro wrote:
> Bella la tua soluzione ma i sensori comunicano via mail, e non c'e' verso
> di cambiare cio'....
Ok!
> Per quanto riguardo i database a grafo devo studiare perche' non sapevo
> neanche che esistevano fino a quando non e' arrivata la tua mail.
Prendi quello che segue come suggerimento, in realtà come avrai capito ci sono
molteplici soluzioni altrettanto valide, che ti permettono di spaziare e
studiare tutto quello che più ti aggrada. Inoltre ciascuno ha il proprio stack
tecnologico ben rodato e di cui conosce i minimi dettagli.
Pure io ti suggerisco un database specifico per i dati: quelle con cui hai a
che fare sono serie temporali, per cui la base di dati che userei io è un
TSDB (time series database).
L'ultima volta che in questa lista ho indicato semplicemente una lista di tool,
mi è stato giustamente fatto notare (con un volo un po' pindarico), che non è
di grossa utilità una lista di cose che non conosce per chi deve già affrontare
un problema, ed è effettivamente vero! Per cui quello che segue e un
suggerimento che va più nel dettaglio. :)
Quindi ti direi di usare InfluxDB[¹] poiché pensato anche per l'IoT, e puoi
tranquillamente farne il deploy su un raspberry pi.
La parte web, come ti dicevo, non la scriverei proprio perché mi limiterei a
usare Grafana[²].
Trovi qui un esempio di dashboard per farti un'idea del risultato che puoi
ottenere qui: https://play.grafana.org/
Quello che ti rimarrebbe da scrivere è la parte dell'inserimento dei dati in
InfluxDB.
A seconda che tu voglia o meno interfacciarti col database, potresti
addirittura demandare l'inserimento in InfluxDB ad un terzo tool:
Telegraf[³]. Quest'ultimo è semplicemente un tool per collezionare metriche da
diverse fonti, processarle e riscriverle nel formato richiesto dalla
destinazione (oltre InfluxDB supporta anche altri database).
Nel tuo caso ti permetterebbe di evitare del tutto di dover vedere come
scrivere i dati su InfluxDB, ti basterebbe estrarre dalle email le due serie
temporali e scrivere un singolo file di log (con 2 topic) o due file di log da
dare in pasto a telegraf. Quest'ultimo li scriverebbe in InfluxDB e ti
basterebbe poi fruirli con Grafana.
Quindi, ricapitolando, avresti l'architettura che segue:
+------+ +----------+ +----------+ +---------+
| | | | | | | |
| mail +-->+ Telegraf +-->+ InfluxDB +-->+ Grafana |
| | | | | | | |
+------+ +----------+ +----------+ +---------+
Dove il blocco "mail" rappresenta il tuo tool/demone per prendere i dati e
scrivere il/i log da dare in pasto a telegraf.
Questo dovrebbe prendere le email coi tuoi dati, per esempio, nel caso in cui
tu stia usando IMAP dovresti usare il modulo imaplib[⁴] ed estrare poi gli
allegati col modulo email[⁵].
Nel caso in cui tu volessi scrivere direttamente su InfluxDB per eliminare
telegraf, puoi usare: https://github.com/influxdata/influxdb-python
Il tutto gira tranquillamente in un raspberry pi. Il vantaggio di questa
soluzione è che hai meno codice da mantenere, ma se il tuo è un progetto di
studio su come realizzare una soluzione del genere, certo 3 blocchi su 4 te
li ritrovi pronti e si tratterebbe di studiare solo come si usano.
Vedi un po' tu, tutto dipende da cosa vuoi studiare, quanto tempo hai a
disposizione, ecc...
Per completezza, scritto in Python, ci sarebbe Graphite[⁶] che ti realizza nel
diagramma che ho disegnato sopra i blocchi da telegraf a grafana, ma non l'ho
mai usato.
Chiudo con un articolo da cui potresti trarre spunto, nel caso decidessi di
seguire questa strada:
https://www.influxdata.com/blog/how-to-use-grafana-with-influxdb-to-monitor-time-series-data/
Ciao,
[¹] https://en.wikipedia.org/wiki/InfluxDB
https://www.influxdata.com/products/influxdb-overview/
[²] https://en.wikipedia.org/wiki/Grafana
https://grafana.com/
[³] https://www.influxdata.com/time-series-platform/telegraf/
[⁴] https://docs.python.org/3/library/imaplib.html
[⁵] https://docs.python.org/3/library/email.html
[⁶] https://en.wikipedia.org/wiki/Graphite_(software)
P.S. Però evita MongoDB, davvero! :)
--
Daniele Tricoli 'eriol'
https://mornie.org
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: signature.asc
Tipo: application/pgp-signature
Dimensione: 833 bytes
Descrizione: non disponibile
URL: <http://lists.python.it/pipermail/python/attachments/20200403/df7ab4ca/attachment-0001.sig>
Maggiori informazioni sulla lista
Python