Sie sind auf Seite 1von 3

#include <Adafruit_BME280.

h>
#include <WebServer.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET -1
#define BMP_SDA 22 // Pin für SDA (Datenleitung)
#define BMP_SCL 21 // Pin für SCL (Taktleitung)
#define RAIN_SENSOR_PIN 13 // Pin für den Tropfensensor

//Defaultwert für OLED Display setzen


Adafruit_SSD1306 display(OLED_RESET);

//Werte für Connection mit Hotspot


const char* ssid = "hotspot";
const char* password = "passwort";
WebServer server(80);

// Initialisiere den BME280-Sensor


Adafruit_BME280 bme;

//Werte die ausgegeben werden


float temperature, humidity, pressure;

//wenn "/" in URL vorkommt wird diese Funktion aufgerufen - Daten werden an Server
gesendet und ausgegeben
void handleRoot() {
String message = "Temperature: " + String(temperature) + " C\n";
message += "Humidity: " + String(humidity) + " %\n";
message += "Pressure: " + String(pressure) + " hPa\n";

server.send(200, "text/plain", message);


}

//Funktion die den Fehlerfall - server.onNotFound(handleNotFound); - aus dem Setup


behandelt
//wenn die Verbindung zum Server nicht funktionieren sollte
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}

void setup() {
//Display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Adressierung beachten, hier 0x3C!
Serial.begin(115200);

//Wifi verbindung erstellen mit oben deklarierten Werten für ssid und passwort
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");

//Webserver
//Auf Verbindung mit Webserver warten
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

//Ausgabe auf Serial Monitor - Infos um Handy mit Server verbinden zu können
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

//beim Symbol "/" in der URL wird handleRoot aufgerufen


server.on("/", handleRoot);
server.on("/inline", []() {
server.send(200, "text/plain", "this works as well");
});

//falls Serververbindung nicht funktionieren sollte -> handleNotFound funktion


wird aufgerufen
server.onNotFound(handleNotFound);

Wire.begin(BMP_SDA, BMP_SCL); // Initialisiere die I2C-Verbindung mit den


angegebenen Pins

server.begin();
Serial.println("HTTP server started");
unsigned status;
status = bme.begin(0x76);

// status = bme.begin(0x76, &Wire2)


//falls bme.begin nichts liefert wird der Fehlerfall auf dem Serial Monitor
erklärt
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring,
address, sensor ID!");
Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180
or BMP 085\n");
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
Serial.print(" ID of 0x60 represents a BME 280.\n");
Serial.print(" ID of 0x61 represents a BME 680.\n");
while (1) delay(10);
}
}

void loop() {
//Display wird gecleart und dann werden die Values in die jeweiligen Zeilen
(SetCursor) geschrieben
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(23, 0);
display.println("Temp: " + String(temperature) + " C");
display.setCursor(23, 12);
display.println("Humi: " + String(humidity) + " %");
display.setCursor(23, 24);
display.println("Pres: " + String(pressure) + " hPa");
display.display();

//server wartet auf Client anfrage und beginnt dann die Website aufzubauen
server.handleClient();
delay(2); // Notwendig für die CPU

//jeweilige Werte vom bme Sensor einlesen


temperature = bme.readTemperature();
humidity = bme.readHumidity();
pressure = bme.readPressure() / 100.0F; // Druck in hPa
}

Das könnte Ihnen auch gefallen