#include #include #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); }