Pages: 1 2 [3]   Go Down
Author Topic: Envois de mail lors d'apuis sur bouton avec ethernet shield  (Read 4813 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et bein pour moi qui est un débutant en programmation la c'est comme sauter d'un plongeoir  sans avoir appris a nager ....
j’espère que je ne vais pas me noyer smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour bonjour smiley

je suis aussi très intéressé par l'envoi de mail depuis l'arduino ( pour de la surveillance)
Après lecture de vos commentaires j'ai tenté de reprendre le sketch mais la lib Ethernet je semble pas être la même :

Code:
EthernetClient client;
--> error: 'EthernetClient' does not name a type

j'ai donc fais une modif en :
Code:
Client client(server,25);

puis :
Code:
if (client.connect())

à la place de :
Code:
if (client.connect(server,25))

mais aucune connexion ...

Une personne plus compétente que moi pourrait confirmer que l'adresse SMTp de gmail est : 173,194,70,108

Beaucoup de monde semble s'être cassé les dents sur l'envoi de mails depuis l'Arduino ... on croise les doigts ! smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Après quelques tests pas vraiment concluants voici un morceau de code, connection au serveur aléatoirement, bref il y a du travail ^^
Code:
#include <Ethernet.h>
#include <SPI.h>

//--- déclaration du tableau d'adresse MAC ---
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4D, 0x7F };
//---- tableau de l'adresse IP de la carte Arduino ---
byte ip[] = { 192, 168, 1, 10 };
//----- tableau de l'adresse de la passerelle ---
byte passerelle[] = { 192,168,1,254 };
//----- tableau du masque de sous réseau ---
byte masque[] = { 255, 255, 255, 0 };
//----- Mail server address yahoo ---
byte server[] = { 77,238,184,86 };

Client client(server, 465);

//----- Login / Pass base64 ---
String UserName64 = "xx xx xx xx xx xx xx xx";
String Password64 = "xx xx xx xx";

//----- Informations ---
String ServerName = "mail.yahoo.fr";
String Sender = "xxxxxxx@yahoo.com";
String Recipient = "xxxxxxxx@hotmail.fr";


void setup()
{
 Ethernet.begin(mac, ip, passerelle, masque);
 Serial.begin(9600);

 delay(1000);

 Serial.println("connecting...");

 if (client.connect()) {
   Serial.println("connected");
   client.println("HELO " + ServerName); /* say hello*/
   client.println("AUTH PLAIN ");
   client.println(UserName64);
   client.println(Password64);
   client.println("MAIL From:<"+ Sender +">");
   client.println("RCPT To:<" + Recipient + ">");
   client.println("DATA");
   client.println("To: " + Recipient);
   client.println("From: " + Sender);
   client.println("SUBJECT: This is the subject");
   client.println(); /* empty line */
   client.println("This is the body.");
   client.println(""); /* empty line */
   client.println(".");/* end mail */
   client.println("QUIT"); /* terminate connection */
   client.println();
 } else {
   Serial.println("connection failed");
 }
}

void loop()
{
 if (client.available()) {
   char c = client.read();
   Serial.print(c);
 }

 if (!client.connected()) {
   Serial.println();
   Serial.println("disconnecting.");
   client.stop();
   for(;;)
     ;
 }
}
« Last Edit: June 20, 2012, 01:20:11 pm by TchaoPaulo » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon alors pour les nouvelles ....

je suis passé hier soir chez  nybi.cc

d'apres leur avis gmail est incompatible avec mon arduino car il faut utiliser un autre protocole beaucoup trop complique que je ne saurais pas gerer .....

ils m'ont conseillé de passer par tweeter
 et la apres qq essais ca fonctionne enfin smiley-grin

