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
signature.asc
Description: PGP signature
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python