Add support for the BMP085/BMP180 sensor
This commit is contained in:
parent
4c58cacc21
commit
39d3d1e66d
@ -35,17 +35,23 @@
|
|||||||
# include <DHT.h>
|
# include <DHT.h>
|
||||||
#endif // DHT_TYPE
|
#endif // DHT_TYPE
|
||||||
|
|
||||||
#ifdef HAVE_BH1750
|
#if defined(HAVE_BH1750) || defined(HAVE_BMP180)
|
||||||
# include <Wire.h>
|
# include <Wire.h>
|
||||||
|
#endif // defined(HAVE_BH1750) || defined(HAVE_BMP180)
|
||||||
|
|
||||||
|
#ifdef HAVE_BH1750
|
||||||
# include <BH1750.h>
|
# include <BH1750.h>
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
# include <Adafruit_BMP085.h>
|
||||||
|
#endif // HAVE_BMP180
|
||||||
|
|
||||||
ESP8266WebServer server(80);
|
ESP8266WebServer server(80);
|
||||||
unsigned long last_update = 0;
|
unsigned long last_update = 0;
|
||||||
|
|
||||||
#ifdef DHT_TYPE
|
#ifdef DHT_TYPE
|
||||||
DHT dht(DHT_PIN, DHT_TYPE);
|
DHT dht(DHT_PIN, DHT_TYPE);
|
||||||
float temperature = 0.0;
|
|
||||||
float humidity = 0.0;
|
float humidity = 0.0;
|
||||||
#endif // DHT_TYPE
|
#endif // DHT_TYPE
|
||||||
|
|
||||||
@ -58,6 +64,15 @@ BH1750 light;
|
|||||||
float light_level = 0;
|
float light_level = 0;
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
|
||||||
|
#if defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
|
float temperature = 0.0;
|
||||||
|
#endif // defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
|
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
Adafruit_BMP085 BMP;
|
||||||
|
uint32_t pressure = 0;
|
||||||
|
#endif // HAVE_BMP180
|
||||||
|
|
||||||
static const char TEXT_PLAIN[] PROGMEM = "text/plain";
|
static const char TEXT_PLAIN[] PROGMEM = "text/plain";
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -69,13 +84,18 @@ reply_not_found()
|
|||||||
void
|
void
|
||||||
send_metrics()
|
send_metrics()
|
||||||
{
|
{
|
||||||
static const size_t dht_size = 228;
|
static const size_t temperature_size = 117;
|
||||||
|
static const size_t humidity_size = 111;
|
||||||
static const size_t rain_size = 86;
|
static const size_t rain_size = 86;
|
||||||
static const size_t light_size = 72;
|
static const size_t light_size = 72;
|
||||||
|
static const size_t pressure_size = 82;
|
||||||
|
|
||||||
size_t message_size =
|
size_t message_size =
|
||||||
|
#if defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
|
temperature_size +
|
||||||
|
#endif // defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
#ifdef DHT_TYPE
|
#ifdef DHT_TYPE
|
||||||
dht_size +
|
humidity_size +
|
||||||
#endif // DHT_TYPE
|
#endif // DHT_TYPE
|
||||||
#ifdef RAIN_PIN
|
#ifdef RAIN_PIN
|
||||||
rain_size +
|
rain_size +
|
||||||
@ -83,14 +103,19 @@ send_metrics()
|
|||||||
#ifdef HAVE_BH1750
|
#ifdef HAVE_BH1750
|
||||||
light_size +
|
light_size +
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
pressure_size +
|
||||||
|
#endif // HAVE_BMP180
|
||||||
1;
|
1;
|
||||||
char message[message_size];
|
char message[message_size];
|
||||||
|
|
||||||
snprintf(message, message_size,
|
snprintf(message, message_size,
|
||||||
#ifdef DHT_TYPE
|
#if defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
"# HELP temperature_celsius Temperature in degrees Celsius\n"
|
"# HELP temperature_celsius Temperature in degrees Celsius\n"
|
||||||
"# TYPE temperature_celsius gauge\n"
|
"# TYPE temperature_celsius gauge\n"
|
||||||
"temperature_celsius %.2f\n"
|
"temperature_celsius %.2f\n"
|
||||||
|
#endif // defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
|
#ifdef DHT_TYPE
|
||||||
"# HELP relative_humidity Relative humidity, in percents\n"
|
"# HELP relative_humidity Relative humidity, in percents\n"
|
||||||
"# TYPE relative_humidity gauge\n"
|
"# TYPE relative_humidity gauge\n"
|
||||||
"relative_humidity %.2f\n"
|
"relative_humidity %.2f\n"
|
||||||
@ -105,8 +130,16 @@ send_metrics()
|
|||||||
"# TYPE light gauge\n"
|
"# TYPE light gauge\n"
|
||||||
"light %.2f\n"
|
"light %.2f\n"
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
"# HELP pressure Atmospheric pressure, in Pa\n"
|
||||||
|
"# TYPE pressure gauge\n"
|
||||||
|
"pressure %d\n"
|
||||||
|
#endif // HAVE_BMP180
|
||||||
|
#if defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
|
, temperature
|
||||||
|
#endif // defined(DHT_TYPE) || defined(HAVE_BMP180)
|
||||||
#ifdef DHT_TYPE
|
#ifdef DHT_TYPE
|
||||||
, temperature, humidity
|
, humidity
|
||||||
#endif // DHT_TYPE
|
#endif // DHT_TYPE
|
||||||
#ifdef RAIN_PIN
|
#ifdef RAIN_PIN
|
||||||
, raining ? 1 : 0
|
, raining ? 1 : 0
|
||||||
@ -114,6 +147,9 @@ send_metrics()
|
|||||||
#ifdef HAVE_BH1750
|
#ifdef HAVE_BH1750
|
||||||
, light_level
|
, light_level
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
, pressure
|
||||||
|
#endif // HAVE_BMP180
|
||||||
);
|
);
|
||||||
|
|
||||||
server.send(200, "text/plain; version=0.0.4; charset=utf-8", message);
|
server.send(200, "text/plain; version=0.0.4; charset=utf-8", message);
|
||||||
@ -178,6 +214,13 @@ setup()
|
|||||||
}
|
}
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
if (!bmp.begin()) {
|
||||||
|
Serial.println("Could not find the BMP180 sensor!");
|
||||||
|
stop();
|
||||||
|
}
|
||||||
|
#endif // HAVE_BMP180
|
||||||
|
|
||||||
Serial.println("All set, starting the loop.");
|
Serial.println("All set, starting the loop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,10 +230,10 @@ read_sensors()
|
|||||||
// Turn on the LED to indicate that we’re working
|
// Turn on the LED to indicate that we’re working
|
||||||
digitalWrite(LED_BUILTIN, LOW);
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
|
||||||
#ifdef DHT_TYPE
|
#if defined(DHT_TYPE)
|
||||||
temperature = dht.readTemperature();
|
temperature = dht.readTemperature();
|
||||||
humidity = dht.readHumidity();
|
humidity = dht.readHumidity();
|
||||||
#endif
|
#endif // DHT_TYPE
|
||||||
|
|
||||||
#ifdef RAIN_PIN
|
#ifdef RAIN_PIN
|
||||||
raining = (digitalRead(RAIN_PIN) == HIGH);
|
raining = (digitalRead(RAIN_PIN) == HIGH);
|
||||||
@ -200,6 +243,15 @@ read_sensors()
|
|||||||
light_level = light.readLightLevel();
|
light_level = light.readLightLevel();
|
||||||
#endif // HAVE_BH1750
|
#endif // HAVE_BH1750
|
||||||
|
|
||||||
|
#ifdef HAVE_BMP180
|
||||||
|
pressure = bmp.readPressure();
|
||||||
|
|
||||||
|
// If we have a DHT sensor, we already measured the temperature
|
||||||
|
# ifndef DHT_TYPE
|
||||||
|
temperature = bmp.readTemperature();
|
||||||
|
# endif // !DHT_TYPE
|
||||||
|
#endif // HAVE_BMP180
|
||||||
|
|
||||||
// Turn off the LED to indicate work is finished
|
// Turn off the LED to indicate work is finished
|
||||||
digitalWrite(LED_BUILTIN, HIGH);
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
}
|
}
|
||||||
|
@ -64,3 +64,10 @@
|
|||||||
// and SCL pins using the I2C_SDA_PIN and I2C_SCL_PIN defines above.
|
// and SCL pins using the I2C_SDA_PIN and I2C_SCL_PIN defines above.
|
||||||
#undef HAVE_BH1750
|
#undef HAVE_BH1750
|
||||||
//#define HAVE_BH1750
|
//#define HAVE_BH1750
|
||||||
|
|
||||||
|
// If you have a BMP180 or BMP085 pressure + temperature sensor, remove this
|
||||||
|
// #undef line and uncomment the #define HAVE_BMP180 line. You will also have
|
||||||
|
// to set the SDA and SCL pins using the I2C_SDA_PIN and I2C_SCL_PIN defines
|
||||||
|
// above.
|
||||||
|
#undef HAVE_BMP180
|
||||||
|
// #define HAVE_BMP180
|
||||||
|
Loading…
x
Reference in New Issue
Block a user