2018-09-29

Esp8266 Bme280 als Arduino Tab.

Bme280.ino

// ****************************************************************
// Sketch Esp8266 Bme280 Modular(Tab)
// created: Jens Fleischer, 2018-06-03
// last mod: Jens Fleischer, 2018-09-29
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: Esp8266, Bme280, 2 x 4k7 Ohm Widerstand
// SCL an D1 = GPIO5
// SDA an D2 = GPIO4
// 4k7 Ohm Widerstand von VCC auf D1
// 4k7 Ohm Widerstand von VCC auf D2
// Getestet auf: Nodemcu, Wemos D1 Mini Pro
/******************************************************************
  Copyright (c) 2018 Jens Fleischer. All rights reserved.

  This file is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  This file is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
*******************************************************************/
// Diese Version von Bme280 sollte als Tab eingebunden werden.
// #include <ESP8266WebServer.h> muss im Haupttab aufgerufen werden
// Die Funktionalität des ESP8266 Webservers ist erforderlich.
// Die Funktion "bme280();" muss im Setup aufgerufen werden.
// Gib die Höhe in Meter über Meeresspiegel an deinem Standort an
/**************************************************************************************/

#include <Wire.h>
#include <BME280I2C.h>        // Version 2.3 https://www.github.com/finitespace/BME280

BME280I2C bme;                // Standard : Zwangsmodus, Standby-Zeit = 1000 ms

void bme280() {       // Funktionsaufruf "bme280();" muss im Setup eingebunden werden
  Wire.begin();
  if (!bme.begin()) {
    Serial.println("Keinen BME280 Sensor gefunden!");
  }
  server.on("/bme280", []() {
    server.send(200, "application/json", handleBme());
  });
}

String handleBme() {
  const int hoehe = 163;        // virtuelle Höhe in Meter über Meeresspiegel an deinem Standort anpassen
  float temp(NAN), hum(NAN), pres(NAN), sealevel;
  bme.read(pres, temp, hum, BME280::TempUnit_Celsius, BME280::PresUnit_hPa);
  sealevel = (pres / pow(1 - ((0.0065 * hoehe) / (temp + (0.0065 * hoehe) + 273.15)), 5.257));    // Berechnung relativer Luftdruck
  return (String)"[\"" + temp + "\",\"" + hum + "\",\"" + sealevel + "\"]";
}
  

Zurück