Vai al contenuto

Nuovo blocco funzione per invio eMail

Home Forum Programmazione IEC 61131 (LogicLab) Nuovo blocco funzione per invio eMail

Stai visualizzando 15 post - dal 1 a 15 (di 26 totali)
  • Autore
    Post
  • #36118
    Sergio Bertana
    Amministratore del forum

    Rilasciato il nuovo blocco funzione EMailSend (Estratto manuale) che permette l’invio di eMail dai nostri sistemi programmabili. Ho realizzato un semplice programma dimostrativo che può essere utilizzato per verificarne il funzionamento. Naturalmente occorre definire l’URL del server SMTP da utilizzare per l’inoltro e le credenziali di accesso.

    Il FB non gestisce la crittografia TLS quindi non è possibile utilizzare GMail come server SMTP di inoltro. Download programma EMailSendExample.

    #39880
    Paolo
    Partecipante

    Scusa ma non trovo la libreria eLLabNetworkLib_A400.

    #39881
    Sergio Bertana
    Amministratore del forum

    La libreria è attualmente in lavorazione quindi non la abbiamo ancora rilasciata, ma se tu scarichi il progetto presente nel post troverai al suo interno anche il FB EMailSend che ti serve.

    Avendo il progetto, con esporta oggetti puoi esportare il FB ed utilizzarlo nei tuoi progetti.

    #50108
    Rubox
    Partecipante

    Ci sono dei limiti particolare sulla lunghezza ammissibile delle stringhe passate al FB EmailSend? Se Data è nei 256 caratteri, la email viene spedita senza attivazione di Fault, e il corpo email è visibile.

    Se Data è oltre i 256 caratteri la email viene sempre inviata senza attivazione di Fault, ma il corpo della email non è presente.

    Ho provato a spiare i comandi del server SMTP e non vedo niente di strano (per quanto li possa interpretare) e non ricevo errori con SysGetLastError.

    #50125
    Sergio Bertana
    Amministratore del forum

    Si effettivamente c’è un limite sulla dimensione del testo della mail, attualmente è bloccato a 256 caratteri. Stiamo ripensando alla gestione della mail anche nell’ottica della crittografia, appena riusciamo a risolvere i problemi usciremo con qualcosa di nuovo e più performante.

    #50709
    Rubox
    Partecipante

    E immagino che non ci sia la possibilità di spedire una email dal PLC con un allegato…?

    Il mio cliente mi sta chiedendo di fare in modo che il PLC gli spedisca il file presente sulla scheda SD del PLC come allegato di una email: c’è un modo per farlo?

    #50741
    Sergio Bertana
    Amministratore del forum

    Allegati non sono possibili, ma se il file è un file di testo e/o CSV puoi leggerlo e inserirlo nel corpo della mail (Fatto salvo sempre il limite della dimensione).

    #50742
    Rubox
    Partecipante

    Al momento sto facendo così per inviare un’istantanea dei valori ad orari prestabiliti, ma il limite di 256 caratteri è “limitante”: sono 6 valori campionati ogni 5 minuti durante l’arco della giornata.

    Stavo guardando se riesco a metterci un SBC che possa gestire in automatico il prelevamento del file via FTP dalla SD del PLC e quindi inviarla via email al cliente.

    #50806
    Sergio Bertana
    Amministratore del forum

    Per aggiungere un sistema PC puoi valutare la nostra soluzione basata su Raspberry dove certamente faremo un invio eMail più performante.

    Altra soluzione che molti clienti hanno adottato è di inviare via REST i dati di log ad un server Locale/Remoto che li storicizza e poi genera lui la mail e la invia. Se conosci il linguaggio PHP ti allego il progetto CloudLogger che fà esattamente quello che ti serve.

    Anche in questo caso il server PHP potrebbe girare sullo SlimLine Raspberry in contemporanea al programma LogicLab.

    #50809
    Rubox
    Partecipante

    Stamane ho visto che esistono i PLC su “base” Raspberry. E mi par di capire che su tali moduli si può programmare la CPU con LogicLab, ma anche la parte di Linux (sempre se ho capito la minima parte di quello che ho letto).

    Il programma che sto realizzando (è finito ma chiedono sempre modifiche…) manda sul mio FTP il file di log del giorno precedente, tutti i giorni, e invia i valori ogni tot secondi ad una mia pagina PHP su un server che li prende, li controlla e li inserisce in un DB. Il Cliente è restio a darmi un accesso ad un loro FTP o ad un loro DB su server.

    Per adesso glieli rendo disponibili con un grafico su pagina html. Non appena mi passa tra le mani un Raspberry e riesco a capire come fare, lo metto nella LAN del mio server FTP e farò spedire da lui il file che ricevo.

    Grazie per i suggerimenti.

    #50811
    Sergio Bertana
    Amministratore del forum

    Si hai capito bene lo SlimLine Raspberry può essere programmato con LogicLab come gli altri moduli SlimLine e contemporaneamente può eseguire programmi in C++, Phyton, PHP, Node-RED ecc.

    Se cerchi nelle knowledge troverai degli esempi, e anche il programma CloudLogger può essere eseguito sul modulo Raspberry sia lato LogicLab che lato PHP.

    #50812
    Rubox
    Partecipante

    Come sempre la sua risposta è stata illuminante, nel senso che la soluzione l’avevo già pronta ma non riuscivo a vederla (o ad arrivarci): allo stesso modo in cui prelevo i dati dal DB per fare i grafici sulle pagine HTML…

    Proverò a fare uno script PHP, richiamato dallo SlimLine dal programma che gestisce il cambio di giorno, che preleva i dati, li assembla come corpo messaggio e li spedisce con mail(). O usando una libreria (PHPMailer) creando un file e inviandolo come allegato.

    Tra l’altro così facendo posso anche estrarre i dati dal DB con differente periodicità in modo semplice con una query.

    #50968
    Rubox
    Partecipante

    Pongo l’ennesima domanda da neofita: quanto blocchi EmailSend posso usare in un programma?

    Ho l’esigenza di spedire delle email differenti al verificarsi di più eventi. Questi eventi possono anche accadere nello stesso ciclo. Al momento ho cercato di far funzionare il tutto con vari Case, compresa l’eventualità di un errore sull’invio di una email… ma con scarso successo: alcune email si perdono.

    Stavo pensando di creare un programmino per ogni evento da catturare e gestire: l’unico mio cruccio è se lo SlimLine può comunicare/utilizzare più EmailSend nello stesso momento oppure no.

    Stavo anche pensando, in alternativa, di creare un array di coppie Oggetto/Corpo della email in cui inserire appunto l’email al verificarsi dell’evento e poi tenere traccia di quale messaggio è ancora da spedire e controllarne l’effettivo invio, a quel punto verificare se era l’ultimo messaggio oppure no, e così via.

    Ogni suggerimento è ben gradito.

    #50971
    Sergio Bertana
    Amministratore del forum

    Il limite è la memoria ed il numero di sockets aperti contemporaneamente (Oggi è di 32 sockets), ma piuttosto di istanziare tanti FB di invio eMail gestirei le concomitanze di eventi utilizzando il FB FIFOFile per salvare l’evento nel file di FIFO e poterlo poi estrarre quando il FB di invio eMail è libero.

    Ti ricordo che gli eventi salvati nel FIFO non hanno limiti di dimensione quindi può essere anche l’intero testo email e quando lo estrai dal FIFO avrai l’indicazione temporale (Epoch time) di quando lo hai caricato. Quindi potrai inviare la mail magari riportando nell’oggetto data/ora esatta di quando il testo è stato generato.

    #50974
    Rubox
    Partecipante

    Mi metto a leggere per bene e a studiare il FIFOFile e a imbastire la logica per non sbagliare le cose.

    Direi che le cose che devo fare sono: salvare nel FIFOFile il messaggio (eventualmente un inserimento anche multiplo per ogni indirizzo email a cui spedire), tenere traccia di quanti inserimenti sono stati fatti. Se è presente qualcosa nel FIFO allora richiamo la parte che invia il messaggio. A invio avvenuto decremento il contatore dei messaggi FIFO… e riparto con il controllo se ci sono messaggi in coda.

    Così dovrebbe andare bene?

Stai visualizzando 15 post - dal 1 a 15 (di 26 totali)
  • Devi essere connesso per rispondere a questo topic.