SMACTBOT
Описание
SmactBot è un bot Telegram avanzato progettato per interagire con varie fonti di dati, generare report e fornire monitoraggio e avvisi in tempo reale. Il bot supporta il recupero di dati da Modbus, OPCUA e richieste API, e può generare report giornalieri in formato PDF.
Языки
- Python100%
Documentazione SmactBot
Indice
- Panoramica
- Requisiti
- Configurazione
- Struttura del Progetto
- Descrizione Dettagliata dei File
- Funzionalità Principali
- Comandi del Bot
- Variabili e Configurazioni
- Avvio del Progetto
- Personalizzazione
- Risoluzione dei Problemi
- Contribuire
- Licenza
Panoramica
SmactBot è un bot Telegram avanzato progettato per interagire con varie fonti di dati, generare report e fornire monitoraggio e avvisi in tempo reale. Il bot supporta il recupero di dati da Modbus, OPCUA e richieste API, e può generare report giornalieri in formato PDF. È ideale per ambienti industriali o di monitoraggio che richiedono una supervisione costante e report dettagliati.
Requisiti
Per eseguire SmactBot, assicurati di avere installato Python 3.7 o versioni successive. Inoltre, è necessario installare i seguenti pacchetti Python. Crea un file nella directory principale del progetto con il seguente contenuto:
pyTelegramBotAPI==4.12.0
pandas==2.0.3
influxdb-client==1.26.0
plotly==5.12.0
numpy==1.24.4
Pillow==10.0.0
reportlab==3.6.0
qrcode==7.3.1
Per installare tutte le dipendenze, esegui il seguente comando nella directory del progetto:
Configurazione
La configurazione di SmactBot avviene principalmente attraverso il file . Crea questo file nella directory principale del progetto con il seguente contenuto:
Assicurati di sostituire 'IL_TUO_TOKEN_BOT_TELEGRAM' con il token effettivo del tuo bot Telegram e 'la_tua_password' con una password sicura per l'autenticazione degli utenti.
Struttura del Progetto
Il progetto SmactBot è organizzato nei seguenti file Python:
SmactBot/
│
├── main.py
├── data_handler.py
├── graph_utils.py
├── report_generator.py
├── monitoring.py
├── config.py
├── requirements.txt
└── README.md
Descrizione Dettagliata dei File
main.py
Questo è lo script principale che inizializza ed esegue il bot. Include vari gestori per diversi comandi e funzionalità come autenticazione, recupero dati, generazione di grafici, invio di report e monitoraggio delle variabili.
Funzioni principali:
: Gestisce il comando '/start'.handle_start(message): Gestisce l'autenticazione dell'utente.handle_password(message): Presenta le opzioni per le categorie di dati.handle_category(message): Gestisce le query inline per la visualizzazione dei dati.handle_query(call): Genera e invia il report giornaliero.handle_daily_report(message): Attiva/disattiva il monitoraggio per l'utente.handle_monitor_toggle(message)
data_handler.py
Questo script gestisce il recupero dei dati da InfluxDB. Utilizza la libreria influxdb-client per interrogare i dati in base alla categoria e alla metrica specificate.
Funzioni principali:
: Recupera i dati da InfluxDB in base alla categoria e alla metrica specificate.fetch_data(category, metric, period='-1h')
graph_utils.py
Questo script crea grafici dai dati utilizzando la libreria plotly.
Funzioni principali:
: Crea un grafico utilizzando Plotly e lo restituisce come immagine.create_graph(dataframe, title, metric, current_value)
report_generator.py
Questo script genera report giornalieri in formato PDF utilizzando la libreria reportlab.
Funzioni principali:
: Genera un report giornaliero PDF e restituisce il contenuto del report e il percorso del file.generate_daily_report()
monitoring.py
Questo script contiene una funzione di monitoraggio che controlla continuamente le modifiche in una variabile specifica e invia notifiche agli utenti.
Funzioni principali:
: Monitora continuamente una variabile specifica e invia notifiche in caso di cambiamenti.monitor_variable()
Autenticazione
Il bot richiede agli utenti di autenticarsi con una password prima di accedere alle funzionalità. Questo è gestito nella funzione in .
Recupero Dati
I dati vengono recuperati da InfluxDB utilizzando la funzione in . Questa funzione supporta diverse categorie di dati (Modbus, OPCUA, API) e metriche specifiche.
Generazione di Grafici
I grafici vengono creati utilizzando la funzione in . Questa funzione utilizza Plotly per generare grafici interattivi che vengono poi convertiti in immagini.
Report Giornalieri
I report giornalieri vengono generati utilizzando la funzione in . Questa funzione crea un PDF con un riepilogo delle metriche e lo salva localmente.
Monitoraggio in Tempo Reale
Il monitoraggio in tempo reale è gestito dalla funzione in . Questa funzione controlla continuamente le modifiche in una variabile specifica e invia notifiche agli utenti quando vengono rilevate variazioni.
Comandi del Bot
Il bot supporta i seguenti comandi:
: Avvia il bot e richiede la password./start: Visualizza le metriche disponibili in Modbus.🔧 Modbus: Visualizza le metriche disponibili in OPCUA.📊 OPCUA: Visualizza le metriche disponibili nelle richieste API.🌐 Richiesta API: Genera e invia un report giornaliero.📝 Report Giornaliero: Attiva/disattiva il monitoraggio delle variabili.🔔 Monitora Variabile: Mostra un messaggio di aiuto con tutti i comandi disponibili.❓ Aiuto: Elimina tutti i messaggi nella chat corrente.🗑️ Elimina Chat: Genera un codice QR e un link per invitare altri utenti.🔗 Condividi Chat
Variabili e Configurazioni
Le principali variabili di configurazione sono definite nel file :
: L'URL del server InfluxDB.INFLUXDB_URL: Il token di autenticazione per InfluxDB.INFLUXDB_TOKEN: Il nome dell'organizzazione in InfluxDB.INFLUXDB_ORG: Il nome del bucket in InfluxDB dove sono memorizzati i dati.INFLUXDB_BUCKET: Il token del bot Telegram.TOKEN: La password per l'autenticazione degli utenti.PASSWORD: Il percorso dell'immagine iniziale mostrata all'avvio del bot.INITIAL_IMAGE_PATH: Il percorso dell'immagine di sfondo utilizzata nei report PDF.BACKGROUND_IMAGE_PATH: Il percorso dell'icona utilizzata nei report PDF.ICON_PATH
Altre variabili importanti:
- In
, il dizionarioreport_generator.pydefinisce le metriche disponibili per ogni categoria di dati.fixed_metrics
Avvio del Progetto
Per avviare SmactBot, segui questi passaggi:
- Assicurati di aver installato tutte le dipendenze elencate in
.requirements.txt - Configura correttamente il file
con le tue impostazioni specifiche.config.py - Posizionati nella directory principale del progetto.
- Esegui il seguente comando:
Il bot si avvierà e attenderà le interazioni dell'utente. Puoi interagire con il bot utilizzando i comandi e le opzioni fornite nell'interfaccia Telegram.
Personalizzazione
Puoi personalizzare il comportamento del bot modificando le seguenti parti:
- Aggiungi nuove metriche nel dizionario
infixed_metrics.report_generator.py - Modifica la frequenza di monitoraggio cambiando il valore di
intime.sleep().monitoring.py - Personalizza il layout del report PDF modificando la funzione
ingenerate_daily_report.report_generator.py - Aggiungi nuovi comandi o funzionalità modificando
e aggiungendo nuovi gestori di messaggi.main.py
Risoluzione dei Problemi
Se incontri problemi durante l'esecuzione del bot:
- Verifica che tutte le dipendenze siano installate correttamente eseguendo
e confrontando conpip list.requirements.txt - Controlla che il token del bot Telegram in
sia valido provando a crearne uno nuovo con BotFather su Telegram.config.py - Assicurati che l'URL e le credenziali di InfluxDB in
siano corretti tentando una connessione manuale al database.config.py - Controlla i log per eventuali errori specifici. Puoi aggiungere più stampe di debug nei vari file per tracciare il flusso di esecuzione.
- Se il monitoraggio non funziona, verifica che la funzione
inmonitor_variablesia chiamata correttamente e che la connessione a InfluxDB sia stabile.monitoring.py - Per problemi con la generazione di grafici, assicurati che Plotly sia installato correttamente e che i dati recuperati da InfluxDB siano nel formato atteso.
Contribuire
Se desideri contribuire al progetto SmactBot, segui questi passaggi:
- Forkare il repository su GitHub.
- Clonare il fork sul tuo computer locale.
- Creare un nuovo branch per le tue modifiche:
git checkout -b feature/nuova-funzionalita
- Apportare le modifiche e committarle:
git commit -am 'Aggiunta nuova funzionalità'
- Pushare il branch sul tuo fork:
git push origin feature/nuova-funzionalita
- Creare una Pull Request dal tuo fork al repository originale su GitHub.
Assicurati di seguire le best practices di codifica e di documentare adeguatamente qualsiasi nuova funzionalità o modifica.
Licenza
Questo progetto è distribuito sotto la licenza MIT. Vedi il file nella directory principale del progetto per ulteriori dettagli.
La licenza MIT permette l'uso, la copia, la modifica, la fusione, la pubblicazione, la distribuzione, la sublicenza e/o la vendita di copie del software, a condizione che l'avviso di copyright e questa nota di permesso siano inclusi in tutte le copie o parti sostanziali del software.