You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.9 KiB
120 lines
4.9 KiB
#define SEALEVELPRESSURE_HPA (1021) |
|
bool weatherInited = false; |
|
int previousWeather = -69420; |
|
int weatherUpdateInterval = 10; |
|
Adafruit_BME280 bme1; |
|
Adafruit_BME280 bme2; |
|
unsigned long delayTime; |
|
BH1750 lightMeter1(0x23); |
|
BH1750 lightMeter2(0x5C); |
|
void weatherInit() { |
|
Wire.begin(D3, D4); |
|
if (razhroscevanje) Serial.println(F("BME280 initialising ...")); |
|
unsigned status[2]; |
|
status[0] = bme1.begin(0x76); |
|
status[1] = bme2.begin(0x77); |
|
if (!status[0]) { |
|
if(razhroscevanje) { |
|
Serial.println("[1] Could not find a valid BME280 sensor, check wiring, address, sensor ID!"); |
|
Serial.print("SensorID was: 0x"); Serial.println(bme1.sensorID(),16); |
|
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n"); |
|
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n"); |
|
Serial.print(" ID of 0x60 represents a BME 280.\n"); |
|
Serial.print(" ID of 0x61 represents a BME 680.\n"); |
|
Serial.println(); |
|
} |
|
} |
|
if (!status[1]) { |
|
if(razhroscevanje) { |
|
Serial.println("[1] Could not find a valid BME280 sensor, check wiring, address, sensor ID!"); |
|
Serial.print("SensorID was: 0x"); Serial.println(bme2.sensorID(),16); |
|
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n"); |
|
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n"); |
|
Serial.print(" ID of 0x60 represents a BME 280.\n"); |
|
Serial.print(" ID of 0x61 represents a BME 680.\n"); |
|
Serial.println(); |
|
} |
|
} |
|
float lux1 = lightMeter1.readLightLevel(); |
|
float lux2 = lightMeter2.readLightLevel(); |
|
if(razhroscevanje) { |
|
Serial.print("[1] Temperature = "); |
|
Serial.print(bme1.readTemperature()); |
|
Serial.println(" *C"); |
|
Serial.print("[1] Pressure = "); |
|
Serial.print(bme1.readPressure() / 100.0F); |
|
Serial.println(" hPa"); |
|
Serial.print("[1] Approx. Altitude = "); |
|
Serial.print(bme1.readAltitude(SEALEVELPRESSURE_HPA)); |
|
Serial.println(" m"); |
|
Serial.print("[1] Humidity = "); |
|
Serial.print(bme1.readHumidity()); |
|
Serial.println(" %"); |
|
Serial.print("[1] Luminance= "); |
|
Serial.print(lightMeter1.readLightLevel()); |
|
Serial.println(" lux"); |
|
Serial.println(); |
|
Serial.print("[2] Temperature = "); |
|
Serial.print(bme2.readTemperature()); |
|
Serial.println(" *C"); |
|
Serial.print("[2] Pressure = "); |
|
Serial.print(bme2.readPressure() / 100.0F); |
|
Serial.println(" hPa"); |
|
Serial.print("[2] Approx. Altitude = "); |
|
Serial.print(bme2.readAltitude(SEALEVELPRESSURE_HPA)); |
|
Serial.println(" m"); |
|
Serial.print("[2] Humidity = "); |
|
Serial.print(bme2.readHumidity()); |
|
Serial.println(" %"); |
|
Serial.print("[2] Luminance= "); |
|
Serial.print(lightMeter2.readLightLevel()); |
|
Serial.println(" lx"); |
|
Serial.println(); |
|
} |
|
if (lightMeter1.begin(BH1750::CONTINUOUS_HIGH_RES_MODE_2)) { |
|
if (razhroscevanje )Serial.println(F("[1] BH1750 Advanced begin")); |
|
} else { |
|
if (razhroscevanje )Serial.println(F("[1] Error initialising BH1750")); |
|
} |
|
if (lightMeter2.begin(BH1750::CONTINUOUS_HIGH_RES_MODE_2)) { |
|
if (razhroscevanje )Serial.println(F("[2] BH1750 Advanced begin")); |
|
} else { |
|
if (razhroscevanje )Serial.println(F("[2] Error initialising BH1750")); |
|
} |
|
if(!SPIFFS.exists("/www/var/weather.csv")) { |
|
writefile("/www/var/weather.csv", "ura,temperatura1,pritisk1,visina1,vlaznost1,temperatura2,pritisk2,visina2,vlaznost2,svetlost1,svetlost2\n"); |
|
} |
|
if(readfile("/403/weatherUpdateInterval.txt").length() < 1) { |
|
writefile("/403/weatherUpdateInterval.txt", "10"); |
|
} |
|
weatherInited = true; |
|
previousWeather = now(); |
|
} |
|
void weatherHeartbeat () { |
|
if(weatherInited == false) { |
|
weatherInit(); |
|
} else { |
|
if(previousWeather + weatherUpdateInterval < now()) { |
|
weatherUpdateInterval = readfile("/403/weatherUpdateInterval.txt").toInt(); // for updating the time |
|
File file = SPIFFS.open("/www/var/weather.csv", "a+"); |
|
if (!file) { |
|
if (razhroscevanje) Serial.println("There was an error opening the file for writing (weather.csv)"); |
|
return; |
|
} |
|
String temperatura1 = String(bme1.readTemperature()); |
|
String pritisk1 = String(bme1.readPressure() / 100.0F); |
|
String visina1 = String(bme1.readAltitude(SEALEVELPRESSURE_HPA)); |
|
String vlaznost1 = String(bme1.readHumidity()); |
|
String temperatura2 = String(bme2.readTemperature()); |
|
String pritisk2 = String(bme2.readPressure() / 100.0F); |
|
String visina2 = String(bme2.readAltitude(SEALEVELPRESSURE_HPA)); |
|
String vlaznost2 = String(bme2.readHumidity()); |
|
String svetlost1 = String(lightMeter1.readLightLevel()); |
|
String svetlost2 = String(lightMeter2.readLightLevel()); |
|
if (!file.println(String(now())+","+temperatura1+","+pritisk1+","+visina1+","+vlaznost1+","+temperatura2+","+pritisk2+","+visina2+","+vlaznost2+","+svetlost1+","+svetlost2)) { |
|
if (razhroscevanje) Serial.println("File write failed (weather.csv)"); |
|
} |
|
previousWeather = now(); |
|
} |
|
} |
|
}
|
|
|