Update: 2020-05-26

Esp32 Bme280 als Arduino Tab.

Bme280.ino

// ****************************************************************
// Sketch Esp32 Bme280 Modular(Tab)
// created: Jens Fleischer, 2018-08-10
// last mod: Jens Fleischer, 2020-03-26
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: Esp32, Bme280, 2 x 4k7 Ohm Widerstand
// SDA an D21
// SCL an D22
// 4k7 Ohm Widerstand von VCC auf D21
// 4k7 Ohm Widerstand von VCC auf D22
// Getestet auf: ESP32 NodeMCU-32s
/******************************************************************
  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 <WebServer.h> müssen im Haupttab aufgerufen werden
// Die Funktionalität des ESP32 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()) {
    DEBUG_P("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, hum, pres, sealevel;
  BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);    //TempUnit_: Celsius, Fahrenheit
  BME280::PresUnit presUnit(BME280::PresUnit_hPa);        //PresUnit_: Pa, hPa, inHg, atm, bar, torr, psi
  bme.read(pres, temp, hum, tempUnit, presUnit);
  sealevel = (pres / pow(1 - ((0.0065 * hoehe) / (temp + (0.0065 * hoehe) + 273.15)), 5.257));    // Berechnung relativer Luftdruck
  return (String)"[\"" + temp + "\",\"" + hum + "\",\"" + sealevel + "\"]";
}

Die Webseite zum Esp32 Bme280 Tab.

bme280.html

<!DOCTYPE HTML> <!-- For more information visit: https://fipsok.de -->
<html lang="de">
   <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="style32.css">
      <title>Klimadaten</title>
      <script>
         function renew() {
         	fetch('/bme280').then(function (response) {
         		return response.json();
         	}).then(function (array) {
         		var elem = document.querySelector('#temp');
         		array[2] != 'nan' ? elem.innerHTML = array[0] + '°C' : elem.innerHTML = '---------';
         		elem = document.querySelector('#hum');
         		array[2] != 'nan' ? elem.innerHTML = array[1] + ' %' : elem.innerHTML = 'Fehler';
         		elem = document.querySelector('#pres');
         		array[2] != 'nan' ? elem.innerHTML = array[2] + ' hPa' : elem.innerHTML = '---------';
         	});
         }
         document.addEventListener('DOMContentLoaded', renew);
         setInterval(renew, 1000)      
      </script>
      <style>
         body {
         padding: 10px;
         font-size: 3em;
         }
         section {
         align-items: center;
         background-color: black;
         width: 290px;
         height: 180px;
         border: .15em solid #909294;
         box-shadow: 5px 10px 5px #5a5a5b;
         border-radius: .2em;
         }
         span {
         color: #00ff05;
         position: relative;
         top: 0.2em;
         left: .1em;
         font-weight: bold
         }
      </style>
   </head>
   <body>
      <section>
         <span id="temp"></span>
         <span id="hum"></span>
         <span id="pres"></span>
      </section>
   </body>
</html>