Skip to content

Commit

Permalink
Add support for BMP085/180
Browse files Browse the repository at this point in the history
  • Loading branch information
DTTerastar committed Aug 13, 2022
1 parent f057318 commit ea27ab5
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 4 deletions.
1 change: 1 addition & 0 deletions platformio.ini
Expand Up @@ -74,6 +74,7 @@ lib_deps =
beegee-tokyo/DHT sensor library for ESPx @ ^1.18
starmbi/hp_BH1750 @ ^1.0.0
adafruit/Adafruit BME280 Library@^2.2.2
adafruit/Adafruit BMP085 Library@^1.2.1
adafruit/Adafruit BMP280 Library@^2.6.3
adafruit/Adafruit TSL2561@^1.1.0

Expand Down
81 changes: 81 additions & 0 deletions src/BMP180.cpp
@@ -0,0 +1,81 @@
#ifdef SENSORS
#include "BMP180.h"

#include "globals.h"
#include "mqtt.h"
#include "defaults.h"
#include <AsyncWiFiSettings.h>
#include "string_utils.h"

#include <Adafruit_BMP085.h>

namespace BMP180
{
Adafruit_BMP085* bmp;
long BMP180_status;
String BMP180_I2c;
int BMP180_I2c_Bus;
unsigned long BMP180PreviousMillis = 0;
int sensorInterval = 60000;
bool initialized = false;

void Setup()
{
if (!I2C_Bus_1_Started && !I2C_Bus_2_Started) return;

bmp = new Adafruit_BMP085();
if (BMP180_I2c == "0x77") {
BMP180_status = bmp->begin(BMP085_STANDARD, BMP180_I2c_Bus == 1 ? &Wire : &Wire1);
} else {
return;
}

if (!BMP180_status) {
Serial.println("[BMP180] Couldn't find a sensor, check your wiring and I2C address!");
} else {
initialized = true;
}
}

void ConnectToWifi()
{
AsyncWiFiSettings.html("h4", "BMP085/BMP180 Barometric Pressure + Temp sensor");
BMP180_I2c_Bus = AsyncWiFiSettings.integer("BMP180_I2c_Bus", 1, 2, DEFAULT_I2C_BUS, "I2C Bus");
BMP180_I2c = AsyncWiFiSettings.string("BMP180_I2c", "", "I2C address (0x77)");
}

void SerialReport()
{
if (!I2C_Bus_1_Started && !I2C_Bus_2_Started) return;
if (BMP180_I2c.isEmpty()) return;
Serial.print("BMP180_I2c Sensor: ");
Serial.println(BMP180_I2c + " on bus " + BMP180_I2c_Bus);
}

void Loop()
{
if (!I2C_Bus_1_Started && !I2C_Bus_2_Started) return;
if (!initialized) return;

if (BMP180PreviousMillis == 0 || millis() - BMP180PreviousMillis >= sensorInterval) {

float temperature = bmp->readTemperature();
float pressure = bmp->readPressure() / 100.0F;

mqttClient.publish((roomsTopic + "/bmp180_temperature").c_str(), 0, 1, String(temperature).c_str());
mqttClient.publish((roomsTopic + "/bmp180_pressure").c_str(), 0, 1, String(pressure).c_str());

BMP180PreviousMillis = millis();
}
}

bool SendDiscovery()
{
if (BMP180_I2c.isEmpty()) return true;

return sendSensorDiscovery("BMP180 Temperature", EC_NONE, "temperature", "°C")
&& sendSensorDiscovery("BMP180 Pressure", EC_NONE, "pressure", "hPa");
}
}

#endif
14 changes: 14 additions & 0 deletions src/BMP180.h
@@ -0,0 +1,14 @@
#pragma once
#ifdef SENSORS
#include <ArduinoJson.h>

namespace BMP180
{
void ConnectToWifi();
void SerialReport();
bool SendDiscovery();
void Setup();
void Loop();
}

#endif
8 changes: 5 additions & 3 deletions src/BMP280.cpp
Expand Up @@ -55,6 +55,8 @@ namespace BMP280

void SerialReport()
{
if (!I2C_Bus_1_Started && !I2C_Bus_2_Started) return;
if (BMP280_I2c.isEmpty()) return;
Serial.print("BMP280_I2c Sensor: ");
Serial.println(BMP280_I2c + " on bus " + BMP280_I2c_Bus);
}
Expand All @@ -64,14 +66,14 @@ namespace BMP280
if (!I2C_Bus_1_Started && !I2C_Bus_2_Started) return;
if (!initialized) return;

if (millis() - BMP280PreviousMillis >= sensorInterval) {
if (BMP280PreviousMillis == 0 || millis() - BMP280PreviousMillis >= sensorInterval) {

bmp->takeForcedMeasurement();
float temperature = bmp->readTemperature();
float pressure = bmp->readPressure() / 100.0F;

mqttClient.publish((roomsTopic + "/BMP280_temperature").c_str(), 0, 1, String(temperature).c_str());
mqttClient.publish((roomsTopic + "/BMP280_pressure").c_str(), 0, 1, String(pressure).c_str());
mqttClient.publish((roomsTopic + "/bmp280_temperature").c_str(), 0, 1, String(temperature).c_str());
mqttClient.publish((roomsTopic + "/bmp280_pressure").c_str(), 0, 1, String(pressure).c_str());

BMP280PreviousMillis = millis();
}
Expand Down
5 changes: 5 additions & 0 deletions src/main.cpp
Expand Up @@ -54,6 +54,7 @@ bool sendTelemetry(int totalSeen, int totalFpSeen, int totalFpQueried, int total
&& DHT::SendDiscovery()
&& BH1750::SendDiscovery()
&& BME280::SendDiscovery()
&& BMP180::SendDiscovery()
&& BMP280::SendDiscovery()
&& TSL2561::SendDiscovery()
&& HX711::SendDiscovery()
Expand Down Expand Up @@ -224,6 +225,7 @@ void setupNetwork()

BH1750::ConnectToWifi();
BME280::ConnectToWifi();
BMP180::ConnectToWifi();
BMP280::ConnectToWifi();
TSL2561::ConnectToWifi();
HX711::ConnectToWifi();
Expand Down Expand Up @@ -261,6 +263,7 @@ void setupNetwork()
DHT::SerialReport();
BH1750::SerialReport();
BME280::SerialReport();
BMP180::SerialReport();
BMP280::SerialReport();
TSL2561::SerialReport();
HX711::SerialReport();
Expand Down Expand Up @@ -579,6 +582,7 @@ void setup()
I2C::Setup();
BH1750::Setup();
BME280::Setup();
BMP180::Setup();
BMP280::Setup();
TSL2561::Setup();
HX711::Setup();
Expand All @@ -601,6 +605,7 @@ void loop()
DHT::Loop();
BH1750::Loop();
BME280::Loop();
BMP180::Loop();
BMP280::Loop();
TSL2561::Loop();
HX711::Loop();
Expand Down
3 changes: 2 additions & 1 deletion src/main.h
Expand Up @@ -31,8 +31,9 @@
#ifdef SENSORS
#include <Wire.h>

#include "BMP280.h"
#include "BME280.h"
#include "BMP180.h"
#include "BMP280.h"
#include "TSL2561.h"
#include "HX711.h"
#include "DHT.h"
Expand Down

0 comments on commit ea27ab5

Please sign in to comment.