Cela devient plus facile d'envoyer des courriels à partir de votre centrale de mesure !

par Dana Worley | Mis à jour le : 01/25/2017 | Commentaires : 12

Les thèmes principaux du Blog


Recherche sur le Blog


Langages du blog

English
Français (French)


Abonnez-vous au Blog

Recevez un courriel lorsqu'un nouvel article est posté. Choisissez les sujets qui vous intéressent le plus.


Entrez votre adresse courriel :



Suggérer un article

Y a-t-il un sujet que vous souhaiteriez nous voir aborder ? Laissez-nous un message.

Leave this field empty

centrale de mesure envoyant un courriel

Avez-vous eu des problèmes pour trouver un serveur SMTP à utiliser pour envoyer des courriels à partir de votre centrale de mesure ? Les problèmes de compatibilité vous amènent-ils à chercher une autre solution ? Prenez un peu de temps pour lire cet article, c'est peut-être le moyen de répondre à vos interrogations.

Remontons le temps !

En 2006, nous avons ajouté à nos systèmes d'exploitation la possibilité pour les centrales d'acquisition connectées en IP, d'envoyer des courriels à l'aide d'une fonction appelée EmailSend(). Cette fonction a ouvert de nouvelles perspectives, permettant à nos centrales de mesure d'émettre des informations sur l'état d'une station, de transférer des fichiers de données sous forme de pièces jointes ou d'alerter l'utilisateur au sujet d'une condition d'alarme.

Au cours des années, nous avons constaté que les utilisateurs avaient souvent un problème pour trouver le bon serveur SMTP à utiliser. Beaucoup de clients utilisent des services gratuits accessibles au public tels que Gmail ou Yahoo, mais de plus en plus, ces services ont ajouté des restrictions qui interdisent aux centrales de mesure d'envoyer des courriels. Parfois, le correctif nécessite de configurer directement les paramètres dans le compte gratuit, parfois le correctif exige de ''soudoyer'' le responsable IT pour faire des changements sur le réseau, et parfois, il ne peut pas être fixé du tout.

Notre solution : la fonction EmailRelay()

Pour offrir une meilleure solution aux clients qui ont besoin d'envoyer des courriels à partir de leurs enregistreurs de données, nous avons introduit la fonction EmailRelay() avec les systèmes d'exploitation des centrales de mesure suivants :

Sous sa forme la plus simple, EmailRelay() a seulement quatre paramètres :

EmailRelay (ToAddr,Subject,Message,ServerResponse)

La fonction dispose de paramètres supplémentaires qui vous permettent d'envoyer des pièces jointes ou d'envoyer des données directement à partir d'une table de données, sans au préalable écrire les données dans un fichier. (Nous appelons cela le ''streaming''.)

Avec EmailRelay(), vous pouvez envoyer jusqu'à 100 courriels par jour, et chaque message peut atteindre la taille d'1 Mo (la taille inclut le message en-tête, le message lui-même et toutes les pièces jointes). Le comptage des messages est réinitialisé quotidiennement.

Conseil : Lorsque vous créez et testez un programme utilisant EmailRelay(), assurez-vous d'utiliser un déclencheur manuel pour exécuter la fonction EmailRelay() et de définir ce déclenchement sur False après l'exécution de la fonction. Cela garantit que vous ne dépasserez pas la limite quotidienne du nombre de courrier électronique pendant la première exécution de test de votre programme.

Exemple de programme

Voici un programme de test rapide pour vous aider à comprendre. Il suffit de changer la constante ToAddr pour envoyer un message de votre centrale de mesure vers votre adresse e-mail.


‘declare program variables and constants
Const ToAddr="YourEmail@yourcompany.com"
Const Subject="Email Message Test"
Const CRLF = CHR(13)+CHR(10)
 
Public Batt
Public AlarmTrigger As Boolean
Public Message As String * 250
Public EmailSuccess
Public ServerResponse As String * 50
 
BeginProg
	Scan (1,Sec,3,0)
		Battery (Batt)
	NextScan
 
	SlowSequence
	Scan(1,sec,1,0)
 
		'Set Alarm Trigger Manually
		If AlarmTrigger Then
			Message = "Hello!" + CRLF + CRLF
			Message = Message + "This is an automatic email message from your friendly datalogger named  " + Status.StationName + ". "
			Message = Message + "An alarm condition has been triggered. "
			Message = Message + "The battery voltage is " + Batt + " volts." + CRLF + CRLF + CRLF
			Message = Message + "Datalogger time is " + Status.Timestamp
			EmailSuccess=EmailRelay (ToAddr,Subject,Message,ServerResponse)
			AlarmTrigger=False
		EndIf
 
		Erase (Message)'Erase the message after sending 
 
	NextScan

Conseil : Exécutez EmailRelay() dans une SlowSequence, comme indiqué ci-dessus, pour éviter de retarder des mesures et d'autres tâches importantes exécutées dans le scan principal.

L'adresse du courriel envoyé (De ou From) par l'enregistreur de données est noreply@konectgds.com. Konect GDS est la plate-forme de collecte de données hébergée par le Cloud de Campbell Scientific. C'est également là que se trouve le serveur de messagerie Campbell Scientific.

EmailSend() par rapport à EmailRelay()

EmailSend() est toujours inclus dans les systèmes d'exploitation de la centrale de mesure. Si vous utilisez déjà la fonction EmailSend() et que cela fonctionne bien pour vous, il n'est pas nécessaire de la modifier. Toutefois, si vous avez des difficultés de compatibilité avec votre serveur SMTP existant, utilisez cette nouvelle fonction pour un essai. Nous espérons que vous la trouverez plus facile à utiliser.

