INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino UNO + EthernetShield (Webserver mit E-Mail)
21.12.2015, 18:35 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2015 22:06 von m0nn3.)
Beitrag #1
Arduino UNO + EthernetShield (Webserver mit E-Mail)
Hallo,

bin neu in der Arduino Welt.
Hatte vorher noch keine Erfahrungen mit Arduino (hatte nur in der Schule C++).

Für einen Freund habe ich einen Webserver gebastelt um dort DS18B20 Temperatursensoren anzeigen zu lassen.
Parallel dazu habe ich versucht wenn ein Wert unterschritten ist das dann max. alle ca. 15 Minuten eine E-Mail versendet wird.

Beide Programme funktionieren erst mal soweit einzeln.
Wollte beides jetzt kombinieren das er über einen Webbrowser seine Werte immer im Blick hat und zur Not noch eine E-Mail bekommt.
Ich vermute mal das man da etwas tricksen muss weil ja das E-Mail versenden als Client geschieht und der Webserver als server halt.

Habe es jetzt erst mal so hin bekommen das ich beim compilieren erst mal keinen Fehler bekomme Smile

Aber es passiert nichts.
Wenn ich aber nur mal die Funktion void sendEmail() am ende weg lasse funktioniert wenigstens der Webserver..
aber im Normalfall sollte das Programm ja gar nicht in die Funktion springen sondern erst nach der "Zeit"..

Code:
#include <SPI.h>
#include <Ethernet.h>

// Temperatursensoren Library
#include <OneWire.h>            // OneWire-Bibliothek
#include <DallasTemperature.h>  // DS18B20-Bibliothek

#define DS18B20_PIN 2   // Pin für DS18B20 definieren Arduino D2

OneWire oneWire(DS18B20_PIN);          // OneWire Referenz setzen
DallasTemperature sensors(&oneWire);   // DS18B20 initialisieren

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,178,45);

//EthernetClient client;
EthernetServer server(80);

//Variable fuer Counter
int count = 0;


//Temperatur ab der benachrichtigt wird
float tempMin = 22;

//Einstellungen Temperatursensor
float temperatur1;
float temperatur2;
float temperatur3;



void setup() {

  Serial.begin(9600);


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  sensors.begin();  // DS18B20 starten
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  
    delay(1000);
  Serial.println("Initialisieren abgeschlossen");
  
  
}


void loop() {
  EthernetServer server(80);
  
  sensors.requestTemperatures(); // Temperatursensor(en) auslesen
  delay(5000);
  temperatur1 = sensors.getTempCByIndex(0);
  temperatur2 = sensors.getTempCByIndex(1);
  temperatur3 = sensors.getTempCByIndex(2);
  
  // Serial Monitor Ausgabe
  
  Serial.print("Temp1 = ");
  Serial.print(temperatur1);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");  
  
    Serial.print("Temp2 = ");
  Serial.print(temperatur2);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");
  
    Serial.print("Temp3 = ");
  Serial.print(temperatur3);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");

  // wenn count >= 180 ist dann wird eine mail geschickt. das Heißt alle 15 Minuten (180 x 5Sekunden)
    if ( count >= 180 && (temperatur1 <= tempMin || temperatur2 <= tempMin || temperatur3 <= tempMin)) {
        Serial.println("Temperatur zu gering!!!!!!!!!!!!!!!!!!!!!!!!!!");
        sendEmail();
        count=0;
        
    }
    else
    {
      Serial.print("Count = ");
      Serial.println(count);
      Serial.println("Temperatur im Normbereich");
    
     //delay(5000);   Dieses delay habe ich nach dem Sernsor auslesen hinzugefügt
     count++;
    
    }
  
  
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        
        if (c == '\n' && currentLineIsBlank) {
        
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
      client.println("Refresh: 10");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");


        
          
client.println(" <title>Lar's Arduino Projekt</title>");
client.println("");


client.println("<body>");
client.println("<div style='text-align: center;'><big><big><big><big><span");
client.println("style='font-weight: bold;'>Temperatur Heizung</span></big></big></big></big><span");
client.println("style='text-decoration: underline;'><span style='font-weight: bold;'><br>");
client.println("</span></span>");
client.println("<br />");
client.println("<table style='text-align: left; width: 100%;' border='1' cellpadding='2'");
client.println("cellspacing='2'>");
client.println("<tbody>");

client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor1</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur1);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor2</big></big></big></big></big></big></big><br");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur2);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</tr>");
client.println("<tr>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor3</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur3);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("</tr>");
client.println("</tbody>");
client.println("</table>");
client.println("<span style='text-decoration: underline;'><spanstyle='font-weight:");
client.println("bold;=''><br>");
client.println("</spanstyle='font-weight:'></span></div>");
client.println("</body>");
          //################################################################################​##########################
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
} // loop Klammer

