Hallo guten morgen, ich wünsche euch frohe Weihnachten!
Nun mal zu meinem Problem. Ich habe mir eine Lichtschranke zugelegt und an meinem Arduino montiert. Das funktioniert prima. LED an oder aus, je nach dem ob die Lichtschranke unterbrochen ist oder nicht.
Jetzt hätte ich gerne das wenn die Lichtschranke unterprochen wird, der Arduino eine E-Mail verschickt.
Ich habe bereits 2 Codes ausprobiert, aber es funktioniert nicht!
Daher meine Frage, ob jemand ein gutes Tutorial hierfür kennt.
vielleicht zu allererst die grundlegende Problematik:
e-Mail Server setzen heute fast immer Verschlüsselung voraus. Am PC oder auch auf einem halbwegs aktuellen Smartphone geht das problemlos, den kleinen Arduinos fehlt dafür aber die notwendige Leistung (Speicher,...).
Also benötigt man einen der sehr raren Maildiense die noch ohne Verschlüsslung können.
Tante Google bringt viel Lesestoff zum Thema "email without SSL" oder "email ohne SSL"
Eine Möglichkeit die ich angedacht - aber nie realisiert - habe wäre ein PHP Mailer auf einem Webserver den man vom Arduino aus anspricht.
hab das jetzt, denke ich am laufen, scheitere aber an dem unverschlüsselten Mailsystem. Möchte mir weder einen Mailserver noch ein NAS aufsetzten um meine Unverschlüsselten Mails, verschlüsselt weiter zu senden.
Habe es mal mit smart-mail.de versucht, das klappt nicht. Habt ihr eine Idee für nene Mailanbieter ohne Verschlüsselung?
Ich habe folgenden Code laufen, es kommt aber eine Fehlermeldung zurück die laut Smart-Mail bedeutet, das das Programm keine korrekten Mailbefehle nutzt. Was ich komisch finde, hier kann ich nirgends mein Kennwort eingeben.
#include <SPI.h>
#include <Ethernet2.h>
// Set the panic button pin
byte panicButton = 2;
boolean statusCheck=false;
// this must be unique
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };
// change network settings to yours
IPAddress ip( 192, 168, 1, 200 );
IPAddress gateway( 192, 168, 1, 5 );
IPAddress subnet( 255, 255, 255, 0 );
// change server to your email server ip or domain
// IPAddress server( 1, 2, 3, 4 );
char server[] = "smtp.smart-mail.com";
EthernetClient client;
void setup()
{
Serial.begin(9600);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
Ethernet.begin(mac, ip, gateway, gateway, subnet);
delay(2000);
Serial.println(F("Ready."));
pinMode(panicButton, INPUT);
}
void loop()
{
if(digitalRead(panicButton)==LOW && statusCheck==false)
{
if(sendEmail()) Serial.println(F("Email sent"));
else Serial.println(F("Email failed"));
statusCheck = true;
}
else if (digitalRead(panicButton)==HIGH)
{
statusCheck = false;
}
}
byte sendEmail()
{
byte thisByte = 0;
byte respCode;
if(client.connect(server,25)) {
Serial.println(F("connected"));
} else {
Serial.println(F("connection failed"));
return 0;
}
if(!eRcv()) return 0;
// change to your public ip
client.println(F("helo 1.2.3.4"));
if(!eRcv()) return 0;
Serial.println(F("Sending From"));
// change to your email address (sender)
client.println(F("MAIL From: <Test@test.de"));
if(!eRcv()) return 0;
// change to recipient address
Serial.println(F("Sending To"));
client.println(F("RCPT To: <test@test.de"));
if(!eRcv()) return 0;
Serial.println(F("Sending DATA"));
client.println(F("DATA"));
if(!eRcv()) return 0;
Serial.println(F("Sending email"));
// change to recipient address
client.println(F("To: You <test@test.de>"));
// change to your address
client.println(F("From: Me <test@test.de>"));
client.println(F("Subject: Panic Alarm!\r\n"));
client.println(F("The panic button was pressed!!!"));
client.println(F("."));
if(!eRcv()) return 0;
Serial.println(F("Sending QUIT"));
client.println(F("QUIT"));
if(!eRcv()) return 0;
client.stop();
Serial.println(F("disconnected"));
return 1;
}
byte eRcv()
{
byte respCode;
byte thisByte;
int loopCount = 0;
while(!client.available()) {
delay(1);
loopCount++;
// if nothing received for 10 seconds, timeout
if(loopCount > 10000) {
client.stop();
Serial.println(F("\r\nTimeout"));
return 0;
}
}
respCode = client.peek();
while(client.available())
{
thisByte = client.read();
Serial.write(thisByte);
}
if(respCode >= '4')
{
efail();
return 0;
}
return 1;
}
void efail()
{
byte thisByte = 0;
int loopCount = 0;
client.println(F("QUIT"));
while(!client.available()) {
delay(1);
loopCount++;
// if nothing received for 10 seconds, timeout
if(loopCount > 10000) {
client.stop();
Serial.println(F("\r\nTimeout"));
return;
}
}
while(client.available())
{
thisByte = client.read();
Serial.write(thisByte);
}
client.stop();
Serial.println(F("disconnected"));
}
Klar ist das nicht das was in meinem Skript steht! soll ich dir mein Kennwort da rein schreiben?
Aber ich gebe dir dahingehend recht, ich bin mir nicht sicher, was die Schreibweise hier angeht...
Bei MAIL FROM habe ich jetzt hier mal test@test.de umgewandelt eingetragen. und bei Kennwort habe ich jetzt mal Kennwort umgewandelt stehen, aber ist das dort so richtig?