From a44accafeeb2b71f158d94f80d17cefe52401381 Mon Sep 17 00:00:00 2001
From: SV-Zanshin <Zanshin@SV-Zanshin.Com>
Date: Wed, 27 May 2020 13:15:33 +0200
Subject: [PATCH 01/49] Update SDLoggerSPIDemo.ino

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index 679e4ab..86219fe 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -70,7 +70,7 @@ Version | Date       | Developer                     | Comments
 ** Declare all program constants                                                                                  **
 *******************************************************************************************************************/
 const uint8_t   BME_680_SPI_CS_PIN =            SS; ///< Use the standard SS pin for the BME680
-const uint8_t   SD_CARD_SPI_CS_PIN =            24; ///< Use Pin A6 for the SD Card
+const uint8_t   SD_CARD_SPI_CS_PIN =            24; ///< Use Pin A6/D4 for the SD Card
 const uint32_t  SERIAL_SPEED       =        115200; ///< Set the baud rate for Serial I/O
 const uint8_t   NUMBER_READINGS    =            10; ///< Number of readings to average
 const uint32_t  LONG_DELAY         =         10000; ///< Long delay in milliseconds - 10 seconds

From 056791d99b1af27b40e933727aabfc92f7a26884 Mon Sep 17 00:00:00 2001
From: Zanshin <Arnd_Github@SV-Zanshin.com>
Date: Wed, 27 May 2020 13:35:28 +0200
Subject: [PATCH 02/49] Update SDLoggerSPIDemo.ino

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index 86219fe..8b66cfe 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -28,7 +28,7 @@ This example program was designed as a simple data logger which defaults to meas
 Once either the temperature, pressure or humidity changes at a rate above that set in the constants TEMPERATURE_TRIP,
 PRESSURE_TRIP or HUMIDITY_TRIP then the measurement rate is sped up to read every second and to read more accurately.
 This was intended as a data logger inside a refrigerator or freezer, where most of the time there are constant 
-values but when the door is opened or the anti-icing cycle kicks in then readings need to be done more often.
+values but when the door is opened or the defrosting cycle kicks in then readings need to be done more often.
  
 This example program initializes the BME680 to use SPI for communications. The library does not using floating
 point numbers to save on memory space and computation time. The values for Temperature, Pressure and Humidity are

From 27dd60f73ff09e3f8f8b6b509430532dcd01d25c Mon Sep 17 00:00:00 2001
From: Zanshin <Arnd_Github@SV-Zanshin.com>
Date: Wed, 27 May 2020 13:36:10 +0200
Subject: [PATCH 03/49] Check signature on commit

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index 8b66cfe..e9e4c7e 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -63,7 +63,7 @@ Version | Date       | Developer                     | Comments
 1.0.0b  | 2020-05-22 | https://github.com/SV-Zanshin | Cloned from original SPIDemo program and modified
 */
 #include "Zanshin_BME680.h" // Include the BME680 Sensor library
-#include <SPI.h>            // Include the SPI standard library (it is also included in the BME680 library)    
+#include <SPI.h>            // Include the SPI standard library (also included in the BME680 library)    
 #include <SD.h>             // Include the SD Card standard library
 
 /*******************************************************************************************************************

From 2843e6d35ddde46e907181ce0bae7793ddc1b895 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Wed, 27 May 2020 13:44:15 +0200
Subject: [PATCH 04/49] Checking GPG

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index e9e4c7e..0ab6e0c 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -145,10 +145,10 @@ void setup()
             and then control goes to the main "loop()" method, from which control never returns
   @return   void
   */
-  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
-  digitalWrite(BME_680_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
   pinMode(BME_680_SPI_CS_PIN, OUTPUT);              // Declare the Chip-Select pin for the BME680 as output
   pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);              // Declare the Chip-Select pin for the SD Card as output
+  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
+  digitalWrite(BME_680_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
   Serial.begin(SERIAL_SPEED);                       // Start serial port at Baud rate
   #ifdef  __AVR_ATmega32U4__                        // If this is a 32U4 processor, 
     delay(3000);                                    // then wait 3 seconds to initialize USB port

From a31a7eb1376286b7abe339941c0a84ae0e65c494 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Wed, 27 May 2020 13:47:19 +0200
Subject: [PATCH 05/49] Test commit for checking GPG key

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index 0ab6e0c..090104e 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -200,7 +200,8 @@ void loop()
   */
   if (loopCounter % 25 == 0)                                                             // Header every 25 loops
   {                                                                                      //
-    Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol
+    Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n"
+                    "==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol
   } // if-then time to show headers                                                      //
   idx = (idx+1) % NUMBER_READINGS;                                                       // increment and clamp
   BME680.getSensorData(data[idx].temperature, data[idx].humidity,                        // Read once at beginning

From 65e89d3396e85328f56784f62eb19e133d8ff5db Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Thu, 28 May 2020 13:26:31 +0200
Subject: [PATCH 06/49] commented out serial on SDLoggerSPIDemo program, test
 upload to Travis-CI for other platforms

---
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 21 +++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index 090104e..e7d48c7 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -66,11 +66,24 @@ Version | Date       | Developer                     | Comments
 #include <SPI.h>            // Include the SPI standard library (also included in the BME680 library)    
 #include <SD.h>             // Include the SD Card standard library
 
+//#define SERIAL_ATTACHED     // When commented out then no output is done to the serial port
+#ifndef SERIAL_ATTACHED
+// disable Serial output
+#define Serial SomeOtherwiseUnusedName
+static class {
+public:
+  void begin(...) {}
+  void print(...) {}
+  void println(...) {}
+} Serial;
+#endif
+
 /*******************************************************************************************************************
 ** Declare all program constants                                                                                  **
 *******************************************************************************************************************/
 const uint8_t   BME_680_SPI_CS_PIN =            SS; ///< Use the standard SS pin for the BME680
 const uint8_t   SD_CARD_SPI_CS_PIN =            24; ///< Use Pin A6/D4 for the SD Card
+const uint8_t   LED_PIN            =   LED_BUILTIN; ///< Built-in LED pin
 const uint32_t  SERIAL_SPEED       =        115200; ///< Set the baud rate for Serial I/O
 const uint8_t   NUMBER_READINGS    =            10; ///< Number of readings to average
 const uint32_t  LONG_DELAY         =         10000; ///< Long delay in milliseconds - 10 seconds
@@ -147,10 +160,12 @@ void setup()
   */
   pinMode(BME_680_SPI_CS_PIN, OUTPUT);              // Declare the Chip-Select pin for the BME680 as output
   pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);              // Declare the Chip-Select pin for the SD Card as output
+  pinMode(LED_PIN, OUTPUT);                         // Declare the builtin LED to be an output
   digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
   digitalWrite(BME_680_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
+  digitalWrite(LED_PIN, LOW);                       // Turn off the LED
   Serial.begin(SERIAL_SPEED);                       // Start serial port at Baud rate
-  #ifdef  __AVR_ATmega32U4__                        // If this is a 32U4 processor, 
+  #ifdef __AVR_ATmega32U4__                         // If this is a 32U4 processor, 
     delay(3000);                                    // then wait 3 seconds to initialize USB port
   #endif                                            
   Serial.print(F("Starting SDLoggerSPIDemo example program for BME680\n- Initializing BME680 sensor\n"));
@@ -200,8 +215,8 @@ void loop()
   */
   if (loopCounter % 25 == 0)                                                             // Header every 25 loops
   {                                                                                      //
-    Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n"
-                    "==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol
+    Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n"  // Show header plus the 
+                   "==== ====== ====== ========= ======= ====== =========\n"));          // unicode "°C" symbol
   } // if-then time to show headers                                                      //
   idx = (idx+1) % NUMBER_READINGS;                                                       // increment and clamp
   BME680.getSensorData(data[idx].temperature, data[idx].humidity,                        // Read once at beginning

From 9e17fe7502c5e6384ffa54338e530ec4da5bad14 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 29 May 2020 14:56:12 +0200
Subject: [PATCH 07/49] Update README.md

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 257a84b..7e31a66 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680)
+# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) 
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 
 | Supplier  | Image |  Instructions | Comments |

From 18a440c7b5054dcfc5bccf6ab8fef2b6973a950f Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Sun, 31 May 2020 13:41:03 +0200
Subject: [PATCH 08/49] Initial Commit of ESP32FeatherWiFiDemo program

---
 examples/ESP32FeatherWiFiDemo/.due.test.skip  |   0
 .../ESP32FeatherWiFiDemo/.esp8266.test.skip   |   0
 .../ESP32FeatherWiFiDemo/.leonardo.test.skip  |   0
 examples/ESP32FeatherWiFiDemo/.m4.test.skip   |   0
 .../ESP32FeatherWiFiDemo/.mega2560.test.skip  |   0
 examples/ESP32FeatherWiFiDemo/.uno.test.skip  |   0
 examples/ESP32FeatherWiFiDemo/.zero.test.skip |   0
 .../ESP32FeatherWiFiDemo/Authentication.h     |   3 +
 .../ESP32FeatherWiFiDemo.ino                  | 258 ++++++++++++++++++
 .../ESP32FeatherWiFiDemo/WebPageContents.h    | 157 +++++++++++
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino  |  22 +-
 11 files changed, 436 insertions(+), 4 deletions(-)
 create mode 100644 examples/ESP32FeatherWiFiDemo/.due.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.esp8266.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.leonardo.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.m4.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.mega2560.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.uno.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/.zero.test.skip
 create mode 100644 examples/ESP32FeatherWiFiDemo/Authentication.h
 create mode 100644 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
 create mode 100644 examples/ESP32FeatherWiFiDemo/WebPageContents.h