PS (note du service technique de CSF) : Lors de vos essais, si vous ne recevez pas de courriels, vérifiez vos SPAMS en premier ! Enfin si vous souhaitez tester cette fonction, faites-le en premier au bureau et non sur le terrain.

Si vous avez des commentaires sur cette nouvelle fonction incluse dans les nouveaux systèmes d'exploitation de nos centrales de mesure, laissez-nous vos remarques ci-dessous !


Partagez cet article



A propos de l'auteur

dana worley En tant que responsable des produits logiciels chez Campbell Scientific, Inc., Dana Worley passe ses journées à gérer les problèmes logiciels, à fournir un support client de second niveau et à documenter les jeux d'instructions pour les centrales de mesure CRBasic. Parfois, vous la retrouverez peut être en train de répondre aux questions sur le forum des utilisateurs de Campbell Scientific. Loin du bureau, Dana aime faire de la randonnée, du VTT (ce qui nécessite de nombreux pansements!) et jouer à Fused Glass Artist dans son studio à domicile.

Voir tous les articles de cet auteur.


Commentaires

ganzlin | 01/25/2017 at 11:41 AM

Thanks for this update. I am on OS 31 on my CR3000s and up to date with the patch on LoggerNet to 4.4.2 but still don't see EmailRelay in the list of commands in CRBasic editor. Also, could you explain what the command CRLF does and an example of a logical operator to trigger an email alert? Thanks

jra | 01/25/2017 at 12:14 PM

Hi ganzlin,

When you download an OS from our web site you need to run the executable to update your CRBasic instructions and Help files. Once you do that you will see EmailRelay() in the instruction list. 

CRLF is a carriage return line feed. Back in the old days of typewriters, when the typing mechanism (a carriage) got to the end of a line you had to return it and advance the paper (line feed). Const CRLF = CHR(13)+CHR(10) does that digitally now. 

Here's an article on different ways to use time to trigger an action. 

Hope that helps,

Janet

ganzlin | 01/25/2017 at 01:15 PM

Thank you that did it!

francesco.sabatini | 02/01/2017 at 08:48 AM

Dear Dana, Thank you for implementing this new function, we found it very useful. We would like to know if there is a limited number of email addresses that can be inserted in the variable "ToAddr" as for your example. Actually we are inserting 4 email adrresses and yesterday it sent the messages only to one of the adddress out 4.

On which basis you calculate the threshold of 30 email per day: by email address or by data logger serial number? There are some filter on the recipients?

Thank you again for your support, ciao

Francesco and Alessandro

Dana | 02/01/2017 at 08:56 AM

Hello Francesco and Alessandro,

The limit of 30 emails per day is based on the datalogger. If you send one email to 5 people, you have used up only one of your emails for the day.

With the EmailRelay function, you can send to multiple email addresses at once. My first guess, without testing, is that the "ToAddr" would need to be a String variable rather than a Constant. I'm currently not at my desk to test, but I will double-check. You can also give it a go and see if you have success. 

I'm glad you're finding this new function useful. I think it is a great way to simplify sending email from a Campbell datalogger!

Kind regards, Dana

francesco.sabatini | 02/01/2017 at 11:44 PM

Dear Dana, 

thank you so much for your real time reply, much appreciated.

Actually in the present program "ToAddr" has been define as follows:

Const ToAddr = "alessandro.materassi@cnr.it,f.sabatini@ibimet.cnr.it,....+2 recipients"

So we will try to set it as a string variable.

Our best regards from Italy, ciao

Francesco & Alessandro

Memrys | 10/10/2018 at 09:46 AM

Hello,

I cannot seem to find a working version of EmailRelay through any example. Operating on a cr1000 with Std.32.03. Using the above example I obtain a -2 response. Even through CRBasic help and making a few changes does not seem to produce a result. Connection is through a RV50 modem using CSI template.

JDavis | 10/10/2018 at 10:57 AM

The -2 response code means you don't have enough data to send yet. Just wait, and it should work.

JFE2011 | 11/12/2018 at 09:59 AM

Hi, 

I have a situation where I want to send an email with data table as an attachment, but only once a week. My understanding is that the slowest a scan sequence can run is once a day. Is there a way of scheduling emailrelay to run once a week?

Thanks

Joel

Dana | 11/12/2018 at 10:25 AM

Hello Joel,

One solution is to trigger EmailRelay based on the result of the RealTime instruction. This is from the help in CRBasic:

The RealTime instruction loads the destination array (Dest argument) with the current time values in the following order: (1) year, (2) month, (3) day of month, (4) hour of day, (5) minutes, (6) seconds, (7) microseconds, (8) day of week (1-7; Sunday = 1), and (9) day of year. The destination array must be dimensioned to 9. The time returned is the time of the datalogger's clock at the beginning of the scan in which the RealTime instruction occurs.

As an example, you could use

      If RealTime(8) = 1 and RealTime(4) = 12

To trigger the event to happen every Sunday at noon.

Best, Dana

vadivelrajap | 04/04/2019 at 04:56 AM

in EmailRelay function, is there any possiblity to send attachment.

Dana | 04/04/2019 at 08:35 AM

Yes, the text in the article above shows the mininum number of parameters required for the instruction, but there are additional parameters including an attachment name. From the CRBasic help, here are all the parameters:

EmailRelay ( ToAddr, Subject, Message, ServerResponse, Attach [optional], NumRecs/TimeIntoInterval [optional], Interval [optional], IntervalUnits [optional], FileOption [optional], TimeOut [optional] )

Keep in mind that message size is limited to 1M. This includes the message itself, any overhead, and attachments.

Dana W.  

Please log in or register to comment.