Nuovo blocco funzione per invio eMail
Home › Forum › Programmazione IEC 61131 (LogicLab) › Nuovo blocco funzione per invio eMail
- Questo topic ha 25 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 5 anni fa da
Sergio Bertana.
-
AutorePost
-
Marzo 17, 2017 alle 5:22 pm #36118
Sergio Bertana
Amministratore del forumRilasciato 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.
Marzo 21, 2017 alle 8:46 pm #39880Paolo
PartecipanteScusa ma non trovo la libreria eLLabNetworkLib_A400.
Marzo 24, 2017 alle 7:11 am #39881Sergio Bertana
Amministratore del forumLa 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.
Ottobre 1, 2019 alle 7:16 am #50108Rubox
PartecipanteCi 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.
Ottobre 1, 2019 alle 7:19 am #50125Sergio Bertana
Amministratore del forumSi 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.
Novembre 5, 2019 alle 11:08 am #50709Rubox
PartecipanteE 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?
Novembre 5, 2019 alle 11:10 am #50741Sergio Bertana
Amministratore del forumAllegati 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).
Novembre 6, 2019 alle 3:02 pm #50742Rubox
PartecipanteAl 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.
Novembre 6, 2019 alle 3:32 pm #50806Sergio Bertana
Amministratore del forumPer 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.
Novembre 6, 2019 alle 4:23 pm #50809Rubox
PartecipanteStamane 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.
Novembre 6, 2019 alle 4:33 pm #50811Sergio Bertana
Amministratore del forumSi 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.
Novembre 7, 2019 alle 7:05 am #50812Rubox
PartecipanteCome 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.
Novembre 12, 2019 alle 3:19 pm #50968Rubox
PartecipantePongo 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.
Novembre 12, 2019 alle 3:24 pm #50971Sergio Bertana
Amministratore del forumIl 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.
Novembre 14, 2019 alle 4:40 pm #50974Rubox
PartecipanteMi 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?
-
AutorePost
- Devi essere connesso per rispondere a questo topic.