diff --git a/examples/ESP32FeatherWiFiDemo/.due.test.skip b/examples/ESP32FeatherWiFiDemo/.due.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.esp8266.test.skip b/examples/ESP32FeatherWiFiDemo/.esp8266.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.leonardo.test.skip b/examples/ESP32FeatherWiFiDemo/.leonardo.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.m4.test.skip b/examples/ESP32FeatherWiFiDemo/.m4.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.mega2560.test.skip b/examples/ESP32FeatherWiFiDemo/.mega2560.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.uno.test.skip b/examples/ESP32FeatherWiFiDemo/.uno.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/.zero.test.skip b/examples/ESP32FeatherWiFiDemo/.zero.test.skip
new file mode 100644
index 0000000..e69de29
diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h
new file mode 100644
index 0000000..9f5c9ae
--- /dev/null
+++ b/examples/ESP32FeatherWiFiDemo/Authentication.h
@@ -0,0 +1,3 @@
+#pragma once
+const char* WIFI_SSID     = "YourNetworkNameGoesHere"; ///< Network to connect to
+const char* WIFI_PASSWORD = "EnterPasswordHere";       ///< Network authentication code
diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
new file mode 100644
index 0000000..7ed8e28
--- /dev/null
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -0,0 +1,258 @@
+/*! @file ESP32FeatherWiFiDemo.ino
+
+@section ESP32FeatherWiFiDemo_intro_section Description
+
+Example program for using an Arduino ESP32 based system (this sketch was developed and tested on a ESP32 Huzzah32 
+Feather board from https://www.adafruit.com/product/3405) along with a BME680 connected via I2C to monitor the
+temperature, pressure and humidity and report the values in a dynamic chart on a web page hosted by the ESP32
+and connected to a local network.
+
+Prior to compiling the program, the contents of the include file "Authentication.h" need to be updated to reflect 
+the local WiFi network to use and the corresponding authentication code.
+
+Once started, the IP-Address is set by the WiFi router and displayed on the serial output of the ESP32, this IP
+address should then be entered as the URL in a web browser of a computer attached to the same network and the 
+data should be presented there, updated every 5 seconds.
+
+The Bosch BME680 sensor measures temperature, pressure, humidity and air quality and is described at
+https://www.bosch-sensortec.com/bst/products/all_products/BME680. The datasheet is available from Bosch at 
+https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME680_DS001-11.pdf \n\n
+
+The most recent version of the BME680 library is available at https://github.com/SV-Zanshin/BME680 and the
+documentation of the library as well as example programs are described in the project's wiki pages located at
+https://github.com/SV-Zanshin/BME680/wiki. \n\n
+
+The BME680 is an extremely small physical package that is so tiny as to be impossible to solder at home, hence it
+will be used as part of a third-party breakout board. There are several such boards available at this time, for
+example \n
+Company  | Link
+-------  | ----------
+Sparkfun | https://www.sparkfun.com/products/14570
+BlueDot  | https://www.bluedot.space/sensor-boards/bme680/
+Adafruit | https://learn.adafruit.com/adafruit-BME680-humidity-barometric-pressure-temperature-sensor-breakout \n\n
+
+Bosch supplies sample software that runs on various platforms, including the Arduino family; this can be downloaed
+at https://github.com/BoschSensortec/BSEC-Arduino-library . This software is part of the Bosch "BSEC" (Bosch
+Sensortec Environmental Cluster) framework and somewhat bulky and unwieldy for typical Arduino applications, hence
+the choice to make a more compact and rather less abstract library.
+
+The pressure reading needs to be adjusted for altitude to get the adjusted pressure reading. There are numerous
+sources on the internet for formulae converting from standard sea-level pressure to altitude, see the data sheet
+for the BME180 on page 16 of http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf. Rather than put a
+floating-point function in the library which may not be used but which would use space, an example altitude
+computation function has been added to this example program to show how it might be done.
+
+@section ESP32FeatherWiFiDemolicense License
+
+This program is free software: you can redistribute it and/or modify it under the terms of the GNU General
+Public License as published by the Free Software Foundation, either version 3 of the License, or (at your
+option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+@section ESP32FeatherWiFiDemoauthor Author
+
+Written by Arnd\@SV-Zanshin
+
+@section ESP32FeatherWiFiDemoversions Changelog
+
+Version | Date       | Developer                     | Comments
+------- | ---------- | ----------------------------- | -------------------------------------------
+1.0.0b  | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding
+*/
+
+#if !defined(ESP32)
+  #error This example program is designed specifically for the ESP32 platform and might not work on other platforms
+#endif
+
+/*******************************************************************************************************************
+** Declare all include files required                                                                             **
+*******************************************************************************************************************/
+#include <SPI.h>                                     ///< Include the SPI standard library
+#include <SD.h>                                      ///< Include the SD Card standard library
+#include <WiFi.h>                                    ///< ESP32 WiFi Library
+#include <WiFiClient.h>                              ///< WiFi Client library 
+#include <WebServer.h>                               ///< WiFi Web Server library
+#include "WebPageContents.h"                         ///< Include external HTML and JavaScript definitions
+#include "Authentication.h"                          ///< Contains the network SSID and authentication code
+#include "Zanshin_BME680.h"                          ///< The BME680 sensor library
+
+/*******************************************************************************************************************
+** Declare all program constants                                                                                  **
+*******************************************************************************************************************/
+const uint32_t  SERIAL_SPEED       =         115200; ///< Set the baud rate for Serial I/O
+const uint8_t   POWER_PIN          =            A13; ///< Supply voltage through a divider
+const uint8_t   LED_PIN            =             13; ///< This pin is the on-board red LED
+const uint8_t   SD_CARD_SPI_CS_PIN =             21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select
+const uint8_t   SD_CARD_SPI_CD_PIN =             A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect
+const char*     FILE_NAME          = "/BME_680.csv"; ///< Filename on SD-Card
+const uint32_t  SD_LOG_INTERVAL    =           1000; ///< Milliseconds between measurements to SD-Card
+const uint8_t   SD_FLUSH_INTERVAL  =             60; ///< do a "flush" after this number of writes
+
+/*******************************************************************************************************************
+** Declare all program macros                                                                                     **
+*******************************************************************************************************************/
+#define VOLTAGE (analogRead(POWER_PIN)/4095.0*3.3*2*1.1) ///< Macro for floating point voltage
+/*******************************************************************************************************************
+** Declare all global variables                                                                                   **
+*******************************************************************************************************************/
+WebServer    server(80);                             ///< Instantiate a web server on port 80
+BME680_Class BME680;                                 ///< Create an instance of the BME680 class
+File         dataFile;                               ///< Class for a SD-Card file
+int32_t      temperature;                            ///< BME680 temperature value
+int32_t      humidity;                               ///< BME680 humidity value
+int32_t      pressure;                               ///< BME680 pressure value
+int32_t      gas;                                    ///< BME680 gas resistance value
+int32_t      start_pressure;                         ///< Initial pressure reading
+bool         sd_card_present = false;                ///< Switch set when SD-Card detected
+String       jsonData;                               ///< JSON data string 
+uint16_t     loopCounter = 0;                        ///< Counter for number of write operations since startup
+uint32_t     next_log_millis;                        ///< Millis() value for next SD-Card measurement
+
+void setup()
+{
+  pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);               // Declare the Chip-Select pin for the SD Card as output
+  pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP);         // Declare the Carrier detect pin for the SD Card as input
+  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);            // Write a high value to it in order to deselect device
+  pinMode(LED_PIN, OUTPUT);                          // make the LED an output pin
+  Serial.begin(115200);
+  Serial.print(F("Starting ESP32FeatherWiFiDemo example program for BME680\n"));
+  /**********************
+  ** Initialize BME680 **
+  **********************/
+  Serial.print(F("- Initializing BME680 sensor\n"));
+  while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found
+  {
+    Serial.print(F("-  Unable to find BME680. Trying again in 5 seconds.\n"));
+    delay(5000);
+  } // of loop until device is located
+  Serial.print(F("- Setting 16x oversampling for all sensors\n"));
+  BME680.setOversampling(TemperatureSensor, Oversample16);           // Use enumerated type values to set value
+  BME680.setOversampling(HumiditySensor, Oversample16);              // Use enumerated type values to set value
+  BME680.setOversampling(PressureSensor, Oversample16);              // Use enumerated type values to set value
+  Serial.print(F("- Setting IIR filter to a value of 4 samples\n"));
+  BME680.setIIRFilter(IIR4); // Use enumerated type values
+  Serial.print(F("- Turning off gas measurements\n"));
+  BME680.setGas(0, 0);                                               // Setting either to 0 turns off gas measurement
+  BME680.getSensorData(temperature, humidity, start_pressure, gas);  // Get most recent readings
+  /***************************************************************
+  ** Initialize SD-Card for logging, if not found then continue **
+  ***************************************************************/
+  Serial.print(F("- Checking to see if SD Card connected\n"));
+  if (!digitalRead(SD_CARD_SPI_CD_PIN))
+  {
+    sd_card_present = false; // if pin is high then no card inserted
+  }
+  else
+  {
+    uint8_t loopCounter = 10;                                          ///< countdown to 0 to detect car
+    while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN))             //  Try to start card using SPI
+    {
+      Serial.print(F("-  Unable to find SD Card. Trying again in 5 seconds.\n"));
+      for (uint8_t i = 0; i < 50; i++)
+      {
+        digitalWrite(LED_PIN, !digitalRead(LED_PIN));
+        delay(100);
+      } // loop to toggle LED light 10 times
+    } // of loop until device is located
+    if (loopCounter) sd_card_present = true;
+  } // if-then card is inserted
+  if (!sd_card_present)
+  {
+    Serial.print(F("- No SD-Card detected, continuing\n"));
+  }
+  else
+  {
+    Serial.print(F("- SD-Card Initialized\n"));
+    dataFile = SD.open(FILE_NAME, FILE_WRITE);        // Open the logfile for writing and position to end-of-file
+    if (!dataFile)
+    {
+      Serial.print(F("Unable to open file \""));
+      Serial.print(FILE_NAME);
+      Serial.print(F("\" on SD-Card. Error. Skipping SD writes."));
+      sd_card_present = false; // turn off card
+    }
+    else
+    {
+      Serial.print(F("- File \""));
+      Serial.print(FILE_NAME);
+      Serial.print(F("\" successfully opened. Appending data.\n"));
+      dataFile.print("Counter,Seconds,SupplyVoltage,Temperature,Humidity,Pressure\n");
+    } // if-then-else the file could be opened
+  } // if-then-else SD-Card located
+  /**********************************************
+  ** Connect to the specified wireless network **
+  **********************************************/
+  Serial.print(F("- Connecting to Wireless network \""));
+  Serial.print(WIFI_SSID);
+  Serial.print(F("\"."));
+  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);   // Connect to the specified WiFi router
+  while (WiFi.status() != WL_CONNECTED)   // Loop until the connection is established
+  {
+    delay(1000);                          // wait one second before trying again
+    Serial.print("."); 
+  } // for-next connection not established
+  WiFi.setHostname("BME680");             // Give our device a name
+  // Show connection data
+  Serial.print("\n- Open browser to IP address \"");
+  Serial.print(WiFi.localIP());
+  Serial.print("\"\n- or to \"http://BME680\" to view data.\n");
+  server.on("/", handleRoot);       // Routine for root page call
+  server.on("/readADC", handleADC); // Page called by AJAX
+  server.begin();                   //Start server
+  Serial.println("HTTP server started");
+} // of method "setup()"
+
+void handleRoot() 
+{
+  //===============================================================
+  // This routine is executed when you open its IP in browser
+  //===============================================================
+  String s = MAIN_page; //Read HTML contents
+  server.send(200, "text/html", s); //Send web page
+} // of method "handleRoot()"
+
+void handleADC()
+{
+  server.send(200, "text/plain", jsonData);                        // Send JSON to client ajax request
+}
+
+void loop()
+{
+  server.handleClient();          // Handle client requests
+  if (millis() > next_log_millis)
+  {
+    next_log_millis = millis() + SD_LOG_INTERVAL; // set next timer
+    getSensorData();                              // get the BME680 data
+  } // if-then time to get a measurement
+} // of method "loop()"
+
+void getSensorData()
+{
+  Serial.print(".");
+  digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED each loop
+  BME680.getSensorData(temperature, humidity, pressure, gas); // Get the most recent readings from the BME680
+  if (sd_card_present)                                        // Log data to the SD-Card, if present
+  {
+    dataFile.print(++loopCounter);
+    dataFile.print(",");
+    dataFile.print(millis() / 1000);
+    dataFile.print(",");
+    dataFile.print(VOLTAGE);
+    dataFile.print(",");
+    dataFile.print(temperature /  100.0, 2);
+    dataFile.print(",");
+    dataFile.print(humidity    / 1000.0, 2);
+    dataFile.print(",");
+    dataFile.println(pressure    /  100.0, 2);
+    if (loopCounter % SD_FLUSH_INTERVAL == 0)
+    {
+      dataFile.flush();
+      Serial.print("\nFlushed data to SD-Card\n");
+    } // flush the buffer
+  } // if-then SD card is present       
+  jsonData = "{\"SupplyVoltage\":\"" + String(VOLTAGE) + "\", \"Temperature\":\"" +
+    String(temperature / 100.0) + "\", \"Humidity\":\"" + String(humidity / 1000.0) +
+    "\", \"Pressure\":\"" + String((start_pressure - pressure) / 100.0) + "\"}";
+} // of method "getSensorData()"
diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
new file mode 100644
index 0000000..60896e3
--- /dev/null
+++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
@@ -0,0 +1,157 @@
+const char MAIN_page[] PROGMEM = R"=====(
+  <!doctype html>
+  <html>
+  <head>
+    <title>ESP32 Feather BME680 WiFi Program</title>
+    <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>  
+    <style>
+    canvas{
+      -moz-user-select: none;
+      -webkit-user-select: none;
+      -ms-user-select: none;
+    }
+    #dataTable {
+      font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+      border-collapse: collapse;
+      width: 100%;
+    }
+    #dataTable td, #dataTable th {
+      border: 1px solid #ddd;
+      padding: 8px;
+    }
+    #dataTable tr:nth-child(even){background-color: #f2f2f2;}
+    #dataTable tr:hover {background-color: #ddd;}
+    #dataTable th {
+      padding-top: 12px;
+      padding-bottom: 12px;
+      text-align: left;
+      background-color: #4CAF50;
+      color: white;
+    }
+    </style>
+  </head>
+  <body>
+      <div style="text-align:center;"><img src="https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif" alt="Zanshin Logo"> <b>Zanshin</b></div>
+      <div class="chart-container" position: relative; height:350px; width:100%">
+          <canvas id="Chart" width="400" height="400"></canvas>
+      </div>
+  <div>
+    <table id="dataTable">
+      <tr><th>Time</th><th>Supply Voltage</th><th>Temperature &deg;C</th><th>Relative Humidity %</th><th>Pressure Pa</th></tr>
+    </table>
+  </div>
+  <br>
+  <br>  
+  
+  <script>
+  //Graphs visit: https://www.chartjs.org
+  var SupplyVoltage = [];
+  var Tvalues = [];
+  var Hvalues = [];
+  var Pvalues = [];
+  var timeStamp = [];
+  function showGraph()
+  {
+      var ctx = document.getElementById("Chart").getContext('2d');
+      var Chart2 = new Chart(ctx, {
+          type: 'line',
+          data: {
+              labels: timeStamp,
+              datasets: [{
+                  label: "SupplyVoltage",
+                  fill: false,
+                  backgroundColor: 'rgba( 243,18, 156 , 1)',
+                  borderColor: 'rgba( 243, 18, 156 , 1)',
+                  data: SupplyVoltage,
+              },{
+                  label: "Temperature",
+                  fill: false,
+                  backgroundColor: 'rgba( 243, 156, 18 , 1)',
+                  borderColor: 'rgba( 243, 156, 18 , 1)',
+                  data: Tvalues,
+              },
+              {
+                  label: "Humidity",
+                  fill: false,
+                  backgroundColor: 'rgba(156, 18, 243 , 1)',
+                  borderColor: 'rgba(156, 18, 243 , 1)',
+                  data: Hvalues,
+              }, 
+			  {
+                  label: "Pressure",
+                  fill: false,
+                  backgroundColor: 'rgba(156, 18, 243 , 1)',
+                  borderColor: 'rgba(156, 18, 243 , 1)',
+                  data: Pvalues,
+              }],
+          },
+          options: {
+              title: {
+                      display: true,
+                      text: "Real-Time BME680 Data Display"
+                  },
+              maintainAspectRatio: false,
+              elements: {
+              line: {
+                      tension: 0.5  // Smooth data lines
+                  }
+              }
+//			  ,
+//              scales: {
+//                      yAxes: [{
+//                          ticks: {
+//                              beginAtZero:true
+//                          }
+//                      }]
+//              }
+          }
+      });
+  }
+  window.onload = function() {
+    console.log(new Date().toLocaleTimeString());
+  };
+  
+  // Get a new measurement every 5 Seconds 
+  setInterval(function() {
+    getData();
+  }, 5000); // 5000ms update rate
+   
+  function getData() {
+    var xhttp = new XMLHttpRequest();
+    xhttp.onreadystatechange = function() {
+      if (this.readyState == 4 && this.status == 200) {
+       //Push the data in array
+    var time = new Date().toLocaleTimeString();
+    var txt = this.responseText;
+    var obj = JSON.parse(txt); //Ref: https://www.w3schools.com/js/js_json_parse.asp
+        SupplyVoltage.push(obj.SupplyVoltage);
+        Tvalues.push(obj.Temperature);
+        Hvalues.push(obj.Humidity);
+        timeStamp.push(time);
+        showGraph();  //Update Graphs
+      var table = document.getElementById("dataTable");
+      var row = table.insertRow(1); //Add after headings
+      var cell1 = row.insertCell(0);
+      var cell2 = row.insertCell(1);
+      var cell3 = row.insertCell(2);
+      var cell4 = row.insertCell(3);
+      var cell5 = row.insertCell(4);
+      cell1.innerHTML = time;
+      cell2.innerHTML = obj.SupplyVoltage;
+      cell3.innerHTML = obj.Temperature;
+      cell4.innerHTML = obj.Humidity;
+      cell5.innerHTML = obj.Pressure;
+      }
+    };
+    xhttp.open("GET", "readADC", true);
+    xhttp.send();
+  }
+  </script>
+  </body>
+  </html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>Untitled Document</title>
+  </head><body></body></html>
+)=====";
\ No newline at end of file
diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index e7d48c7..fbec078 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -163,7 +163,7 @@ void setup()
   pinMode(LED_PIN, OUTPUT);                         // Declare the builtin LED to be an output
   digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
   digitalWrite(BME_680_SPI_CS_PIN, HIGH);           // Write a high value to it in order to deselect device
-  digitalWrite(LED_PIN, LOW);                       // Turn off the LED
+  digitalWrite(LED_PIN, HIGH);                      // Turn on the LED
   Serial.begin(SERIAL_SPEED);                       // Start serial port at Baud rate
   #ifdef __AVR_ATmega32U4__                         // If this is a 32U4 processor, 
     delay(3000);                                    // then wait 3 seconds to initialize USB port
@@ -172,7 +172,11 @@ void setup()
   while (!BME680.begin(BME_680_SPI_CS_PIN))         // Start BME680 using hardware SPI protocol
   {
     Serial.print(F("-  Unable to find BME680. Trying again in 5 seconds.\n"));
-    delay(5000);
+    for (uint8_t i = 0; i < 50; i++)
+    {
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));
+      delay(100);
+    } // loop to toggle LED light 10 times
   } // of loop until device is located
   normalMode();
   BME680.getSensorData(data[idx].temperature, data[idx].humidity, data[idx].pressure, unused_gas);
@@ -182,7 +186,11 @@ void setup()
   while (!SD.begin(SD_CARD_SPI_CS_PIN)) // Start card using hardware SPI protocol
   {
     Serial.print(F("-  Unable to find SD Card. Trying again in 5 seconds.\n"));
-    delay(5000);
+    for (uint8_t i = 0; i < 50; i++)
+    {
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));
+      delay(100);
+    } // loop to toggle LED light 10 times
   } // of loop until device is located
   Serial.print(F("- SD-Card Initialized\n"));
   dataFile = SD.open(FILE_NAME, FILE_WRITE);        // Open the logfile for writing and position to end-of-file
@@ -203,6 +211,7 @@ void setup()
     data[i].humidity    = data[0].humidity;
     data[i].pressure    = data[0].pressure;
   } // of for-next each array element
+  digitalWrite(LED_PIN, LOW); // turn off LED
 } // of method setup()
 void loop() 
 {
@@ -286,6 +295,11 @@ void loop()
     (uint8_t)(data[idx].pressure % 100));
 
   dataFile.print(buf);
-  if (idx == 0) dataFile.flush();                                            // force a SD write every cycle
+  if (idx == 0)
+  {
+    digitalWrite(LED_PIN, HIGH); // turn on LED
+    dataFile.flush();                                            // force a SD write every cycle
+    digitalWrite(LED_PIN, LOW); // turn off LED
+  } // if-then time to flush buffer to SD-Card
   delay(delayTime);                                                  // Wait appropriate amount of time
 } // of method loop()
\ No newline at end of file

From 671f2ddb2313e0aeb484fdbfc38d64217cc37792 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sun, 31 May 2020 13:45:22 +0200
Subject: [PATCH 09/49] Created file to ignore this header

The header contains sensitive information, so is skipped on commits
---
 examples/ESP32FeatherWiFiDemo/.gitignore | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 examples/ESP32FeatherWiFiDemo/.gitignore

diff --git a/examples/ESP32FeatherWiFiDemo/.gitignore b/examples/ESP32FeatherWiFiDemo/.gitignore
new file mode 100644
index 0000000..265fb85
--- /dev/null
+++ b/examples/ESP32FeatherWiFiDemo/.gitignore
@@ -0,0 +1,10 @@
+########################################################################
+# This file defines which file types are to be ignroed and skipped by  #
+# git so that they are not transferred and committed.                  #
+#                                                                      #
+# Date       Author                        Comments                    #
+# ========== ============================= =========================== #
+# 2020-05-31 https://github.com/SV-Zanshin Ignore for authentication   #
+#                                                                      #
+########################################################################
+Authentication.h

From 1ab28fd2aba116f415d70b677b3c170790359dce Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sun, 31 May 2020 13:51:04 +0200
Subject: [PATCH 10/49] Added ignore for Authentication.h

File can contain sensitive information, don't commit
---
 .gitignore | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index fb86e28..57ef430 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,10 @@
 ########################################################################
-# This file defines which file types are to be ignroed and skipped by  #
+# This file defines which file types are to be ignored and skipped by  #
 # git so that they are not transferred and committed.                  #
 #                                                                      #
 # Date       Author                        Comments                    #
 # ========== ============================= =========================== #
+# 2020-05-31 https://github.com/SV-Zanshin Ignore for Authentication   #
 # 2019-02-02 https://github.com/SV-Zanshin Ignores for Doxygen         #
 # 2018-09-22 https://github.com/SV-Zanshin Ignores for MS VS 2017      #
 # 2018-06-24 https://github.com/SV-Zanshin Changed file                #
@@ -94,3 +95,7 @@ Release
 ########################################################################
 html
 
+########################################################################
+# Files that contain sensitive information                             #
+########################################################################
+Authentication.h

From f1b5e19789992ff35062ed7d1e1047298789e794 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Sun, 31 May 2020 13:53:18 +0200
Subject: [PATCH 11/49] Corrected Data

---
 examples/ESP32FeatherWiFiDemo/.gitignore       | 10 ----------
 examples/ESP32FeatherWiFiDemo/Authentication.h |  5 +++--
 2 files changed, 3 insertions(+), 12 deletions(-)
 delete mode 100644 examples/ESP32FeatherWiFiDemo/.gitignore

diff --git a/examples/ESP32FeatherWiFiDemo/.gitignore b/examples/ESP32FeatherWiFiDemo/.gitignore
deleted file mode 100644
index 265fb85..0000000
--- a/examples/ESP32FeatherWiFiDemo/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-########################################################################
-# This file defines which file types are to be ignroed and skipped by  #
-# git so that they are not transferred and committed.                  #
-#                                                                      #
-# Date       Author                        Comments                    #
-# ========== ============================= =========================== #
-# 2020-05-31 https://github.com/SV-Zanshin Ignore for authentication   #
-#                                                                      #
-########################################################################
-Authentication.h
diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h
index 9f5c9ae..d0a24a8 100644
--- a/examples/ESP32FeatherWiFiDemo/Authentication.h
+++ b/examples/ESP32FeatherWiFiDemo/Authentication.h
@@ -1,3 +1,4 @@
 #pragma once
-const char* WIFI_SSID     = "YourNetworkNameGoesHere"; ///< Network to connect to
-const char* WIFI_PASSWORD = "EnterPasswordHere";       ///< Network authentication code
+const char* WIFI_SSID = "Zanshin";     ///< Network to connect to
+const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code
+

From 9262f9823aa8e060a5c12179d96787a450a69b6b Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Sun, 31 May 2020 13:59:42 +0200
Subject: [PATCH 12/49] Update Authentication.h

---
 examples/ESP32FeatherWiFiDemo/Authentication.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h
index d0a24a8..3e188fd 100644
--- a/examples/ESP32FeatherWiFiDemo/Authentication.h
+++ b/examples/ESP32FeatherWiFiDemo/Authentication.h
@@ -1,4 +1,4 @@
 #pragma once
-const char* WIFI_SSID = "Zanshin";     ///< Network to connect to
-const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code
+const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to
+const char* WIFI_PASSWORD = "EnterPasswordHere";   ///< Network authentication code
 

From f702a242bfb602c61d33aa150e18e6c67fc12a9e Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Mon, 1 Jun 2020 14:04:10 +0200
Subject: [PATCH 13/49] Initial commit of ESP32FeatherWiFiDemo.ino

Initial program commit. Functioning prototype, but need to see what Travis CI has to say about it.
---
 .gitignore                                    |   6 +-
 .../ESP32FeatherWiFiDemo/Authentication.h     |   4 -
 .../ESP32FeatherWiFiDemo.ino                  | 198 +++++++++++-------
 .../ESP32FeatherWiFiDemo/WebPageContents.h    |  54 ++---
 4 files changed, 149 insertions(+), 113 deletions(-)
 delete mode 100644 examples/ESP32FeatherWiFiDemo/Authentication.h

diff --git a/.gitignore b/.gitignore
index 57ef430..3356502 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 #                                                                      #
 # Date       Author                        Comments                    #
 # ========== ============================= =========================== #
