LoRa_APRS_iGate/src/bme_utils.cpp
2023-06-17 18:28:40 -04:00

113 lines
2.5 KiB
C++

#include "bme_utils.h"
#include "configuration.h"
#include "gps_utils.h"
#include "display.h"
extern Configuration Config;
namespace BME_Utils {
Adafruit_BME280 bme;
void setup() {
if (Config.bme.active) {
bool status;
status = bme.begin(0x76); // Don't forget to join pins for righ direction on BME280!
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
show_display("ERROR", "", "BME sensor active", "but no sensor found...");
while (1); // sacar esto para que quede pegado si no encuentra BME280
} else {
Serial.println("init : BME280 Module ... done!");
}
} else {
Serial.println("(BME not 'active' in 'igate_config.json')");
}
}
String generateTempString(float bmeTemp) {
String strTemp;
strTemp = String((int)bmeTemp);
switch (strTemp.length()) {
case 1:
return "00" + strTemp;
break;
case 2:
return "0" + strTemp;
break;
case 3:
return strTemp;
break;
default:
return "-999";
}
}
String generateHumString(float bmeHum) {
String strHum;
strHum = String((int)bmeHum);
switch (strHum.length()) {
case 1:
return "0" + strHum;
break;
case 2:
return strHum;
break;
case 3:
if ((int)bmeHum == 100) {
return "00";
} else {
return "-99";
}
break;
default:
return "-99";
}
}
String generatePresString(float bmePress) {
String strPress;
strPress = String((int)bmePress);
switch (strPress.length()) {
case 1:
return "000" + strPress + "0";
break;
case 2:
return "00" + strPress + "0";
break;
case 3:
return "0" + strPress + "0";
break;
case 4:
return strPress + "0";
break;
case 5:
return strPress;
break;
default:
return "-99999";
}
}
String readDataSensor() {
String wx, tempStr, humStr, presStr;
float newTemp = bme.readTemperature();
float newHum = bme.readHumidity();
float newPress = (bme.readPressure() / 100.0F);
//float bat = analogRead(battery);
//bme.readAltitude(SEALEVELPRESSURE_HPA)
if (isnan(newTemp) || isnan(newHum) || isnan(newPress)) {
Serial.println("BME280 Module data failed");
wx = ".../...g...t...r...p...P...h..b.....";
return wx;
} else {
tempStr = generateTempString((newTemp * 1.8) + 32);
humStr = generateHumString(newHum);
presStr = generatePresString(newPress);
wx = ".../...g...t" + tempStr + "r...p...P...h" + humStr + "b" + presStr;
return wx;
}
}
}