void sendEmail()
{  
  EthernetClient client;
  //byte ip[] = {192, 168, 178, 45 };
byte server[] = {103, 47, 204, 4 }; // FHSTP smtp IP
  Serial.println("connecting...");

  if (client.connect(server, 587)) {
    Serial.println("connected");
    client.println("EHLO mail.smtp2go.com");
    // Authentication
    client.println("auth login");
           delay(500);
    client.println("bTBubjNAd2ViLmRl");
           delay(500);
    client.println("c2hvcnRtb25uZQ==");
           delay(500);
    client.println("MAIL FROM:<m0nn3@web.de>");
    client.println("RCPT TO:<amm0nne@gmail.com>");
    client.println("DATA");
    client.println("TO: <amm0nne@gmail.com>");
    client.println("From: Arduino Temperaturüberwachung <m0nn3@web.de>");
    client.println("SUBJECT: Arduino Temperaturwarnung");
    client.println();
    client.println("Wichtige Nachricht von Arduino:");
    client.print("Sensor 1 hat ");
    client.print(temperatur1);
    client.println(" Grad!");
    client.print("Sensor 2 hat ");
    client.print(temperatur2);
    client.println(" Grad!");
    client.print("Sensor 3 hat ");
    client.print(temperatur3);
    client.println(" Grad!");
    client.println(".");
    client.println("quit");
    client.stop();
  } else {
   client.println("Connection failed");
  }
  

}



Danke schon mal im Voraus für eure Hilfe !!!!

Hallo,
ich noch mal Smile

Hier noch mal die Beiden einzeln funktionierende Sketche ?!

Email versenden :

Code:
#include <Ethernet.h>
#include <SPI.h>

// Temperatursensoren Library
#include <OneWire.h>            // OneWire-Bibliothek
#include <DallasTemperature.h>  // DS18B20-Bibliothek

#define DS18B20_PIN 2   // Pin für DS18B20 definieren Arduino D2

OneWire oneWire(DS18B20_PIN);          // OneWire Referenz setzen
DallasTemperature sensors(&oneWire);   // DS18B20 initialisieren

byte mac[] = {0xDE, 0xAD, 0xBE, 0xAF, 0xCE, 0xDD };
byte ip[] = {192, 168, 178, 45 };
byte server[] = {103, 47, 204, 4 }; // FHSTP smtp IP

EthernetClient client;

//Variable fuer Counter
int count = 0;
//Variable fuer Anzahl der Messungen
int anz = 1;

//Temperatur ab der benachrichtigt wird
float tempMax = 25;
float tempMin = 22;

//Einstellungen Temperatursensor
int analogPort1 = 5;
float temperatur1;
float temperatur2;
float temperatur3;

int idx;
int x;

void setup()
{
  
  Ethernet.begin(mac, ip); //Ethernet initialisiren
  Serial.begin(9600);  //Serielle Ausgabe starten
  sensors.begin();  // DS18B20 starten
  
  delay(1000);
  Serial.println("Initialisieren abgeschlossen");
}

void loop()
{
  sensors.requestTemperatures(); // Temperatursensor(en) auslesen
  temperatur1 = sensors.getTempCByIndex(0);
  temperatur2 = sensors.getTempCByIndex(1);
  temperatur3 = sensors.getTempCByIndex(2);

  // Serial Monitor Ausgabe
  
  Serial.print("Temp1 = ");
  Serial.print(temperatur1);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");  
  
    Serial.print("Temp2 = ");
  Serial.print(temperatur2);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");
  
    Serial.print("Temp3 = ");
  Serial.print(temperatur3);
  Serial.print(" ");
  Serial.print(char(176));
  Serial.println("C .");

  // wenn count >= 180 ist dann wird eine mail geschickt. das Heißt alle 15 Minuten (180 x 5Sekunden)
    if ( count >= 180 && (temperatur1 <= tempMin || temperatur2 <= tempMin || temperatur3 <= tempMin)) {
        Serial.println("Temperatur zu gering!!!!!!!!!!!!!!!!!!!!!!!!!!");
        sendEmail();
        count=0;
        
    }
    else
    {
      Serial.print("Count = ");
      Serial.println(count);
      Serial.println("Temperatur im Normbereich");
    
     delay(5000);
     count++;
    
    }
  

  
  
} // loop Klammer