+# 2020-06-01 https://github.com/SV-Zanshin Removed ignore again        #
 # 2020-05-31 https://github.com/SV-Zanshin Ignore for Authentication   #
 # 2019-02-02 https://github.com/SV-Zanshin Ignores for Doxygen         #
 # 2018-09-22 https://github.com/SV-Zanshin Ignores for MS VS 2017      #
@@ -94,8 +95,3 @@ Release
 # Files and directories from Doxygen                                   #
 ########################################################################
 html
-
-########################################################################
-# Files that contain sensitive information                             #
-########################################################################
-Authentication.h
diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h
deleted file mode 100644
index 3e188fd..0000000
--- a/examples/ESP32FeatherWiFiDemo/Authentication.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to
-const char* WIFI_PASSWORD = "EnterPasswordHere";   ///< Network authentication code
-
diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index 7ed8e28..581854a 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -69,31 +69,29 @@ Version | Date       | Developer                     | Comments
 /*******************************************************************************************************************
 ** Declare all include files required                                                                             **
 *******************************************************************************************************************/
-#include <SPI.h>                                     ///< Include the SPI standard library
-#include <SD.h>                                      ///< Include the SD Card standard library
-#include <WiFi.h>                                    ///< ESP32 WiFi Library
-#include <WiFiClient.h>                              ///< WiFi Client library 
-#include <WebServer.h>                               ///< WiFi Web Server library
-#include "WebPageContents.h"                         ///< Include external HTML and JavaScript definitions
-#include "Authentication.h"                          ///< Contains the network SSID and authentication code
-#include "Zanshin_BME680.h"                          ///< The BME680 sensor library
+#include <SPI.h>                                    ///< Include the SPI standard library
+#include <SD.h>                                     ///< Include the SD Card standard library
+#include <WiFi.h>                                   ///< ESP32 WiFi Library
+#include <WiFiClient.h>                             ///< WiFi Client library 
+#include <WebServer.h>                              ///< WiFi Web Server library
+#include "WebPageContents.h"                        ///< Include external HTML and JavaScript definitions
+#include "Zanshin_BME680.h"                         ///< The BME680 sensor library
 
 /*******************************************************************************************************************
 ** Declare all program constants                                                                                  **
 *******************************************************************************************************************/
-const uint32_t  SERIAL_SPEED       =         115200; ///< Set the baud rate for Serial I/O
-const uint8_t   POWER_PIN          =            A13; ///< Supply voltage through a divider
-const uint8_t   LED_PIN            =             13; ///< This pin is the on-board red LED
-const uint8_t   SD_CARD_SPI_CS_PIN =             21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select
-const uint8_t   SD_CARD_SPI_CD_PIN =             A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect
-const char*     FILE_NAME          = "/BME_680.csv"; ///< Filename on SD-Card
-const uint32_t  SD_LOG_INTERVAL    =           1000; ///< Milliseconds between measurements to SD-Card
-const uint8_t   SD_FLUSH_INTERVAL  =             60; ///< do a "flush" after this number of writes
-
-/*******************************************************************************************************************
-** Declare all program macros                                                                                     **
-*******************************************************************************************************************/
-#define VOLTAGE (analogRead(POWER_PIN)/4095.0*3.3*2*1.1) ///< Macro for floating point voltage
+const char*    FILE_NAME          = "/BME_680.csv"; ///< Filename on SD-Card
+const char*    HOSTNAME           =       "BME680"; ///< Give the device a name
+const char*    WIFI_SSID          =      "Zanshin"; ///< Network SSID for connection
+const char*    WIFI_PASSWORD      =  "TANSTAAFl1!"; ///< Network authentication code
+const uint32_t SERIAL_SPEED       =         115200; ///< Set the baud rate for Serial I/O
+const uint8_t  POWER_PIN          =            A13; ///< Supply voltage through a divider
+const uint8_t  LED_PIN            =             13; ///< This pin is the on-board red LED
+const uint8_t  SD_CARD_SPI_CS_PIN =             21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select
+const uint8_t  SD_CARD_SPI_CD_PIN =             A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect
+const uint32_t SD_LOG_INTERVAL    =           1000; ///< Milliseconds between measurements to SD-Card
+const uint8_t  SD_FLUSH_INTERVAL  =             60; ///< do a "flush" after this number of writes
+const float    SEA_LEVEL_PRESSURE =        1013.25; ///< Standard atmosphere sea level pressure
 /*******************************************************************************************************************
 ** Declare all global variables                                                                                   **
 *******************************************************************************************************************/
@@ -108,48 +106,63 @@ int32_t      start_pressure;                         ///< Initial pressure readi
 bool         sd_card_present = false;                ///< Switch set when SD-Card detected
 String       jsonData;                               ///< JSON data string 
 uint16_t     loopCounter = 0;                        ///< Counter for number of write operations since startup
-uint32_t     next_log_millis;                        ///< Millis() value for next SD-Card measurement
+
+/*******************************************************************************************************************
+** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes   **
+** through a voltage divider the value is multiplied by 2. The register is 12-bit (0-4095) so we divide by 4095   **
+** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V. The formula is:     **
+**                         analogRead(POWER_PIN) / 4095.0 * 3.3v * 2 * 1.1v)                                      **
+*******************************************************************************************************************/
+#define VOLTAGE ( analogRead(POWER_PIN) / 4095.0 * 3.3 * 2 * 1.1) 
 
 void setup()
 {
-  pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);               // Declare the Chip-Select pin for the SD Card as output
-  pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP);         // Declare the Carrier detect pin for the SD Card as input
-  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);            // Write a high value to it in order to deselect device
-  pinMode(LED_PIN, OUTPUT);                          // make the LED an output pin
-  Serial.begin(115200);
-  Serial.print(F("Starting ESP32FeatherWiFiDemo example program for BME680\n"));
+  /*!
+  @brief    Arduino method called once at startup to initialize the system
+  @details  This is an Arduino IDE method which is called first upon boot or restart. It is only called one time
+            and then control goes to the main "loop()" method, from which control never returns. The BME680, then
+            the SD-Card (if present, if not present then it is ignored), then the Wi-Fi connection are initialized
+            and configured here.
+  @return   void
+  */
+  pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);                     // Declare the Chip-Select pin for the SD Card as output
+  pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP);               // Declare the Carrier detect pin for the SD Card as input
+  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);                  // Write a high value to it in order to deselect device
+  pinMode(LED_PIN, OUTPUT);                                // make the on-board LED an output pin so we can change it
+  Serial.begin(SERIAL_SPEED);                              // Start the Serial port with the specified speed
+  Serial.print("Starting ESP32FeatherWiFiDemo example program for BME680\n");
   /**********************
   ** Initialize BME680 **
   **********************/
-  Serial.print(F("- Initializing BME680 sensor\n"));
-  while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found
+  Serial.print("- Initializing BME680 sensor\n");
+  while (!BME680.begin(I2C_STANDARD_MODE))                 // Start BME680 using I2C, use first device found
   {
-    Serial.print(F("-  Unable to find BME680. Trying again in 5 seconds.\n"));
+    Serial.print("-  Unable to find BME680. Trying again in 5 seconds.\n");
     delay(5000);
   } // of loop until device is located
-  Serial.print(F("- Setting 16x oversampling for all sensors\n"));
-  BME680.setOversampling(TemperatureSensor, Oversample16);           // Use enumerated type values to set value
-  BME680.setOversampling(HumiditySensor, Oversample16);              // Use enumerated type values to set value
-  BME680.setOversampling(PressureSensor, Oversample16);              // Use enumerated type values to set value
-  Serial.print(F("- Setting IIR filter to a value of 4 samples\n"));
+  Serial.print("- Setting 16x oversampling for all sensors\n");
+  BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value
+  BME680.setOversampling(HumiditySensor, Oversample16);    // Use enumerated type values to set value
+  BME680.setOversampling(PressureSensor, Oversample16);    // Use enumerated type values to set value
+  Serial.print("- Setting IIR filter to a value of 4 samples\n");
   BME680.setIIRFilter(IIR4); // Use enumerated type values
-  Serial.print(F("- Turning off gas measurements\n"));
-  BME680.setGas(0, 0);                                               // Setting either to 0 turns off gas measurement
+  Serial.print("- Turning off gas measurements\n");
+  BME680.setGas(0, 0);                                     // Setting either to 0 turns off gas measurement
   BME680.getSensorData(temperature, humidity, start_pressure, gas);  // Get most recent readings
   /***************************************************************
   ** Initialize SD-Card for logging, if not found then continue **
   ***************************************************************/
-  Serial.print(F("- Checking to see if SD Card connected\n"));
+  Serial.print("- Checking to see if SD Card connected\n");
   if (!digitalRead(SD_CARD_SPI_CD_PIN))
   {
-    sd_card_present = false; // if pin is high then no card inserted
+    sd_card_present = false;                               // if pin is high then no card inserted
   }
   else
   {
-    uint8_t loopCounter = 10;                                          ///< countdown to 0 to detect car
-    while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN))             //  Try to start card using SPI
+    uint8_t loopCounter = 10;                              ///< countdown to 0 to detect car
+    while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN)) //  Try to start card using SPI
     {
-      Serial.print(F("-  Unable to find SD Card. Trying again in 5 seconds.\n"));
+      Serial.print("-  Unable to find SD Card. Trying again in 5 seconds.\n");
       for (uint8_t i = 0; i < 50; i++)
       {
         digitalWrite(LED_PIN, !digitalRead(LED_PIN));
@@ -160,83 +173,104 @@ void setup()
   } // if-then card is inserted
   if (!sd_card_present)
   {
-    Serial.print(F("- No SD-Card detected, continuing\n"));
+    Serial.print("- No SD-Card detected, continuing\n");
   }
   else
   {
-    Serial.print(F("- SD-Card Initialized\n"));
+    Serial.print("- SD-Card Initialized\n");
     dataFile = SD.open(FILE_NAME, FILE_WRITE);        // Open the logfile for writing and position to end-of-file
     if (!dataFile)
     {
-      Serial.print(F("Unable to open file \""));
+      Serial.print("Unable to open file \"");
       Serial.print(FILE_NAME);
-      Serial.print(F("\" on SD-Card. Error. Skipping SD writes."));
+      Serial.print("\" on SD-Card. Error. Skipping SD writes.");
       sd_card_present = false; // turn off card
     }
     else
     {
-      Serial.print(F("- File \""));
+      Serial.print("- File \"");
       Serial.print(FILE_NAME);
-      Serial.print(F("\" successfully opened. Appending data.\n"));
-      dataFile.print("Counter,Seconds,SupplyVoltage,Temperature,Humidity,Pressure\n");
+      Serial.print("\" successfully opened. Appending data.\n");
+      dataFile.print("Seconds,SupplyVoltage,Temperature,Humidity,Altitude\n");
     } // if-then-else the file could be opened
   } // if-then-else SD-Card located
   /**********************************************
   ** Connect to the specified wireless network **
   **********************************************/
-  Serial.print(F("- Connecting to Wireless network \""));
+  Serial.print("- Connecting to Wireless network \"");
   Serial.print(WIFI_SSID);
-  Serial.print(F("\"."));
+  Serial.print("\".");
   WiFi.begin(WIFI_SSID, WIFI_PASSWORD);   // Connect to the specified WiFi router
   while (WiFi.status() != WL_CONNECTED)   // Loop until the connection is established
   {
     delay(1000);                          // wait one second before trying again
     Serial.print("."); 
   } // for-next connection not established
-  WiFi.setHostname("BME680");             // Give our device a name
+  WiFi.setHostname(HOSTNAME);             // Give our device a name
   // Show connection data
   Serial.print("\n- Open browser to IP address \"");
   Serial.print(WiFi.localIP());
   Serial.print("\"\n- or to \"http://BME680\" to view data.\n");
-  server.on("/", handleRoot);       // Routine for root page call
-  server.on("/readADC", handleADC); // Page called by AJAX
-  server.begin();                   //Start server
-  Serial.println("HTTP server started");
-} // of method "setup()"
+  server.on("/", handleRoot);             // Routine for root page call
+  server.on("/readADC", handleADC);       // Page called by AJAX
+  server.begin();                         // Start server
+  Serial.print("HTTP server started\n");
+  digitalWrite(LED_PIN, false);           // Turn the LED off
 
+} // of method "setup()"
 void handleRoot() 
 {
-  //===============================================================
-  // This routine is executed when you open its IP in browser
-  //===============================================================
-  String s = MAIN_page; //Read HTML contents
-  server.send(200, "text/html", s); //Send web page
+  /*!
+  @brief    Called when a request is sent from a browser client
+  @details  When the ESP32 gets an IP address and that address is entered in a browser then this ISR get called to
+            handle that request. The response is to send the HTML page which is contained in the variable "MAIN_page"
+            which is set in the "WebPageContents.h" include file 
+  @return   void
+  */
+  String s = MAIN_page;             // Read HTML contents into a string
+  server.send(200, "text/html", s); // Send the string as HTML to the requester
 } // of method "handleRoot()"
-
 void handleADC()
 {
-  server.send(200, "text/plain", jsonData);                        // Send JSON to client ajax request
-}
-
+  /*!
+  @brief    Called when a "readADC"" request is sent from a browser client
+  @details  When the browser client sends a GET request for a "readADC" this ISR is called, which then returns
+            the current value in the jsonData string, which is continuously updated in the main loop
+  @return   void
+  */
+  server.send(200, "text/plain", jsonData); // Send JSON to client ajax request
+} // of method "handleADC()"
 void loop()
 {
-  server.handleClient();          // Handle client requests
-  if (millis() > next_log_millis)
-  {
-    next_log_millis = millis() + SD_LOG_INTERVAL; // set next timer
+  /*!
+  @brief    Arduino method for the main program loop
+  @details  This is the main program for the Arduino IDE, it is an infinite loop and keeps on repeating.
+            The timed measurements from the BME680 are handled here, while the actual web page serving and 
+            responses are handled by the 2 ISRs - "handleADC()" and "handleRoot()".
+  @return   void
+  */
+  static uint32_t next_log_millis;                ///< Millis() value for next SD-Card measurement time
+  server.handleClient();                          // Handle client requests
+  if (millis() > next_log_millis)                 // if time to get another measurement from the BME680
+  {                                               //
+    next_log_millis = millis() + SD_LOG_INTERVAL; // set next time to get a reading
     getSensorData();                              // get the BME680 data
   } // if-then time to get a measurement
 } // of method "loop()"
-
 void getSensorData()
 {
-  Serial.print(".");
-  digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED each loop
+  /*!
+  @brief    Function to read the BME680 data and optionally write it to the SD-Card
+  @details  The BME680 data is read in and if an SD-Card is present the values are written to it. The "jsonData"
+            string is also put together here so that a client request can immediately send the current data. This
+            is done because the frequency with which the data is written to the SD-Card is higher than that of the
+            web page refresh.
+  @return   void
+  */
   BME680.getSensorData(temperature, humidity, pressure, gas); // Get the most recent readings from the BME680
+  float altitude = 44330.0 * (1.0 - pow(((float)pressure/100) / SEA_LEVEL_PRESSURE, 0.1903)); 
   if (sd_card_present)                                        // Log data to the SD-Card, if present
   {
-    dataFile.print(++loopCounter);
-    dataFile.print(",");
     dataFile.print(millis() / 1000);
     dataFile.print(",");
     dataFile.print(VOLTAGE);
@@ -245,14 +279,18 @@ void getSensorData()
     dataFile.print(",");
     dataFile.print(humidity    / 1000.0, 2);
     dataFile.print(",");
-    dataFile.println(pressure    /  100.0, 2);
-    if (loopCounter % SD_FLUSH_INTERVAL == 0)
+    dataFile.print(altitude, 2);
+    dataFile.print("\n");
+
+    if (++loopCounter % SD_FLUSH_INTERVAL == 0)
     {
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED before flushing buffer
       dataFile.flush();
-      Serial.print("\nFlushed data to SD-Card\n");
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED after flushing is complete
+      Serial.print("Flushed data to SD-Card\n");
     } // flush the buffer
   } // if-then SD card is present       
   jsonData = "{\"SupplyVoltage\":\"" + String(VOLTAGE) + "\", \"Temperature\":\"" +
     String(temperature / 100.0) + "\", \"Humidity\":\"" + String(humidity / 1000.0) +
-    "\", \"Pressure\":\"" + String((start_pressure - pressure) / 100.0) + "\"}";
+    "\", \"Altitude\":\"" + String(altitude) + "\"}";
 } // of method "getSensorData()"
diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
index 60896e3..6629269 100644
--- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h
+++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
@@ -1,8 +1,17 @@
+/*!
+  This character string "MAIN_page" is loaded into program memory and contains the web page that is served when a
+  browser calls up the site. It uses the javascript from https://www.chartjs.org to generate a page with a dynamic
+  chart and lists the data in tabular form underneath as well.
+  
+  Since this is used for demonstration purposes it has been kept basic and simple.
+  
+*/
+
 const char MAIN_page[] PROGMEM = R"=====(
   <!doctype html>
   <html>
   <head>
-    <title>ESP32 Feather BME680 WiFi Program</title>
+    <title>ESP32FeatherWiFiDemo - BME680 demononstration program</title>
     <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>  
     <style>
     canvas{
@@ -37,7 +46,7 @@ const char MAIN_page[] PROGMEM = R"=====(
       </div>
   <div>
     <table id="dataTable">
-      <tr><th>Time</th><th>Supply Voltage</th><th>Temperature &deg;C</th><th>Relative Humidity %</th><th>Pressure Pa</th></tr>
+      <tr><th>Time</th><th>Supply (V)</th><th>Temperature (&deg;C)</th><th>Relative Humidity (%)</th><th>Altitude (m/10)</th></tr>
     </table>
   </div>
   <br>
@@ -58,7 +67,7 @@ const char MAIN_page[] PROGMEM = R"=====(
           data: {
               labels: timeStamp,
               datasets: [{
-                  label: "SupplyVoltage",
+                  label: "Supply",
                   fill: false,
                   backgroundColor: 'rgba( 243,18, 156 , 1)',
                   borderColor: 'rgba( 243, 18, 156 , 1)',
@@ -78,17 +87,17 @@ const char MAIN_page[] PROGMEM = R"=====(
                   data: Hvalues,
               }, 
 			  {
-                  label: "Pressure",
+                  label: "Altitude",
                   fill: false,
-                  backgroundColor: 'rgba(156, 18, 243 , 1)',
-                  borderColor: 'rgba(156, 18, 243 , 1)',
+                  backgroundColor: 'rgba(60, 60, 60, 1)',
+                  borderColor: 'rgba(60, 60, 60, 1)',
                   data: Pvalues,
               }],
           },
           options: {
               title: {
                       display: true,
-                      text: "Real-Time BME680 Data Display"
+                      text: "Real-Time BME680 Data Display with 10 second auto-refresh"
                   },
               maintainAspectRatio: false,
               elements: {
@@ -96,14 +105,14 @@ const char MAIN_page[] PROGMEM = R"=====(
                       tension: 0.5  // Smooth data lines
                   }
               }
-//			  ,
-//              scales: {
-//                      yAxes: [{
-//                          ticks: {
-//                              beginAtZero:true
-//                          }
-//                      }]
-//              }
+			  ,
+              scales: {
+                      yAxes: [{
+                          ticks: {
+                              beginAtZero:true
+                          }
+                      }]
+              }
           }
       });
   }
@@ -111,11 +120,7 @@ const char MAIN_page[] PROGMEM = R"=====(
     console.log(new Date().toLocaleTimeString());
   };
   
-  // Get a new measurement every 5 Seconds 
-  setInterval(function() {
-    getData();
-  }, 5000); // 5000ms update rate
-   
+  setInterval(function() { getData(); }, 10000); // Get a new measurement every 10 Seconds 
   function getData() {
     var xhttp = new XMLHttpRequest();
     xhttp.onreadystatechange = function() {
@@ -123,14 +128,15 @@ const char MAIN_page[] PROGMEM = R"=====(
        //Push the data in array
     var time = new Date().toLocaleTimeString();
     var txt = this.responseText;
-    var obj = JSON.parse(txt); //Ref: https://www.w3schools.com/js/js_json_parse.asp
+    var obj = JSON.parse(txt);
         SupplyVoltage.push(obj.SupplyVoltage);
         Tvalues.push(obj.Temperature);
         Hvalues.push(obj.Humidity);
+		Pvalues.push(obj.Altitude);
         timeStamp.push(time);
-        showGraph();  //Update Graphs
+        showGraph();
       var table = document.getElementById("dataTable");
-      var row = table.insertRow(1); //Add after headings
+      var row = table.insertRow(1);
       var cell1 = row.insertCell(0);
       var cell2 = row.insertCell(1);
       var cell3 = row.insertCell(2);
@@ -140,7 +146,7 @@ const char MAIN_page[] PROGMEM = R"=====(
       cell2.innerHTML = obj.SupplyVoltage;
       cell3.innerHTML = obj.Temperature;
       cell4.innerHTML = obj.Humidity;
-      cell5.innerHTML = obj.Pressure;
+      cell5.innerHTML = obj.Altitude;
       }
     };
     xhttp.open("GET", "readADC", true);

From 9e6fff7468c14eae7d05554fbaa4984553709c56 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Mon, 1 Jun 2020 14:26:21 +0200
Subject: [PATCH 14/49] Corrected SDLoggerSPIDemo.ino for Doxygen warnings

---
 Doxyfile                                     |  3 ++-
 examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 25 +++++++++++++-------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/Doxyfile b/Doxyfile
index 82242d0..7e0c445 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -3,6 +3,7 @@
 ##                                                                                                  ##
 ## Date       Developer                     Comments                                                ##
 ## ========== ============================= ======================================================= ##
+## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS"           ##
 ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version  ##
 ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5                 ##
 ## 2020-05-17 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.4                 ##
@@ -244,7 +245,7 @@ EXPAND_ONLY_PREDEF     = NO
 SEARCH_INCLUDES        = YES
 INCLUDE_PATH           =
 INCLUDE_FILE_PATTERNS  =
-PREDEFINED             =
+PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
 EXPAND_AS_DEFINED      =
 SKIP_FUNCTION_MACROS   = YES
 TAGFILES               =
diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
index fbec078..4d85034 100644
--- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
+++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino
@@ -58,7 +58,8 @@ Written by https://github.com/SV-Zanshin
 @section SDLoggerSPIDemoversions Changelog
 
 Version | Date       | Developer                     | Comments
-------- | ---------- | ----------------------------- | -------------------------------------------------
+------- | ---------- | ----------------------------- | -----------------------------------------------------
+1.0.1   | 2020-06-01 | https://github.com/SV-Zanshin | Added Doxygen commenting for redefine of serial class
 1.0.0   | 2020-05-27 | https://github.com/SV-Zanshin | Completed and tested
 1.0.0b  | 2020-05-22 | https://github.com/SV-Zanshin | Cloned from original SPIDemo program and modified
 */
@@ -66,16 +67,24 @@ Version | Date       | Developer                     | Comments
 #include <SPI.h>            // Include the SPI standard library (also included in the BME680 library)    
 #include <SD.h>             // Include the SD Card standard library
 
-//#define SERIAL_ATTACHED     // When commented out then no output is done to the serial port
+#define SERIAL_ATTACHED     // When commented out then no output is done to the serial port
+
 #ifndef SERIAL_ATTACHED
-// disable Serial output
-#define Serial SomeOtherwiseUnusedName
-static class {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+// override Serial output
+#define Serial DummySerial
+static class 
+{
+  /*!
+  @class Serial
+  @Brief Redefine a dummy Serial class when no serial port is attached
+  */
 public:
-  void begin(...) {}
-  void print(...) {}
-  void println(...) {}
+  void begin(...) {}   ///< Redefine a dummy begin
+  void print(...) {}   ///< Redefine a dummy print
+  void println(...) {} ///< Redefine a dummy println
 } Serial;
+#endif // of skipped Doxygen code
 #endif
 
 /*******************************************************************************************************************

From a10857b9bce07bf1d471a33ed564ded4675f27a0 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Mon, 1 Jun 2020 14:40:26 +0200
Subject: [PATCH 15/49] Updated contents

---
 Doxyfile                                        | 3 ++-
 examples/ESP32FeatherWiFiDemo/WebPageContents.h | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Doxyfile b/Doxyfile
index 7e0c445..84cffc0 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -3,6 +3,7 @@
 ##                                                                                                  ##
 ## Date       Developer                     Comments                                                ##
 ## ========== ============================= ======================================================= ##
+## 2020-06-01 https://github.com/SV-Zanshin Updated version to 1.0.7                                ##
 ## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS"           ##
 ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version  ##
 ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5                 ##
@@ -12,7 +13,7 @@
 ######################################################################################################
 DOXYFILE_ENCODING      = UTF-8
 PROJECT_NAME           = BME680
-PROJECT_NUMBER         = "Version 1.0.6"
+PROJECT_NUMBER         = "Version 1.0.7"
 PROJECT_BRIEF          = "Arduino Library for the Bosch BME680 Temperature, Humidity, Pressure and Gas sensor"
 PROJECT_LOGO           =
 OUTPUT_DIRECTORY       =
diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
index 6629269..aee1987 100644
--- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h
+++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
@@ -46,7 +46,7 @@ const char MAIN_page[] PROGMEM = R"=====(
       </div>
   <div>
     <table id="dataTable">
-      <tr><th>Time</th><th>Supply (V)</th><th>Temperature (&deg;C)</th><th>Relative Humidity (%)</th><th>Altitude (m/10)</th></tr>
+      <tr><th>Time</th><th>Supply (V)</th><th>Temperature (&deg;C)</th><th>Relative Humidity (%)</th><th>Altitude (m)</th></tr>
     </table>
   </div>
   <br>

From fa98e569c44ee1f1054ec8895d83ef179e065509 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 07:14:12 +0200
Subject: [PATCH 16/49] Update ESP32FeatherWiFiDemo.ino

Initial commit for v1.0.7
---
 .../ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino     | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index 581854a..a12c798 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -59,6 +59,7 @@ Written by Arnd\@SV-Zanshin
 
 Version | Date       | Developer                     | Comments
 ------- | ---------- | ----------------------------- | -------------------------------------------
+1.0.0   | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish
 1.0.0b  | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding
 */
 
@@ -80,10 +81,16 @@ Version | Date       | Developer                     | Comments
 /*******************************************************************************************************************
 ** Declare all program constants                                                                                  **
 *******************************************************************************************************************/
+
+               /*************************************************************************
+               ** Please change the "WIFI_SSID", "WIFI_PASSWORD", "SD_CARD_SPI_CS_PIN" **
+               ** and "SD_CARD_SPI_CD_PIN" constants to match your installation        **
+               *************************************************************************/
+
 const char*    FILE_NAME          = "/BME_680.csv"; ///< Filename on SD-Card
 const char*    HOSTNAME           =       "BME680"; ///< Give the device a name
-const char*    WIFI_SSID          =      "Zanshin"; ///< Network SSID for connection
-const char*    WIFI_PASSWORD      =  "TANSTAAFl1!"; ///< Network authentication code
+const char*    WIFI_SSID          =  "NetworkSSID"; ///< Network SSID for connection
+const char*    WIFI_PASSWORD      =     "Password"; ///< Network authentication code
 const uint32_t SERIAL_SPEED       =         115200; ///< Set the baud rate for Serial I/O
 const uint8_t  POWER_PIN          =            A13; ///< Supply voltage through a divider
 const uint8_t  LED_PIN            =             13; ///< This pin is the on-board red LED

From ab6203636aeb531418fdb0a741615cc08f7a3da6 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 13:42:04 +0200
Subject: [PATCH 17/49] Added Wiki and Doxygen badges to images

---
 Images/Documentation-wiki.svg           | 1 +
 Images/Doxygen-complete-brightgreen.svg | 1 +
 Images/README.md                        | 2 ++
 3 files changed, 4 insertions(+)
 create mode 100644 Images/Documentation-wiki.svg
 create mode 100644 Images/Doxygen-complete-brightgreen.svg

diff --git a/Images/Documentation-wiki.svg b/Images/Documentation-wiki.svg
new file mode 100644
index 0000000..b8617bb
--- /dev/null
+++ b/Images/Documentation-wiki.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="162" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="162" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="93" height="20" fill="#555"/><rect x="93" width="69" height="20" fill="#4c1"/><rect width="162" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">Documentation</text><text x="475" y="140" transform="scale(.1)" textLength="830">Documentation</text><text x="1265" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="590">wiki pages</text><text x="1265" y="140" transform="scale(.1)" textLength="590">wiki pages</text></g></svg>
\ No newline at end of file
diff --git a/Images/Doxygen-complete-brightgreen.svg b/Images/Doxygen-complete-brightgreen.svg
new file mode 100644
index 0000000..b3afa67
--- /dev/null
+++ b/Images/Doxygen-complete-brightgreen.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="120" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="59" height="20" fill="#555"/><rect x="59" width="61" height="20" fill="#4c1"/><rect width="120" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="305" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">Doxygen</text><text x="305" y="140" transform="scale(.1)" textLength="490">Doxygen</text><text x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">complete</text><text x="885" y="140" transform="scale(.1)" textLength="510">complete</text></g></svg>
\ No newline at end of file
diff --git a/Images/README.md b/Images/README.md
index 43bd8af..5ca5ec2 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -10,6 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> |
 | Micro_BME280_bb.png  |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/>  |
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
+| Doxygen-complete.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> |
+| Documentation-wiki.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From d3676a70d05f722f493a7975795f9131298ff969 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 13:49:17 +0200
Subject: [PATCH 18/49] New badges uploaded

---
 ...{Doxygen-complete-brightgreen.svg => Doxygen-complete.svg} | 0
 Images/README.md                                              | 4 ++--
 2 files changed, 2 insertions(+), 2 deletions(-)
 rename Images/{Doxygen-complete-brightgreen.svg => Doxygen-complete.svg} (100%)

diff --git a/Images/Doxygen-complete-brightgreen.svg b/Images/Doxygen-complete.svg
similarity index 100%
rename from Images/Doxygen-complete-brightgreen.svg
rename to Images/Doxygen-complete.svg
diff --git a/Images/README.md b/Images/README.md
index 5ca5ec2..92fc109 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> |
 | Micro_BME280_bb.png  |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/>  |
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
-| Doxygen-complete.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> |
-| Documentation-wiki.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> |
+| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
+| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From fe7d40e585356922596d5bcafb46d2f1029e73ad Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 2 Jun 2020 13:51:15 +0200
Subject: [PATCH 19/49] Update README.md

---
 Images/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Images/README.md b/Images/README.md
index 92fc109..a5f6cd6 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> |
 | Micro_BME280_bb.png  |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/>  |
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
-| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
-| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
+| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/Images/Doxygen-complete.svg)] |
+| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/Images/Documentation-wiki.svg)] |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From bfb306e81faa0655605a0b1b655a15ddd1bbc515 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 13:53:11 +0200
Subject: [PATCH 20/49] Update README.md

---
 Images/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Images/README.md b/Images/README.md
index 92fc109..5ca5ec2 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> |
 | Micro_BME280_bb.png  |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/>  |
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
-| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
-| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
+| Doxygen-complete.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> |
+| Documentation-wiki.svg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From 9f6231cdbc49ff4bba6bfcebd1082fb839313e38 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 2 Jun 2020 13:59:28 +0200
Subject: [PATCH 21/49] Added link to Doxygen badge

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 7e31a66..aaa8969 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) 
+# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456)  [![Doxygen](https://github.com/SV-Zanshin/BME680/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html)
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 
 | Supplier  | Image |  Instructions | Comments |

From 326d87182bd6c89ecff3d4fe04ea824cbeaf9d67 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 2 Jun 2020 14:04:43 +0200
Subject: [PATCH 22/49] Added Badges

Added Doxygen and Wiki badges
---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index aaa8969..b83b71f 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456)  [![Doxygen](https://github.com/SV-Zanshin/BME680/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html)
+# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 
 | Supplier  | Image |  Instructions | Comments |

From a47d797cfdc3761c700b694474c81aa12c225b67 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 2 Jun 2020 14:17:31 +0200
Subject: [PATCH 23/49] Added ESP32FeatherWiFiDemo.ino

---
 examples/README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/examples/README.md b/examples/README.md
index 410061e..40ca17b 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -9,5 +9,6 @@ Various example programs illustrating the use of the *Arduino* BME680 library ar
 | software SPI Demo   | [SoftSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SoftSPIDemo.ino)             | Identical to the I2C Demo program, but using SPI connectivity emulated in software |
 | Two I2C BME680s     | [TwoDevicesI2CDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/TwoDevicesI2CDemo.ino) | Example to illustrate attaching 2 BME680 devices with different addresses using I2C |
 | SD-Card Logging     | [SDLoggerSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SDLoggerSPIDemo.ino)     | Example sketch using SPI for the BME680 and a SD-Card to log data at variable rates - faster logging when the measurements change rapidly and less frequent measurements when there is little change. |
+| ESP32 WiFi demo     | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino)     | Example sketch using I2C for the BME680 (and an optional SD-Card to log data) to connect to WiFi and dynamically display measurement data on a web page. |
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From 7b638788ace4c717bf54705386959b4300690d8a Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 14:34:50 +0200
Subject: [PATCH 24/49] Updated comments

---
 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 6 +++---
 examples/ESP32FeatherWiFiDemo/WebPageContents.h        | 6 +++++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index a12c798..141831f 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -59,7 +59,7 @@ Written by Arnd\@SV-Zanshin
 
 Version | Date       | Developer                     | Comments
 ------- | ---------- | ----------------------------- | -------------------------------------------
-1.0.0   | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish
+1.0.0   | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish as Issue #20
 1.0.0b  | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding
 */
 
@@ -291,9 +291,9 @@ void getSensorData()
 
     if (++loopCounter % SD_FLUSH_INTERVAL == 0)
     {
-      digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED before flushing buffer
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));           // Toggle LED before flushing buffer
       dataFile.flush();
-      digitalWrite(LED_PIN, !digitalRead(LED_PIN));               // Toggle LED after flushing is complete
+      digitalWrite(LED_PIN, !digitalRead(LED_PIN));           // Toggle LED after flushing is complete
       Serial.print("Flushed data to SD-Card\n");
     } // flush the buffer
   } // if-then SD card is present       
diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
index aee1987..aad4a4a 100644
--- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h
+++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h
@@ -5,13 +5,17 @@
   
   Since this is used for demonstration purposes it has been kept basic and simple.
   
+  Version | Date       | Developer                     | Comments
+  ------- | ---------- | ----------------------------- | -------------------------------------------
+  1.0.0   | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish as Issue #20
+
 */
 
 const char MAIN_page[] PROGMEM = R"=====(
   <!doctype html>
   <html>
   <head>
-    <title>ESP32FeatherWiFiDemo - BME680 demononstration program</title>
+    <title>ESP32FeatherWiFiDemo - BME680 demonstration program</title>
     <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>  
     <style>
     canvas{

From ad0005c15dc2f4897ec30434b055e58d43ad0a85 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 14:41:21 +0200
Subject: [PATCH 25/49] Issue #20

---
 .../ESP32FeatherWiFiDemo.ino                  | 24 +++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index 141831f..99088ba 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -132,29 +132,29 @@ void setup()
             and configured here.
   @return   void
   */
-  pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);                     // Declare the Chip-Select pin for the SD Card as output
-  pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP);               // Declare the Carrier detect pin for the SD Card as input
-  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);                  // Write a high value to it in order to deselect device
-  pinMode(LED_PIN, OUTPUT);                                // make the on-board LED an output pin so we can change it
-  Serial.begin(SERIAL_SPEED);                              // Start the Serial port with the specified speed
-  Serial.print("Starting ESP32FeatherWiFiDemo example program for BME680\n");
+  pinMode(SD_CARD_SPI_CS_PIN, OUTPUT);                               // Chip-Select pin for the SD Card as output
+  pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP);                         // Carrier detect pin for the SD Card as input
+  digitalWrite(SD_CARD_SPI_CS_PIN, HIGH);                            // Deselect device by writing HIGH to it
+  pinMode(LED_PIN, OUTPUT);                                          // Make the on-board LED an output pin
+  Serial.begin(SERIAL_SPEED);                                        // Start the Serial comms at specified speed
   /**********************
   ** Initialize BME680 **
   **********************/