Code:
/*


#include <SPI.h>
#include <Ethernet.h>
#include <Twitter.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0x9x, 0xAx, 0xDx, 0x0x, 0x2x, 0x9x };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

// Message to post
char msg[] = "Hello, World! I'm Arduino!";

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup()
{
  delay(1000);
  //Ethernet.begin(mac, ip, gateway);
  // or you can use DHCP for autoomatic IP address configuration.
  Ethernet.begin(mac);
  Serial.begin(9600);
  
  delay(1000);
  
  Serial.println("connecting ...");
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
}

void loop()
{

}

« Last Edit: June 21, 2012, 06:14:45 am by woodman » Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon alors pour les nouvelles ....

je suis passé hier soir chez  nybi.cc

d'apres leur avis gmail est incompatible avec mon arduino car il faut utiliser un autre protocole beaucoup trop complique que je ne saurais pas gerer .....

ils m'ont conseillé de passer par tweeter
 et la apres qq essais ca fonctionne enfin smiley-grin


Bonjour
C'est ce que j'avais indiqué au debut, mais sur le principe ça ne change pas grand chose
tu ne tweet pas directement avec l'arduino, tu passe par une passerelle tiers relais que tu ne maitrise pas (pérennité,stabilité,confidentialité et ... autres )
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour la confidentialité j'utilise un token et mon compte tweeter n'est pas publique donc ca dois régler ce problème

pour la stabilité quels peuvent etre les problèmes ?

idem pour la pérennité ?
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour la confidentialité j'utilise un token et mon compte tweeter n'est pas publique donc ca dois régler ce problème

pour la stabilité quels peuvent etre les problèmes ?

idem pour la pérennité ?
ce n'est que de la reflexion

- Confidentialité : tu ne sais pas ce qu'il advient de ton (futur) tweet entre le relais et l'injection vers le site twitter, tu ne sais pas si il n'est pas filtré/lu/analysé/modifié,... avant qu'il soit (ou non) propagé ...

- Stabilité : tu es tributaire d'un tiers "relayeur" dont tu ne gère pas la fiabilité de ses "ressources informatique"

- Pérennité : Tu ne sais pas si le "relayeur" sera encore vivant dans 30 secondes, 1 minute, 1 heure, 1 jours, 1...   smiley-mr-green

Si c'est pour de l'application un peu critique, ce n'est pas intellectuellement  "viable" sur du long terme
« Last Edit: June 21, 2012, 07:35:33 am by Artouste » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 101
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour la confidentialité j'utilise un token et mon compte tweeter n'est pas publique donc ca dois régler ce problème

pour la stabilité quels peuvent etre les problèmes ?

idem pour la pérennité ?
ce n'est que de la reflexion

- Confidentialité : tu ne sais pas ce qu'il advient de ton (futur) tweet entre le relais et l'injection vers le site twitter, tu ne sais pas si il n'est pas filtré/lu/analysé/modifié,... avant qu'il soit (ou non) propagé ...

- Stabilité : tu es tributaire d'un tiers "relayeur" dont tu ne gère pas la fiabilité de ses "ressources informatique"

- Pérennité : Tu ne sais pas si le "relayeur" sera encore vivant dans 30 secondes, 1 minute, 1 heure, 1 jours, 1...   smiley-mr-green

Si c'est pour de l'application un peu critique, ce n'est pas intellectuellement  "viable" sur du long terme

Un compte mail free (c'est gratuit), le miens a 10 ans et pas eu de problème particulier avec.
Sinon gérer son propre serveur SMTP/POP avec un PC allumé 24/7. Rapsberry Pi est pratique pour cela. Pas cher et consomme 1w.


Logged

- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon alors c'est clair que twitter ca a  pas l'aire le meilleur truc car hier les 2 premiers essais étaient ok mais la depuis ca passe plus et aujourd'hui j'ai droit a  un message :

This application is temporarily over its serving quota.  Please try again later.

donc je viens de faire une demande de compte mail free et j'attends mon courrier pour avoir mon mot de passe ...



edit:
le probleme de twitter est un cas isolé de bug qui tombe le  jour ou je fait mes premiers tests .....
j'ai pas eu de bol sur le coup la
donc vais voir s'il n'y a pas d'autres bugs je reste comme ca sinon je verais pour passer autrement



Sinon pour une machine type Rapsberry Pi  on dois pas pouvoir gérer un changement d’état d'un contact comme avec un arduino
« Last Edit: June 22, 2012, 04:08:50 am by woodman » Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si si il dispose d'une dizaine de sortie analogique et numérique d'ou l'avantage du Rapsberry Pi
Logged

Un tien vaux mieux que deux tu l'auras !

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mais bon j'ai déjà le matos en arduino et une Rapsberry Pi je sais pas combien de temps il faut pour en avoir une ......
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

bon alors c'est clair que twitter ca a  pas l'aire le meilleur truc car hier les 2 premiers essais étaient ok mais la depuis ca passe plus et aujourd'hui j'ai droit a  un
(...)
le probleme de twitter est un cas isolé de bug qui tombe le  jour ou je fait mes premiers tests .....
j'ai pas eu de bol sur le coup la
donc vais voir s'il n'y a pas d'autres bugs je reste comme ca sinon je verais pour passer autrement
Twitter est trés stable en général.
Hier (pas de bol) il y a eu un gros bug généralisé durant deux heures ...
Twitter a fait un communiquer d'excuse avec tout le blabla habituelle.

Par contre de là a utiliser twitter comme systéme de controle à distance ... surtout au travers d'un web-relai ...
Niveau sécurité et fiabilité c'est trés moyen.

En plus pour le moment twitter est pas trés regardant envers les comptes "non humain", mais maintenant qu'ils vendent les tweets à des régies de marketing en temps réel (et non plus sours forme d'archives) ça risque de changer ...

Sinon pour une machine type Rapsberry Pi  on dois pas pouvoir gérer un changement d’état d'un contact comme avec un arduino
Si c'est même un des gros avantages du Raspberry Pi smiley-wink
Il y a des entrées / sorties (3v3 !!), un bus I2C, un port série, un port SPI, ... comme sur une carte arduino en faite !
http://www.raspberrypi.org/archives/tag/gpio
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 101
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Sinon pour une machine type Rapsberry Pi  on dois pas pouvoir gérer un changement d’état d'un contact comme avec un arduino
Si c'est même un des gros avantages du Raspberry Pi smiley-wink
Il y a des entrées / sorties (3v3 !!), un bus I2C, un port série, un port SPI, ... comme sur une carte arduino en faite !
http://www.raspberrypi.org/archives/tag/gpio

Intéressant. Je vais ouvrir un nouveau sujet sur la possibilité d'utiliser un RPi en maître pour piloter un arduino esclave via SPI/i2c
http://arduino.cc/forum/index.php/topic,111244.0.html






« Last Edit: June 22, 2012, 03:20:23 pm by OLIVIERC67 » Logged

- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon je reviens vers vous pour vous montrer le code que j'utilise et qui fonctionne en utilisant twitter
remplacez les xxxxxxxxxx par votre  "Token" de Twitter
j'utilise un compte twitter sur mon arduino pour envoyer les messages et un second qui est paramétré sur mon téléphone qui suit le 1er et qui m'alerte des que celui ci genere un tweet
le dispositif d'alarme est donc placé sur 3 chambres d’expérimentation avec un message différent pour chaque

il reste un bug qui persiste: sur la chambre 3 il dois y avoir des parasites car des fois je recois un message qui me signale une coupure et juste apres le second message qui me dit que tout est revenu dans l'ordre donc pas un probleme de rebond
je pense qu'il faudrait un truc avec une tempo qui envoie le message que si le bouton subot un changement d'etat de plus de 20 secondes par exemple mais je sais pas trop ou placer ca dans le code

Code:
#include <SPI.h>
#include <Ethernet.h>
#include <Twitter.h>
byte mac[] = { 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx };
Twitter twitter("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
char msg[128] = "";
int cptMess = 0;
const int button1Pin = 5;
const int button2Pin = 6;
const int button3Pin = 3;
int button1State = 0;
int button2State = 0;
int button3State = 0;
int oldBtn1State = LOW;
int oldBtn2State = LOW;
int oldBtn3State = LOW;
void setup()
{
  delay(1000);
  Ethernet.begin(mac);
  Serial.begin(9600);
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
}
void envoyerMsg(char *texte)
{
  Serial.println("connecting ...");
  sprintf(msg, "%s (%d)", texte, cptMess);
  Serial.println(msg);
  if (twitter.post(msg)) {
    int status = twitter.wait(); 
    if (status == 200) {
      Serial.println("OK.");
    }
    else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  }
  else
  {
    Serial.println("connection failed.");
  }
  cptMess ++;
}
void loop()
{
  //Bouton 1
  button1State = digitalRead(button1Pin);
  if (button1State == HIGH && oldBtn1State == LOW)
  {
    envoyerMsg("au secours y a plus de jus chambre 3 !!!");
    oldBtn1State = button1State;
  }
  else if (button1State == LOW && oldBtn1State == HIGH)
  {
    envoyerMsg("c'est bon le jus est revenu chambre 3");
    oldBtn1State = button1State;
  }
  //Bouton 2
  button2State = digitalRead(button2Pin);
  if (button2State == HIGH && oldBtn2State == LOW)
  {
    envoyerMsg("au secours y a plus de jus chambre 1  !!!");
    oldBtn2State = button2State;
  }
  else if (button2State == LOW && oldBtn2State == HIGH)
  {
    envoyerMsg("c'est bon le jus est revenu chambre 1 ");
    oldBtn2State = button2State;
  }
    //Bouton 3
  button3State = digitalRead(button3Pin);
  if (button3State == HIGH && oldBtn3State == LOW)
  {
    envoyerMsg("au secours y a plus de jus chambre 2  !!!");
    oldBtn3State = button3State;
  }
  else if (button3State == LOW && oldBtn3State == HIGH)
  {
    envoyerMsg("c'est bon le jus est revenu chambre 2 ");
    oldBtn3State = button3State;
  }
  Serial.println("coin!");
  delay(10000);
}

Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pour info  le problème de perturbation est réglé avec l'ajout d'un condensateur de 10uf en parallèle dos bornes du contacteur
ça permet du coup de filtrer les courants parasites
le problème était simples a régler
Logged

Pages: 1 2 [3]   Go Up
Jump to: