Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

E-mail + capture d'écran

Résolu !
Accéder à la solution

Bonjour à tous,

 

Je reviens une nouvelle fois vers vous puisque je rencontre des difficultés à envoyer un mail (par Gmail).

 

Aujou'dhui, je fais de l'acquisition de données en labo (température, pression, débit ...) et j'y ai codé des alarmes avec seuil.

Celle-ci me permettent de faire clignoter un booléen ainsi qu'un avertisseur sonore. 

C'est déjà pas mal, mais cela oblige l'opérateur à rester dans le labo, j'aimerais donc en plus de cela envoyer un e-mail via une adresse gmail que j'ai créé spécifiquement à mon opérateur (disant par exemple "Attention température en hausse").

 

J'ai aussi l'ambition de rajouter à ce mail une capture de ma face-avant, malgré mes recherches, je n'ai pas bien compris comment ça marche. Puisque je veux l'envoyer par mail, il faudrait que je puisse l'enregistrer sous un même nom à chaque fois et en plus écraser la capture précédente. Peut-être y aurait-il une solution plus simple?

 

Mais avant cela, je me suis bien sûr concentré sur l'envoie de mail. J'ai fais pas mal de recherche, téléchargé pas mal de VIs, essayer les VIs proposés par LabVIEW mais rien y fait.

J'ai cependant réussi à envoyer un mail par Outlook, à l'aide d'un VI que j'ai trouvé sur le forum. Cependant, je n'ai pas Outlook sur les ordinateurs "Opérateur", seulement sur celui avec lequel je programme. Cette solution n'est donc pas vraiment celle que j'envisage. J'aimerais passer aujourd'hui par Gmail, c'est pourquoi j'ai créé une adresse spécifique à mon alarme.

 

Je me permet de joindre les VIs que j'ai testé, avec l'erreur affiché.

 

Je vous remercie pour vos futures réponses et vous souhaite par ailleurs tous mes voeux pour cette nouvelle année.

 

Cordialement,

0 Compliments
Message 1 sur 11
4 070 Visites

Bonjour Cyprien

 

Il n'est plus possible d'envoyer des mail google via des applications non reconu. C'est déjà compliqué via outlook!

Il faut te créer une boite chez un autre fournisseur (OVH pas exemple, j'ai testé, ça fonctionne) pour tes applis LabVIEW.

Bon courrage 🙂

0 Compliments
Message 2 sur 11
4 063 Visites

Bonjour,

 

Merci pour votre réponse, donc gmail à oublier.

 

J'ai cependant toujours quelques soucis, j'arrive en envoyer un mail pour outlook grâce au VI que j'ai trouvé sur le forum.

Ca se fait un peu tout seul, il semblerait que LabVIEW ait les droits d'utiliser mon Outlook si j'y suis connecté. J'arrive donc à envoyer un mail avec la session ouverte, c'est un super début et m'aide à avancer. Malheureusement, c'est assez contraignant puisque je suis limiter à envoyer le mail avec ma session ouverte.

 

Mais je sais que je peux envoyer un mail via Outlook du coups. J'ai essayer tout un tas de VIs trouvés sur les forums ainsi que le VI implémenté dans LabVIEW pour configurer un mail (http://zone.ni.com/reference/fr-XX/help/371361K-0114/lvhowto/send_email_from_vi/). Pourtant, ça ne marche pas mieux qu'avec mon compte gmail, pourtant ça marche très bien avec le dernier VI (par outlook) joint à mon premier post.

 

En fait, ce que je cherche à faire c'est pouvoir un peu comprendre comment ça marche, car trouver un VI qui marche c'est bien, mais j'aime bien comprendre ce que je fais, et ça me laisse ainsi plus de liberté.

 

De plus, après un jour d'échec avec ces fameux mails, je me suis penché sur l'envoie de ma capture d'écran (à l'aide du VI Outlook qui marche). Pour rappel, je veux envoyer un mail avec une capture d'écran de ma face-avant, effectuée sur seuil (par exemple T° > 150°C).

J'ai mi un place un début de code avec une "simulation" d'acquisition.

J'ai premièrement simuler mon seuil par un booléen type commande. J'ai créé une structure évènement sur "valeur changée" de ce booléen dans laquelle je fais ma capture puis envoie le mail. Effectivement, la structure évènement est utile car je ne veux pas envoyer un mail avec chaque itération de ma boucle mais seulement au passage de mon booléen à vrai. Tout marche à merveille, la capture se fait puis le mail est envoyé avec la dernière capture, en pièce jointe.

 

J'ai ensuite créé une comparaison type ">" avec un numérique type commande (qui simule l'acquisition de la température par exemple) et une constance (mon seuil "alarme") ce qui me donne mon booléen d'alarme. Mais la ça se gate, ma structure évènement ne réagit plus, ne reconnait pas les changements de valeurs de mon alarme. J'ai essayé d'utiliser la noeud de propriété "valeur (signalisation)" mais pour le coups, j'envoie un mail sur chaque itération de ma boucle, j'ai donc reçu 20 mails d'un coups ....

 

Je joins mon code qui marchait par simulation du seuil par booléen commander manuellement puis mon VI avec le seuil souhaité mais que "bloque" la structure évènement.

 

Merci pour le temps que vous me consacré.

 

Cordialement,

Tout télécharger
0 Compliments
Message 3 sur 11
4 034 Visites
Solution
Accepté par l'auteur du sujet cyprien11

OK, voyons par étape :

- il faut bien passer par "valeur (signalisation)" mais seulement lorsque la condition est vrai ValeurSignalisationVrai.png- Après, pour comprendre ce qui ce passe dans le vi, en bas niveau, c'est sûrement un peu compliqué. Moi, je n'utilise pas l'ActiveX, car ça ne fonctionne pas sur LabVIEW RT. Voici ce que j'utilise :

EnvoiMail.png

Ca fonctionne en IHM et en RT. Si ça peut t'aider...

Message 4 sur 11
4 027 Visites

Alors, pour ce qui est de la "valeur (signalisation)", j'avais conditionné sur Vrai mes actions en fait (cad ma capture ainsi que mon mail). Du coups, je n'avais pas de problème avec la condition fausse.

Cependant, j'ai tout de même rajouté la condition comme tu me l'as indiqué, mais j'ai toujours le problème de la pluralité de mail. J'ai l'impression que la propriété "valeur (signalisation)" prend chaque valeur comme un évènement, même si la nouvelle valeur est la même que la précédente.

Du coups, je me retrouve à éxécuter mon évènement (capture + mail) à chaque itération de ma boucle du moment que mon booléen est Vrai puisqu'en effet la propriété "valeur (signalisation)" reçoit une nouvelle valeur à chaque itération (même si c'est la même valeur qu'à l'itération précédente).

Je n'ai donc plus de notion d'évènement.

Par contre, j'ai réussi réaliser ce que je désirais à l'aide d'un registre à décallage sur mon booléen seuil mais du coups dans la même boucle que mon "acquisition" pour être bon sur la synchronisation. Mais je sais qu'une fois appliqué sur un plus gros VI (avec mes acquisitions et traitements de données), les registres à décallages et la singularité des boucles me poseront problème. D'où mon envie de passer par une structure évènement (que je n'avais d'ailleurs pas utilisé avant cela, et donc enrichi mes connaissances).

 

En ce qui concerne les mails, je me retrouve un peu perdu, je doute de tout. Je ne comprends pas que le module implémenté par LabVIEW soit "inutile" puisque pas du tout utilisé par la communauté à ce que j'en vois. Ca avait l'air pourtant simple. 

Outre ce module, je n'arrive à rien avec aucune boite mail. Seul le VI magique Outlook marche, mais fonctionne plus ou moins seul, pas besoin de configurer l'expéditeur, ce qui me fait penser que j'ai raté quelque chose. J'arrive à envoyer un mail par le VI magique, donc ma boite mail est compatible, mais si j'utilise cette meme boite mais avec un codage différent, rien ne va plus, j'ai l'impression d'avoir plus ou moins tout essayé. ActiveX, .NET, ... Surement un problème de SMTP, j'en avais jamais attendu parlé auparavant.

 

Voici en PJ mon VI fonctionnel même si j'aimerais le modifier.

0 Compliments
Message 5 sur 11
4 017 Visites

Bonjour,

Effectivement, quand tu utilises le noeud de propriété valeur signalisation, cela génère un évènement sans tenir compte d'une variation de valeur. Ce noeud implique que tu "forces" ta boucle évènement à agir.


Si tu veux par la suite que ton code ne s'exécute que sur un changement d'état, tu peux rajouter une condition dans ton évènement en faisant un "diff" entre ancienne & nouvelle valeur.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 6 sur 11
4 003 Visites

Bonjour à vous,

 

Merci pour vos acharnements pour m'aider. J'ai finalement réussi à avoir ce que je recherchais avec l'aide de la "valeur (signalisation)" complétée par un conditionnement de mes actions dans ma structure évènement, comme vous me l'avez vous deux spécifié ( sur vrai ET sur "diff").

Je mets en pièce jointe capture du diagramme + VI complet.

 

Avant de marquer ce poste comme résolu, j'aimerais revenir rapidement sur l'envoie de mail sous la forme de quelques questions, cela décidera de mon abandon ou pas sur cette partie ^^

Peut-on trouver une liste à jour de boite mail compatible avec LabVIEW?

Ayant un mail professionnel sur outlook, le serveur SMTP à utiliser est-il spécifique à l'entreprise ou alors est-ce "smtp-mail.outlook.com" ou peut-être encore "smtp.live.com" ?

Est-il possible que le serveur de l'entreprise me bloque l'accès à des serveurs SMTP extérieurs? Y aurait-il un moyen facile de le savoir?

Je dis ici peut-être de pitrerie, je ne connais pas vraiment le notion SMTP.

 

Merci encore une fois pour votre aide.

 

Cordialement,

Tout télécharger
0 Compliments
Message 7 sur 11
3 998 Visites
Bonjour,

Je viens de regarder la capture d'écran, attention, ta méthode n'est pas optimisé à mon goût, et n'est pas en accord avec une structure "event".

Conserve ton noeud de propriété "valeur(signalisation)" dans une structure condition sur valeur "vrai".
Tu ne passes pas ton temps à exécuter ton "event" en permanence. Car avec ta méthode actuelle, tu as complètement éliminier l'intérêt de la structure event, et tu pourrais mettre ton code directement à la place du noeud de propriétés.

En effet, il ne faut pas oublier, que l'objectif d'une structure évènement est de réagir sur des évènements particuliers, un nœud de propriété forçant un évènement (valeur(signalisation)) se produisant à chaque itération d'une boucle va à l'encontre de cette philosophie. Cela reviendrait à mettre l'évènement concerné dans un évènement "timeout" puisqu'il se répètera à la fréquence de travail de la boucle maitre.
“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 8 sur 11
3 994 Visites

Ah .... j'avais bien senti le problème. Cependant, si je conditionne mon noeud de propriété, la valeur de mon booléen "alarme" (ici appelé "x>y?") reste toujours à vrai une fois que je dépasse mon seuil. Si je redescends sous mon seuil, le booléen ne retombe pas sur faux. Ici, au dépassement suivant, il n'y a pas de différence de valeur de booléen puisqu'il est resté à Vrai depuis le premier dépassement. De ce fait, le mail d'avertissement ne s'envoie pas.

 

Pour résoudre ce problème, si je mets mon noeud de propriété sur la condition Vrai, puis-je mettre une variable locale, cette fois, de mon booléen "alarme" dans la condition Faux? Cela fonctionnera-t-il, et en harmonie avec la philosophie de la structure évènement?

0 Compliments
Message 9 sur 11
3 990 Visites

Oui tu peux mettre soit une variable locale, soit un noeud de propriété "valeur", dans ton cas faux, pour rebasculer ton booléen.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 10 sur 11
3 982 Visites