+  Serial.print("Starting ESP32FeatherWiFiDemo for BME680\n");
   Serial.print("- Initializing BME680 sensor\n");
-  while (!BME680.begin(I2C_STANDARD_MODE))                 // Start BME680 using I2C, use first device found
+  while (!BME680.begin(I2C_STANDARD_MODE))                           // Start using I2C, use first device found
   {
     Serial.print("-  Unable to find BME680. Trying again in 5 seconds.\n");
     delay(5000);
   } // of loop until device is located
   Serial.print("- Setting 16x oversampling for all sensors\n");
-  BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value
-  BME680.setOversampling(HumiditySensor, Oversample16);    // Use enumerated type values to set value
-  BME680.setOversampling(PressureSensor, Oversample16);    // Use enumerated type values to set value
   Serial.print("- Setting IIR filter to a value of 4 samples\n");
-  BME680.setIIRFilter(IIR4); // Use enumerated type values
   Serial.print("- Turning off gas measurements\n");
-  BME680.setGas(0, 0);                                     // Setting either to 0 turns off gas measurement
+  BME680.setOversampling(TemperatureSensor, Oversample16);           // Use enumerated type values to set value
+  BME680.setOversampling(HumiditySensor, Oversample16);              // Use enumerated type values to set value
+  BME680.setOversampling(PressureSensor, Oversample16);              // Use enumerated type values to set value
+  BME680.setIIRFilter(IIR4);                                         // Use enumerated type values to set value
+  BME680.setGas(0, 0);                                               // Setting either to 0 turns off gas
   BME680.getSensorData(temperature, humidity, start_pressure, gas);  // Get most recent readings
   /***************************************************************
   ** Initialize SD-Card for logging, if not found then continue **

From e89b4e82e034f29e541154243b44884a4c97ecb2 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 2 Jun 2020 17:40:36 +0200
Subject: [PATCH 26/49] Updated description of ESP32 demo program

---
 examples/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/README.md b/examples/README.md
index 40ca17b..e9dc018 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -9,6 +9,6 @@ Various example programs illustrating the use of the *Arduino* BME680 library ar
 | software SPI Demo   | [SoftSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SoftSPIDemo.ino)             | Identical to the I2C Demo program, but using SPI connectivity emulated in software |
 | Two I2C BME680s     | [TwoDevicesI2CDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/TwoDevicesI2CDemo.ino) | Example to illustrate attaching 2 BME680 devices with different addresses using I2C |
 | SD-Card Logging     | [SDLoggerSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SDLoggerSPIDemo.ino)     | Example sketch using SPI for the BME680 and a SD-Card to log data at variable rates - faster logging when the measurements change rapidly and less frequent measurements when there is little change. |
-| ESP32 WiFi demo     | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino)     | Example sketch using I2C for the BME680 (and an optional SD-Card to log data) to connect to WiFi and dynamically display measurement data on a web page. |
+| ESP32 WiFi demo     | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino)     | Example sketch using I2C for the BME680 (and an optional SD-Card on SPI to log data) to connect to WiFi and dynamically display measurement data on a web page. |
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From a3371c1bd6f95ffbfb30fc0b619cc1e87b73ee52 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 18:02:18 +0200
Subject: [PATCH 27/49] Update ESP32FeatherWiFiDemo.ino

Corrected measurements when no SD card present
---
 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index 99088ba..eef8bb7 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -223,7 +223,6 @@ void setup()
   server.begin();                         // Start server
   Serial.print("HTTP server started\n");
   digitalWrite(LED_PIN, false);           // Turn the LED off
-
 } // of method "setup()"
 void handleRoot() 
 {
@@ -245,6 +244,10 @@ void handleADC()
             the current value in the jsonData string, which is continuously updated in the main loop
   @return   void
   */
+  if (!sd_card_present) // If no SD-Card is present then we need to get data,
+  {                     // if there is an SD-Card then the data has already been fetched
+    getSensorData();    // get the BME680 data
+  } // if-then SD-Card not present
   server.send(200, "text/plain", jsonData); // Send JSON to client ajax request
 } // of method "handleADC()"
 void loop()

From 7f753a806931110377c964f02cad64881fbd50c2 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Tue, 2 Jun 2020 19:52:56 +0200
Subject: [PATCH 28/49] Issue #20 minor fixes

---
 .../ESP32FeatherWiFiDemo.ino                  | 31 +++++++++----------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index eef8bb7..101095b 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -102,17 +102,17 @@ const float    SEA_LEVEL_PRESSURE =        1013.25; ///< Standard atmosphere sea
 /*******************************************************************************************************************
 ** Declare all global variables                                                                                   **
 *******************************************************************************************************************/
-WebServer    server(80);                             ///< Instantiate a web server on port 80
-BME680_Class BME680;                                 ///< Create an instance of the BME680 class
-File         dataFile;                               ///< Class for a SD-Card file
-int32_t      temperature;                            ///< BME680 temperature value
-int32_t      humidity;                               ///< BME680 humidity value
-int32_t      pressure;                               ///< BME680 pressure value
-int32_t      gas;                                    ///< BME680 gas resistance value
-int32_t      start_pressure;                         ///< Initial pressure reading
-bool         sd_card_present = false;                ///< Switch set when SD-Card detected
-String       jsonData;                               ///< JSON data string 
-uint16_t     loopCounter = 0;                        ///< Counter for number of write operations since startup
+WebServer    server(80);                            ///< Instantiate a web server on port 80
+BME680_Class BME680;                                ///< Create an instance of the BME680 class
+File         dataFile;                              ///< Class for a SD-Card file
+int32_t      temperature;                           ///< BME680 temperature value
+int32_t      humidity;                              ///< BME680 humidity value
+int32_t      pressure;                              ///< BME680 pressure value
+int32_t      gas;                                   ///< BME680 gas resistance value
+int32_t      start_pressure;                        ///< Initial pressure reading
+bool         sd_card_present = false;               ///< Switch set when SD-Card detected
+String       jsonData;                              ///< JSON data string 
+uint16_t     loopCounter = 0;                       ///< Counter for number of write operations since startup
 
 /*******************************************************************************************************************
 ** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes   **
@@ -281,7 +281,7 @@ void getSensorData()
   float altitude = 44330.0 * (1.0 - pow(((float)pressure/100) / SEA_LEVEL_PRESSURE, 0.1903)); 
   if (sd_card_present)                                        // Log data to the SD-Card, if present
   {
-    dataFile.print(millis() / 1000);
+    dataFile.print(millis()    / 1000);
     dataFile.print(",");
     dataFile.print(VOLTAGE);
     dataFile.print(",");
@@ -291,11 +291,10 @@ void getSensorData()
     dataFile.print(",");
     dataFile.print(altitude, 2);
     dataFile.print("\n");
-
-    if (++loopCounter % SD_FLUSH_INTERVAL == 0)
-    {
+    if (++loopCounter % SD_FLUSH_INTERVAL == 0)               // Flush every N-Iterations
+    {                                                         //
       digitalWrite(LED_PIN, !digitalRead(LED_PIN));           // Toggle LED before flushing buffer
-      dataFile.flush();
+      dataFile.flush();                                       // flush pending writes to SD
       digitalWrite(LED_PIN, !digitalRead(LED_PIN));           // Toggle LED after flushing is complete
       Serial.print("Flushed data to SD-Card\n");
     } // flush the buffer

From ab980f9292b1580db1cb6777125a6cd0205de5c4 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Thu, 4 Jun 2020 11:42:41 +0200
Subject: [PATCH 29/49] Corrected path to new images

---
 Images/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Images/README.md b/Images/README.md
index 676e4b2..d5a5570 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> |
 | Micro_BME280_bb.png  |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/>  |
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
-| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/Images/Doxygen-complete.svg)] |
-| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/Images/Documentation-wiki.svg)] |
+| Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
+| Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From 0e1bd465bf7935ba7b7a362a3a95ebd532d55ba6 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Thu, 4 Jun 2020 16:43:25 +0200
Subject: [PATCH 30/49] Update ESP32FeatherWiFiDemo.ino

---
 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index 101095b..a628425 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -12,7 +12,7 @@ the local WiFi network to use and the corresponding authentication code.
 
 Once started, the IP-Address is set by the WiFi router and displayed on the serial output of the ESP32, this IP
 address should then be entered as the URL in a web browser of a computer attached to the same network and the 
-data should be presented there, updated every 5 seconds.
+data should be presented there, updated every 10 seconds.
 
 The Bosch BME680 sensor measures temperature, pressure, humidity and air quality and is described at
 https://www.bosch-sensortec.com/bst/products/all_products/BME680. The datasheet is available from Bosch at 
@@ -53,7 +53,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 @section ESP32FeatherWiFiDemoauthor Author
 
-Written by Arnd\@SV-Zanshin
+Written by https://github.com/SV-Zanshin
 
 @section ESP32FeatherWiFiDemoversions Changelog
 

From 9d39d3bd9ae8456aa28fa53e178365a9cc417855 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Fri, 5 Jun 2020 07:26:14 +0200
Subject: [PATCH 31/49] Added logo image

---
 .github/README.md       |   1 +
 Images/README.md        |   1 +
 Images/bosch-bme680.jpg | Bin 0 -> 14578 bytes
 3 files changed, 2 insertions(+)
 create mode 100644 Images/bosch-bme680.jpg

diff --git a/.github/README.md b/.github/README.md
index b83b71f..4053221 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,3 +1,4 @@
+<img src="../images/bosch-bme680.jpg" alt="INA" align="right" height="40px">
 # BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 
diff --git a/Images/README.md b/Images/README.md
index d5a5570..c500ba1 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -12,6 +12,7 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
 | Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
 | Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
+| bosch-bme680.jpg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg)] |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>
diff --git a/Images/bosch-bme680.jpg b/Images/bosch-bme680.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9609ec631539d296455cde8ec69991dc8196e409
GIT binary patch
literal 14578
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
X57Xd_dAB!W^^a5h-{g*cv-|%5m&WbG

literal 0
HcmV?d00001


From 8140eb5e52a85e7cc31c73b9394f904484e798c5 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 5 Jun 2020 07:27:36 +0200
Subject: [PATCH 32/49] Update README.md

---
 .github/README.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 4053221..2e16ad7 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,5 +1,7 @@
-<img src="../images/bosch-bme680.jpg" alt="INA" align="right" height="40px">
+<img src="../images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px">
+
 # BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
+
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 
 | Supplier  | Image |  Instructions | Comments |

From cde4b2406129d6ca2f00c62fa4d699ac43ba8890 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 5 Jun 2020 07:29:52 +0200
Subject: [PATCH 33/49] Corrected image width

---
 Images/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Images/README.md b/Images/README.md
index c500ba1..fb7a685 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -12,7 +12,7 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | TwoBME680.jpg  | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> |
 | Doxygen-complete.svg  | [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)] |
 | Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
-| bosch-bme680.jpg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg)] |
+| bosch-bme680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" width="50%"/> |
 
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From 21f202f2e1e2ad0502487846041de6e56b4e1691 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 5 Jun 2020 07:31:59 +0200
Subject: [PATCH 34/49] Fixed image

---
 .github/README.md | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/.github/README.md b/.github/README.md
index 2e16ad7..6600654 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,6 +1,4 @@
-<img src="../images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px">
-
-# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
+# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki) <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px">
 
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 

From 969a18a701398d4a8fc593721b465324778bc4ad Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 5 Jun 2020 07:32:44 +0200
Subject: [PATCH 35/49] Correctted logo position

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 6600654..b6d6028 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki) <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px">
+# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
 
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 

From cc5b1b253454f369b4f4a56e7c39abe3edccf8a3 Mon Sep 17 00:00:00 2001
From: Zanshin <Zanshin_Github@SV-Zanshin.com>
Date: Fri, 5 Jun 2020 09:27:49 +0200
Subject: [PATCH 36/49] Update ESP32FeatherWiFiDemo.ino

---
 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
index a628425..05b04ad 100644
--- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
+++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino
@@ -117,10 +117,9 @@ uint16_t     loopCounter = 0;                       ///< Counter for number of w
 /*******************************************************************************************************************
 ** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes   **
 ** through a voltage divider the value is multiplied by 2. The register is 12-bit (0-4095) so we divide by 4095   **
-** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V. The formula is:     **
-**                         analogRead(POWER_PIN) / 4095.0 * 3.3v * 2 * 1.1v)                                      **
+** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V.                     **
 *******************************************************************************************************************/
