Hallo zusammen,
seit Wochen beschäftige ich mich meinem Projekt, dass mich an den Rand der Verzweifelung gebracht hat. Meine Hardware stellt sich aus dem ESP 8266 D1 Mine Wemos, einem Taster als Reedkontaktersatz und LCD Display Themperatur Sensor DHT 22 und einer LED zusammen.
Bei meinem Projekt habe ich einen Reedkontakt (Taster) an mein Badfenster angebaut,
damit ich sehen kann, ob die Badfenster verschlossen ist oder offen.
Über den Taster lasse mir den Status anzeigen, ob das Fenster offen oder geschlossen ist.
Desweitern habe ich einen Temperatursensor (DHL 22) angeschlossen und mir den Wert der Temperatur auf einer Webseite und auf dem LCD-Display anzeigen zulassen. Das funkuniert auch so weit alles.
Nun meine Frage: wie kann man in den Sketch folgendes einbinden, ich möchte gerne das, wenn die Temperatur unter 20 Grad ist eine Meldung bekomme. Dann sollte auf dem LCD-Display und auf der Webseite stehen „Fenster schließen „, und der Piezo summer (Buzzer) soll ertönen.
Da ich noch blutiger Anfänger bin und gar nicht mehr weiter komme, hätte ich gerne eure Hilfe. Danke im vorraus.
Mein Sender Code`
#include <ESP8266WebServer.h>
#include "DHT.h"
#define sensor DHT22
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x3F for a 16 chars and 2 line display
// DHT22: PIN 1: VCC mit 3,3 oder 5V verbinden (funzte beides)
// PIN 2: Data mit D2 oder D6 funktioniert es, an D8 auch aber dann lässt sich der ESP8266 nicht mehr flashen. Spannungsteiler mit 10K Widerstand
// Siehe Zeichnung wemos_d1_mini_dht22_bb.jpg im Verzeichnis dieses Skriptes
// PIN 3: NC bleibt unbelegt
// PIN 4: GND mit Masse / G verbinden
// Typ des Sensors, hier DHT22
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// Zugangsdaten zum WLAN:
const char* ssid = "xxxx";
const char* password = "xxxxx";
ESP8266WebServer server(80);
// DHT Sensor
// PIN mit dem "Data" des DHT22 verbunden ist
// uint8_t DHTPin = D2;
uint8_t DHTPin = 12;
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);
float Temperature;
float Humidity;
const int BUZZER = 13;
int d0 =16;//Taster
int d0_Status = 0;
const int ledPin = 14; //Led Gelb
//const int ledPin2 = 0; //Led Rot
//int TasterLesen;
int ledState = LOW;
unsigned long previousMillis = 0;
const long intervalAN = 150;// Zeit Led an
const long intervalAUS = 2000; // Zeit aus
void setup() {
Serial.begin(115200);
delay(100);
pinMode(DHTPin, INPUT);
dht.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
//connect to your local wi-fi network
WiFi.begin(ssid, password);
//check wi-fi is connected to wi-fi network
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());
server.on("/", handle_OnConnect);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("HTTP server started");
lcd.begin(); //Display einschalten
lcd.clear();
lcd.backlight();
pinMode(BUZZER, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode (d0,INPUT);
}
void blinken(){
bool d0_Status = digitalRead(d0);
if (d0_Status == HIGH){ //Taster gesclossen
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= intervalAUS) {
previousMillis = currentMillis;
ledState = HIGH;
digitalWrite(ledPin, ledState);
} else if (currentMillis - previousMillis >= intervalAN) {
//previousMillis = currentMillis;
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}
}
void loop() {
server.handleClient();
blinken();
lcd.setCursor(0,0);
lcd.print("AkLuftf: ");
lcd.print(Humidity);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print("AkThemp: ");
lcd.print(Temperature);
lcd.print(" \337C");
lcd.setCursor(0,2);
d0_Status = digitalRead(d0);
if (d0_Status == HIGH)lcd.print("Fenster offen ");
else lcd.print("Fenster geschlossen");
// d0_Status = digitalRead(d0);
//if (d0_Status && Temperature = 20){ //Wenn Fenster offen ist und eine Temperatur unter 20 Grad dann sollen der Buzzer piepsen
//und eine Meldung auf der Webseite erscheinen " Fenster schliesen".
// digitalWrite(BUZZER, HIGH); //turn on the buzzer
// delay(250);
// digitalWrite(BUZZER, LOW); //turn off the buzzer
// delay(250);
}
void handle_OnConnect() {
Temperature = dht.readTemperature(); // Gets the values of the temperature
Humidity = dht.readHumidity(); // Gets the values of the humidity
server.send(200, "text/html", SendHTML(Temperature,Humidity));
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
String SendHTML(float Temperaturestat,float Humiditystat){
String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
ptr +="<title>ESP8266 Badezimmer</title>\n";
ptr +="<meta http-equiv=\"refresh\" content=\"2\" >";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<div id=\"webpage\">\n";
ptr +="<h1>ESP8266 Badezimmer </h1>\n";
ptr +="<p>Aktulle Temperatur: ";
ptr +=(int)Temperaturestat;
ptr +=" C</p>";
ptr +="<p>Luftfeuchtigkeit: ";
ptr +=(int)Humiditystat;
ptr +=" %</p>";
ptr +="</div>\n";
ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}
tippe oder füge den Code hier ein