70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
#include <Adafruit_Sensor.h>
|
|
#include <Adafruit_BME280.h>
|
|
|
|
|
|
#define SEALEVELPRESSURE_HPA (1013.25)
|
|
|
|
Adafruit_BME280 bme; // I2C
|
|
|
|
struct {
|
|
char temperature[15] = {0};
|
|
char pressure[15] = {0};
|
|
char approx_altitud[15] = {0};
|
|
char humity[15] = {0};
|
|
} BME280Data;
|
|
|
|
|
|
|
|
void Init_BME280(){
|
|
bool status = bme.begin();
|
|
if (!status) {
|
|
Serial.println("Could not find a valid BME280 sensor, check wiring!");
|
|
while (1);
|
|
}
|
|
}
|
|
|
|
void read_BME_280() {
|
|
|
|
|
|
Serial.print("Temperature:\t\t");
|
|
float t = bme.readTemperature();
|
|
dtostrf(t,10,4,BME280Data.temperature);
|
|
Serial.print(BME280Data.temperature);
|
|
Serial.println(" °C");
|
|
//Serial.print("Diff zu DS1820 \t\t");Serial.print(t-valTemp,4); Serial.println(" °C");
|
|
|
|
Serial.print("Humidity:\t\t");
|
|
float h = bme.readHumidity();
|
|
dtostrf(h,8,2,BME280Data.humity);
|
|
Serial.print(BME280Data.humity);
|
|
Serial.println(" %");
|
|
|
|
Serial.print("Pressure:\t\t");
|
|
float p = bme.readPressure() / 100.0F;
|
|
p = p + 22;
|
|
dtostrf(p,5,0,BME280Data.pressure);
|
|
Serial.print(BME280Data.pressure);
|
|
Serial.println(" hPa");
|
|
|
|
Serial.print("Approx. Altitude:\t");
|
|
float a = bme.readAltitude(SEALEVELPRESSURE_HPA);
|
|
dtostrf(a,5,0,BME280Data.approx_altitud);
|
|
Serial.print(BME280Data.approx_altitud);
|
|
Serial.println(" m über NN");
|
|
|
|
Serial.println();
|
|
}
|
|
void M2M_BME280(long deviceId = 4711) {
|
|
char topic[100];
|
|
sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/temperature_BME_280" );
|
|
client.publish(topic, BME280Data.temperature, true);
|
|
sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/pressure" );
|
|
client.publish(topic, BME280Data.pressure, true);
|
|
sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/humity" );
|
|
client.publish(topic, BME280Data.humity, true);
|
|
sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/approx_altitude" );
|
|
client.publish(topic, BME280Data.approx_altitud);
|
|
//
|
|
//delay(500);
|
|
}
|