-#define VOLTAGE ( analogRead(POWER_PIN) / 4095.0 * 3.3 * 2 * 1.1) 
+#define VOLTAGE ( analogRead(POWER_PIN) * 2 / 4095.0 * 3.3 * 1.1) 
 
 void setup()
 {

From 08725829e3a67ba1e9476948eb05119bf6502e53 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Fri, 5 Jun 2020 17:19:17 +0200
Subject: [PATCH 37/49] Update README.md

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index b6d6028..51b424d 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -4,7 +4,7 @@
 
 | Supplier  | Image |  Instructions | Comments |
 | --------- | ----- |------------ | -------- |
-| [Sparkfun](https://www.sparkfun.com/products/16466) | <img src="https://cdn.sparkfun.com//assets/parts/1/5/3/2/9/16466-SparkFun_Environmental_Sensor_Breakout_-_BME680__Qwiic_-01a.jpg" width="150" /> | [Guide](https://learn.sparkfun.com/tutorials/sparkfun-environmental-sensor-breakout---bme680-qwiic-hookup-guide) | The Sparkfun board has pinouts for both SPI and I2C, one interface along one edge and other on the opposing side. The board is designed as part of the SparkFun [Qwiic Connect System](https://www.sparkfun.com/qwiic) that uses standardized plugs to daisy-chain I2C breakout boards together quickly. This package is designed to work with 3V systems and has no on-board 5V level shifting. |
+| [Sparkfun](https://www.sparkfun.com/products/16466) | <img src="https://cdn.sparkfun.com//assets/parts/1/5/3/2/9/16466-SparkFun_Environmental_Sensor_Breakout_-_BME680__Qwiic_-01a.jpg" width="150px" /> | [Guide](https://learn.sparkfun.com/tutorials/sparkfun-environmental-sensor-breakout---bme680-qwiic-hookup-guide) | The Sparkfun board has pinouts for both SPI and I2C, one interface along one edge and other on the opposing side. The board is designed as part of the SparkFun [Qwiic Connect System](https://www.sparkfun.com/qwiic) that uses standardized plugs to daisy-chain I2C breakout boards together quickly. This package is designed to work with 3V systems and has no on-board 5V level shifting. |
 | [Bluedot](https://www.bluedot.space/sensor-boards/bme680/) | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/BlueDotBME680.jpg" width="150" /> | [Guide](https://www.bluedot.space/sensor-boards/bme680/) | This was my initial BME680 breakout board, purchased locally in Germany where it is manufactured. It has on-board level shifting and is therefore able to run on both 3V and 5V systems. There are fewer pinouts on this board than on the Sparkfun one, several of the pins have different uses depending upon whether I2C or SPI is selected |
 | [Adafruit](https://www.adafruit.com/product/3660) | <img src="https://cdn-shop.adafruit.com/970x728/3660-01.jpg" width="150" /> | [Guide](https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/) | This breakout board is the most compact of the three, with the pinouts having different uses depending upon which communications method (I2C or SPI) is used. As with the Bluedot breakout board above, the Adafruit breakout board has level-shifting integrated and can therefore be run on both 3V and 5V systems.  |
 

From 0bfdbaca80df3d93b2959b9292475b4ed4695558 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 10:18:26 +0200
Subject: [PATCH 38/49] Added GPL License badge

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 51b424d..b9e89b2 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
+# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[![License: GPL v3](https://zanduino.github.io/Badges/GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
 
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 

From 6445d8f43bf2fe2c65aa7973724d6c72b0b91d2c Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 10:19:21 +0200
Subject: [PATCH 39/49] Moved file

---
 LICENSE => .github/LICENSE | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 rename LICENSE => .github/LICENSE (99%)

diff --git a/LICENSE b/.github/LICENSE
similarity index 99%
rename from LICENSE
rename to .github/LICENSE
index 0bdb991..5e54bd3 100644
--- a/LICENSE
+++ b/.github/LICENSE
@@ -671,4 +671,4 @@ into proprietary programs.  If your program is a subroutine library, you
 may consider it more useful to permit linking proprietary applications with
 the library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
\ No newline at end of file
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.

From 70e71e2000f6ed608b4798d611b4928e92acdbe5 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 10:45:46 +0200
Subject: [PATCH 40/49] Changed Badge location and images

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index b9e89b2..17c17a0 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -1,4 +1,4 @@
-# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[![License: GPL v3](https://zanduino.github.io/Badges/GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)](https://github.com/SV-Zanshin/BME680/wiki)
+# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[![License: GPL v3](https://zanduino.github.io/Badges/GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![Doxygen](https://zanduino.github.io/Badges/Doxygen-Badge.svg)](https://sv-zanshin.github.io/BME680/html/index.html) [![Wiki](https://zanduino.github.io/Badges/Documentation-Badge.svg)](https://github.com/SV-Zanshin/BME680/wiki)
 
 *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples:
 

From 351981a167bc9378c744fd3c3007b727565def22 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 12:14:36 +0200
Subject: [PATCH 41/49] Updated Zanshin gif location

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 17c17a0..680ee7c 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the
 ### Environment gas sensing
 The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software  - but keep in mind that it won't run on most smaller Arduino platforms.
 
-![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>
+![Zanshin Logo](https://www.sv-zanshin.com) <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>

From 3ef1d8ea4d93695e91888b24e4d6b62f584f3cbc Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 12:21:00 +0200
Subject: [PATCH 42/49] Update README.md

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 680ee7c..9b34ec8 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the
 ### Environment gas sensing
 The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software  - but keep in mind that it won't run on most smaller Arduino platforms.
 
-![Zanshin Logo](https://www.sv-zanshin.com) <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>
+![Zanshin Logo](https://zanduino.github.io/Images/zanshinkanjitiny.gif) <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>

From 29185ad0dfd5a60d0e69dd38f31c09496030e433 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sat, 6 Jun 2020 12:22:07 +0200
Subject: [PATCH 43/49] Update README.md

---
 .github/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/README.md b/.github/README.md
index 9b34ec8..58f418e 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the
 ### Environment gas sensing
 The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software  - but keep in mind that it won't run on most smaller Arduino platforms.
 
-![Zanshin Logo](https://zanduino.github.io/Images/zanshinkanjitiny.gif) <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>
+[![Zanshin Logo](https://zanduino.github.io/Images/zanshinkanjitiny.gif) <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>](https://www.sv-zanshin.com)

From d0263bcc8007513753fa30f43f0a15a81aa9616a Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Sun, 7 Jun 2020 19:58:51 +0200
Subject: [PATCH 44/49] updated to v1.0.7

---
 library.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/library.properties b/library.properties
index 706ce79..5ee849e 100644
--- a/library.properties
+++ b/library.properties
@@ -1,5 +1,5 @@
 name=BME680
-version=1.0.6
+version=1.0.7
 author=https://github.com/SV-Zanshin
 maintainer=https://github.com/SV-Zanshin
 sentence=Arduino library to access and control the Bosch BME680 sensor and get temperature, humidity, pressure and gas readings.

From 22610906f49891779672513148644b05264151c6 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Mon, 8 Jun 2020 16:44:06 +0200
Subject: [PATCH 45/49] Updated to v1.0.7

---
 Doxyfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Doxyfile b/Doxyfile
index 84cffc0..71eca6e 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -3,7 +3,7 @@
 ##                                                                                                  ##
 ## Date       Developer                     Comments                                                ##
 ## ========== ============================= ======================================================= ##
-## 2020-06-01 https://github.com/SV-Zanshin Updated version to 1.0.7                                ##
+## 2020-06-08 https://github.com/SV-Zanshin Updated version to 1.0.7                                ##
 ## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS"           ##
 ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version  ##
 ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5                 ##

From 23910a1e59a121c168ecd960b847caa1c4e31f97 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Mon, 8 Jun 2020 16:56:54 +0200
Subject: [PATCH 46/49] Update README.md

---
 Images/README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Images/README.md b/Images/README.md
index fb7a685..5fce8e3 100644
--- a/Images/README.md
+++ b/Images/README.md
@@ -14,5 +14,4 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire
 | Documentation-wiki.svg | [![Wiki](https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg)] |
 | bosch-bme680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" width="50%"/> |
 
-
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From a041b828b8add801e58ca4299fbe30f0d736f948 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Mon, 8 Jun 2020 20:48:15 +0200
Subject: [PATCH 47/49] Updated text

---
 src/README.md | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/README.md b/src/README.md
index 262ba2f..8d81d52 100644
--- a/src/README.md
+++ b/src/README.md
@@ -1,5 +1,6 @@
 # BME680 library Header and Source files<br>[![Build Status](https://travis-ci.org/SV-Zanshin/BME680.svg?branch=master)](https://travis-ci.org/SV-Zanshin/BME680) [![DOI](https://zenodo.org/badge/139349456.svg)](https://zenodo.org/badge/latestdoi/139349456) [![arduino-library-badge](https://www.ardu-badge.com/badge/BME680.svg?)](https://www.ardu-badge.com/BME680)
-This directory contains the two files that comprise [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) BME680 *Arduino* library. 
-The "Zanshin_BME680.h" is the library header file, and the code is contained in the "Zanshin_BME680.cpp" file.
+This directory contains the two files that define [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) BME680 *Arduino* library.
+
+The "Zanshin_BME680.h" is the library header file, and the program code is contained in the "Zanshin_BME680.cpp" file.
 
 ![Zanshin Logo](https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif) <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/>

From 042e19426165c7ace5c1c23b37d6deeb203b34a0 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Tue, 9 Jun 2020 12:39:20 +0200
Subject: [PATCH 48/49] Comments updated

---
 src/Zanshin_BME680.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Zanshin_BME680.h b/src/Zanshin_BME680.h
index 9588ac8..b14b73d 100644
--- a/src/Zanshin_BME680.h
+++ b/src/Zanshin_BME680.h
@@ -14,7 +14,7 @@ SPI using either the standard Arduino hardware SPI or software SPI. Depending up
 have 2 distinct I2C addresses - either 0x76 or 0x77.\n\n
 
 The most recent version of the library is available at https://github.com/SV-Zanshin/BME680 and extensive 
-documentation of the library as well as descriptions of the example programs are described in the project's wiki 
+documentation of the library as well as descriptions of the various example programs are described in the project's wiki 
 pages located at https://github.com/SV-Zanshin/BME680/wiki
 \n
 The BME680 is an extremely small physical package that is so tiny as to be impossible to solder at home, hence it 
@@ -337,4 +337,4 @@ Version | Date       | Developer                     | Comments
         return(structSize);
       } // of method putData()
   }; // of BME680 class definition
-#endif
\ No newline at end of file
+#endif

From 967b1bd1c67b1c8234a727d7ab16ef5a49244f05 Mon Sep 17 00:00:00 2001
From: Arnd <Zanshin_Github@sv-zanshin.com>
Date: Wed, 10 Jun 2020 17:07:42 +0200
Subject: [PATCH 49/49] Changed to a local version of the "install.sh"

---
 .travis.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index abf4631..2510e27 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,7 +35,9 @@ env:
     - DOXYFILE: $TRAVIS_BUILD_DIR/Doxyfile
 
 before_install:
-  - source <(curl -SLs https://raw.githubusercontent.com/adafruit/travis-ci-arduino/master/install.sh)
+#  - source <(curl -SLs https://raw.githubusercontent.com/adafruit/travis-ci-arduino/master/install.sh)
+  - source <(curl -SLs https://zanduino.github.io/Travis/install.sh)
+  
 
 install: