Add BME280 support to log temperature, humidity, and air pressure
This commit is contained in:
parent
f2d37de5fb
commit
e537f9b42f
1 changed files with 35 additions and 0 deletions
|
@ -3,9 +3,14 @@
|
||||||
|
|
||||||
// #include <ArduinoJson.h>
|
// #include <ArduinoJson.h>
|
||||||
#include <ESP8266WiFi.h>
|
#include <ESP8266WiFi.h>
|
||||||
|
|
||||||
#include "./lib/pubsubclient/PubSubClient.h"
|
#include "./lib/pubsubclient/PubSubClient.h"
|
||||||
#include "./lib/pubsubclient/PubSubClient.cpp"
|
#include "./lib/pubsubclient/PubSubClient.cpp"
|
||||||
|
|
||||||
|
// These libraries need installing in the Arduino IDE Library Manager (if you install the BME280 one it should prompt for the unified sensor library automatically)
|
||||||
|
#include <Adafruit_Sensor.h>
|
||||||
|
#include <Adafruit_BME280.h>
|
||||||
|
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#define MULTIPLEX_PINA D5
|
#define MULTIPLEX_PINA D5
|
||||||
|
@ -38,6 +43,8 @@
|
||||||
WiFiClientSecure transport;
|
WiFiClientSecure transport;
|
||||||
PubSubClient mqtt;
|
PubSubClient mqtt;
|
||||||
|
|
||||||
|
Adafruit_BME280 bme; // I2C
|
||||||
|
|
||||||
float read_analog(int channel) {
|
float read_analog(int channel) {
|
||||||
|
|
||||||
const char* bin = std::bitset<8>(channel).to_string().c_str();
|
const char* bin = std::bitset<8>(channel).to_string().c_str();
|
||||||
|
@ -134,6 +141,15 @@ void setup() {
|
||||||
while(true) delay(10000);
|
while(true) delay(10000);
|
||||||
}
|
}
|
||||||
Serial.println("ok");
|
Serial.println("ok");
|
||||||
|
|
||||||
|
Serial.print("BME280: ");
|
||||||
|
|
||||||
|
if(!bme.begin(0x76)) {
|
||||||
|
Serial.println("failed!");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Serial.println("ok");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
@ -141,6 +157,9 @@ void loop() {
|
||||||
float soil_b = read_analog(SOIL_B);
|
float soil_b = read_analog(SOIL_B);
|
||||||
float water_level_a = read_analog(WATER_LEVEL_A);
|
float water_level_a = read_analog(WATER_LEVEL_A);
|
||||||
float water_level_b = read_analog(WATER_LEVEL_B);
|
float water_level_b = read_analog(WATER_LEVEL_B);
|
||||||
|
float temp = bme.readTemperature();
|
||||||
|
float humidity = bme.readHumidity();
|
||||||
|
float pressure = bme.readPressure() / 100.0F;
|
||||||
|
|
||||||
// StaticJsonDocument<96> data;
|
// StaticJsonDocument<96> data;
|
||||||
|
|
||||||
|
@ -165,6 +184,22 @@ void loop() {
|
||||||
water_level_b
|
water_level_b
|
||||||
)) Serial.println("[mqtt] Failed to send message");
|
)) Serial.println("[mqtt] Failed to send message");
|
||||||
|
|
||||||
|
if(!send_mqtt(
|
||||||
|
"autoplant-a",
|
||||||
|
"temperature",
|
||||||
|
temp
|
||||||
|
)) Serial.println("[mqtt] Failed to send message");
|
||||||
|
if(!send_mqtt(
|
||||||
|
"autoplant-a",
|
||||||
|
"humidity",
|
||||||
|
humidity
|
||||||
|
)) Serial.println("[mqtt] Failed to send message");
|
||||||
|
if(!send_mqtt(
|
||||||
|
"autoplant-a",
|
||||||
|
"pressure",
|
||||||
|
pressure
|
||||||
|
)) Serial.println("[mqtt] Failed to send message");
|
||||||
|
|
||||||
// data["id"] = "autoplant-a";
|
// data["id"] = "autoplant-a";
|
||||||
// data["sensor"] = "soil";
|
// data["sensor"] = "soil";
|
||||||
// data["value"] = soil_a;
|
// data["value"] = soil_a;
|
||||||
|
|
Loading…
Reference in a new issue