I would like to receive an email when the temperature is exceeded. Unfortunately, this does not work, I do not get an email though temperature is higher than indicated. How can I fix this? Thank you
and another question, how can you show only one decimal place and not 3
So instead of 31.390 only 31.3?
PS: Display, Thingspeak, Blynk everything works. Just not Email. Use a local server.
Thingspeak data is older
#include <Wire.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <SPI.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <BlynkSimpleEsp8266.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#define BLYNK_PRINT Serial // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <Adafruit_BME280.h> // librarie https://github.com/adafruit/Adafruit_BME280_Library
#include <ESP8266WiFi.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <ThingSpeak.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <Adafruit_Sensor.h> // librarie Adafruit_Unified_Sensor über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <LiquidCrystal_I2C.h> // Library https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
#include <OneWire.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#include <DallasTemperature.h> // über > Sketch > Bibliothek einbinden > Bibliotheken verwalten einbinden
#define ONE_WIRE_BUS D6
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long myChannelNumber = XXXXX;
const char * myWriteAPIKey = "XXXXXXXXXX";
const char* ssid = "XXXXXXXXXX";
const char* password = "XXXXXXXXXX";
char auth[] = "XXXXXXXXXXXXXXXXXXX";
const char* server = "api.thingspeak.com";
WiFiClient client;
LiquidCrystal_I2C lcd(0x27,20,4); // Stellen Sie die LCD-I2C-Adresse ein, in diesem Fall 0x3F - Wenn Sie sie nicht kennen, verwenden Sie das I2C-Scanskript. Vergessen Sie nicht, die E / A-Pins nach Wire.begin (x, y) festzulegen.
float h, t, p, pin, dp;
Adafruit_BME280 bme; // I2C
BlynkTimer timer;
float temp = 0;
float Nachricht = 0;
float EMail = 0;
void setup() {
Wire.begin(4, 5);
sensors.begin(); // Schalte Sensor (in diesen fall DS18B20) ein
Serial.begin(115200);
lcd.begin();
WiFi.begin(ssid, password);
ThingSpeak.begin(client);
Serial.println();
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi verbunden");
if (!bme.begin()) {
Serial.println("Es konnte kein gültiger BME280-Sensor gefunden werden, Verdrahtung prüfen!");
while (1);
}
//***Blynk starten
//Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
Blynk.begin(auth, ssid, password, IPAddress(192,168,0,19), 8080);
Blynk.notify("Device started");
// Richten Sie eine Funktion ein, die jede Minute aufgerufen werden soll
timer.setInterval(1000L, sendTemps);
lcd.setCursor(1,0);
lcd.print("Wetterstation V1.0");
lcd.setCursor(0,1);
lcd.print("Temp. Luftf. Luftd.");
lcd.setCursor(6,2);
lcd.print("Waschhaus");
lcd.setCursor(1,3);
lcd.print("Lese Sensoren aus");
lcd.backlight();
delay(5000);
lcd.noBacklight();
delay(1000);
lcd.backlight(); // finish with backlight on
}
void sendTemps()
{
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
Serial.println(String("Temperatur=")+bme.readTemperature()+ String(" C"));
Blynk.virtualWrite(V4, temp);
Blynk.virtualWrite(V5, bme.readTemperature());
Blynk.virtualWrite(V6, bme.readHumidity());
Blynk.virtualWrite(V7, (bme.readPressure()/100));
}
void loop(){
Blynk.run();
timer.run();
t = bme.readTemperature();
p = bme.readPressure()/100.0F;
h = bme.readHumidity();
dp = t-19,4*(100,0-h);
pin = 0.225*p;
float Luftdruck = p;
// float temp;
// Serial.print("Heizk.Temperatur = "); // zwischen den " " kann ein beliebiger Name verwendet werden
// Serial.print(sensors.getTempCByIndex(0),1); // auslesen der Sensordaten. Wenn °C hinter der Temperatur stehen soll, dann muss "print" verwendet werden
Serial.println (" °C");
Serial.print("Temperatur = ");
Serial.print(t);
Serial.println (" °C");
Serial.print("Luftfeuchtigkeit = ");
Serial.print(h);
Serial.println (" %");
Serial.print("Luftdruck = ");
Serial.print(p,1);
Serial.println (" hPA");
Serial.print("Höhe = ");
Serial.print(pin);
Serial.println (" m");
Serial.print("Taupunkt = ");
Serial.print(dp);
Serial.println (" °C");
Serial.println("sende Daten an Thingspeak");
ThingSpeak.setField(1, t);
ThingSpeak.setField(2, p);
ThingSpeak.setField(3, h);
ThingSpeak.setField(4, dp);
ThingSpeak.setField(5, temp);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
delay(20000);
lcd.clear(); // Display löschen
delay (500);
lcd.setCursor(5, 0); // Anfang auf Stelle 5, Zeile 1 setzen
lcd.print("Waschhaus"); // Wassertemp. auf LCD ausgeben
// lcd.setCursor(12, 0); // Anfang auf Stelle 12, Zeile 1 setzen
// lcd.print(sensors.getTempCByIndex(0),1); // Wert aus "DS18B20" Wassertemperatur (sensors.getTempCByIndex(0),1
// lcd.setCursor(17, 0); // Anfang auf Stelle 17, Zeile 1 setzen
// lcd.print("\337C"); // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(0, 1); // Anfang auf Stelle 0, Zeile 2 setzen
lcd.print("Temperatur"); // Temperatur auf LCD ausgeben
lcd.setCursor(12, 1); // Anfang auf Stelle 12, Zeile 2 setzen
lcd.print(t,1); // Wert aus "t" ausgeben (Temperatur), 1 ist eine Stelle hinter dem Komma
lcd.setCursor(17, 1); // Anfang auf Stelle 17, Zeile 2 setzen
lcd.print("\337C"); // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(0, 2); // Anfang auf Stelle 0, Zeile 3 setzen
lcd.print("Luftfeuchte"); // Luftfeuchte auf LCD ausgeben
lcd.setCursor(12, 2); // Anfang auf Stelle 12, Zeile 3 setzen
lcd.print(h,1); // Wert aus "h" ausgeben (Luftfeuchtigkeit), 1 ist eine Stelle hinter dem Komma
lcd.setCursor(18, 2); // Anfang auf Stelle 18, Zeile 3 setzen
lcd.print("%"); // % auf LCD ausgeben
lcd.setCursor(0, 3); // Anfang auf Stelle 0, Zeile 4 setzen
lcd.print("Luftdruck"); // Luftdruck auf LCD ausgeben
lcd.setCursor(10, 3); // Anfang auf Stelle 10, Zeile 4 setzen
if (p < 1000) lcd.print(" "); // ein Leerzeichen ausgeben wenn Luftdruck unter 1000 ist
lcd.print(p,1); // Wert aus "p" ausgeben (Luftdruck)(p,1 ist eine Stelle hinter den Komma
lcd.setCursor(17, 3); // Anfang auf Stelle 17, Zeile 4 setzen
lcd.print("hPa"); // hPa auf LCD ausgeben
if ( (bme.readTemperature() > 29 ) && (millis() > Nachricht+3000 ) )
{
Nachricht = millis();
Blynk.notify(String("Warnung ")+bme.readTemperature() + String("C"));
}
if ( (bme.readTemperature() > 29 ) && (millis() > EMail+3000 ) )
{
EMail = millis();
Blynk.email("XXXXXXX@gmail.com","Blynk",String("Warnung Temperatur gestiegen ")+bme.readTemperature() + String("°C"));
}
}
XXXXXXXX are correct data
how can you attach pictures?