void sendEmail()
{  
  Serial.println("connecting...");

  if (client.connect(server, 587)) {
    Serial.println("connected");
    client.println("EHLO mail.smtp2go.com");
    // Authentication
    client.println("auth login");
           delay(500);
    client.println("MeinUserName");
           delay(500);
    client.println("MeinPasswort");
           delay(500);
    client.println("MAIL FROM:<MeineEmail>");
    client.println("RCPT TO:<Empfänger>");
    client.println("DATA");
    client.println("TO: <Empfänger>");
    client.println("From: Arduino Temperaturüberwachung <MeineEmail>");
    client.println("SUBJECT: Arduino Temperaturwarnung");
    client.println();
    client.println("Wichtige Nachricht von Arduino:");
    client.print("Die Temperatur beträgt nur ");
    client.print(temperatur1);
    client.println(" Grad!");
    client.println(".");
    client.println("quit");
    client.stop();
  } else {
   client.println("Connection failed");
  }
}

Und hier dann noch der Webserver:

Code:
#include <SPI.h>
#include <Ethernet.h>

// Temperatursensoren Library
#include <OneWire.h>            // OneWire-Bibliothek
#include <DallasTemperature.h>  // DS18B20-Bibliothek

#define DS18B20_PIN 2   // Pin für DS18B20 definieren Arduino D2

OneWire oneWire(DS18B20_PIN);          // OneWire Referenz setzen
DallasTemperature sensors(&oneWire);   // DS18B20 initialisieren

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,178,45);


EthernetServer server(80);

//Variable fuer Counter
int count = 0;
//Variable fuer Anzahl der Messungen
int anz = 1;

//Temperatur ab der benachrichtigt wird
float tempMax = 25;
float tempMin = 22;

//Einstellungen Temperatursensor
int analogPort1 = 5;
float temperatur1;
float temperatur2;
float temperatur3;

int idx;
int x;


void setup() {

  Serial.begin(9600);


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  sensors.begin();  // DS18B20 starten
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  
    delay(1000);
  Serial.println("Initialisieren abgeschlossen");
  
  
}


void loop() {
  
  
  sensors.requestTemperatures(); // Temperatursensor(en) auslesen
  temperatur1 = sensors.getTempCByIndex(0);
  temperatur2 = sensors.getTempCByIndex(1);
  temperatur3 = sensors.getTempCByIndex(2);
  
  
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        
        if (c == '\n' && currentLineIsBlank) {
        
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
      client.println("Refresh: 10");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

          
client.println(" <title>Lar's Arduino Projekt</title>");
client.println("");


client.println("<body>");
client.println("<div style='text-align: center;'><big><big><big><big><span");
client.println("style='font-weight: bold;'>Temperatur Heizung</span></big></big></big></big><span");
client.println("style='text-decoration: underline;'><span style='font-weight: bold;'><br>");
client.println("</span></span>");
client.println("<br />");
client.println("<table style='text-align: left; width: 100%;' border='1' cellpadding='2'");
client.println("cellspacing='2'>");
client.println("<tbody>");

client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor1</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur1);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor2</big></big></big></big></big></big></big><br");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur2);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</tr>");
client.println("<tr>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>Sensor3</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("<td style='vertical-align: top; width: 100px; text-align: center;'><big><big><big><big><big><big><big>");
client.println(temperatur3);
client.println(char(176));
client.println("C</big></big></big></big></big></big></big><br>");
client.println("</td>");
client.println("</tr>");
client.println("</tbody>");
client.println("</table>");
client.println("<span style='text-decoration: underline;'><spanstyle='font-weight:");
client.println("bold;=''><br>");
client.println("</spanstyle='font-weight:'></span></div>");
client.println("</body>");
        
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}


Ist zwar bestimmt nicht die schönste Schreibweise aber es funktioniert einzeln und da war ich schon mal stolz drauf Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Mega 2560 und Ethernetshield mit SD Card OLDARDUINO 0 82 29.11.2016 09:50
Letzter Beitrag: OLDARDUINO
  Smarthome per EthernetShield Nopody33 5 2.370 02.04.2016 10:13
Letzter Beitrag: toto1975
Sad Temperatur u. feuchtigkeit Webserver+speichern der Temp. u. Feuchti. auf sd Porblem!! TbO92 0 1.898 27.10.2014 10:14
Letzter Beitrag: TbO92
  Arduino Webserver mit Sensoren Mi Kat 10 8.564 20.08.2014 14:14
Letzter Beitrag: RMR
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.537 02.02.2014 07:59
Letzter Beitrag: Ikearegal
  Temperaturüberwachung + LCD + Webserver + eMail rkuehle 0 4.768 21.11.2013 20:58
Letzter Beitrag: rkuehle
  WebServer mit Ethernet Shield--->Fehler im Programm Wampo 0 2.026 22.08.2013 13:13
Letzter Beitrag: Wampo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste