make shit work more

This commit is contained in:
Empire 2020-10-31 03:51:35 +01:00
parent 156e721691
commit fcaca7435f
2 changed files with 24 additions and 52 deletions

View File

@ -36,21 +36,15 @@ int Ds18B20::readAllTemperatures(float* pTemperatures, int maxTemperatures) {
byte addr[8]; byte addr[8];
uint8_t scratchPad[SCRATCHPADSIZE]; uint8_t scratchPad[SCRATCHPADSIZE];
int currentTemp = 0; int currentTemp = 0;
#ifdef DS_DEBUG
int i;
#endif
while (this->mDs->search(addr)) { while (this->mDs->search(addr)) {
#ifdef DS_DEBUG
Serial.print(" ROM =");
for (i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr[i], HEX);
}
#endif
this->mDs->reset(); this->mDs->reset();
this->mDs->select(addr); this->mDs->select(addr);
this->mDs->write(STARTCONV); this->mDs->write(STARTCONV);
}
delay(750);
while (this->mDs->search(addr)) {
this->mDs->reset(); this->mDs->reset();
this->mDs->select(addr); this->mDs->select(addr);
this->mDs->write(READSCRATCH); this->mDs->write(READSCRATCH);
@ -68,14 +62,6 @@ int Ds18B20::readAllTemperatures(float* pTemperatures, int maxTemperatures) {
// byte 7: DS18S20: COUNT_PER_C // byte 7: DS18S20: COUNT_PER_C
// DS18B20 & DS1822: store for crc // DS18B20 & DS1822: store for crc
// byte 8: SCRATCHPAD_CRC // byte 8: SCRATCHPAD_CRC
#ifdef DS_DEBUG
Serial.write("\r\nDATA:");
for (uint8_t i = 0; i < 9; i++) {
Serial.print(scratchPad[i], HEX);
}
#else
delay(50);
#endif
for (uint8_t i = 0; i < 9; i++) { for (uint8_t i = 0; i < 9; i++) {
scratchPad[i] = this->mDs->read(); scratchPad[i] = this->mDs->read();
} }

View File

@ -51,8 +51,8 @@ RTC_DATA_ATTR long lastWaterValue = 0;
const char* ntpServer = "pool.ntp.org"; const char* ntpServer = "pool.ntp.org";
bool warmBoot = true; bool warmBoot = true;
bool mode3Active = false; /**< Controller must not sleep */ bool volatile mode3Active = false; /**< Controller must not sleep */
bool mDeepsleep = false; bool volatile mDeepsleep = false;
int plantSensor1 = 0; int plantSensor1 = 0;
@ -121,7 +121,9 @@ bool prepareSleep(void *) {
} }
void espDeepSleepFor(long seconds, bool activatePump = false){ void espDeepSleepFor(long seconds, bool activatePump = false){
delay(1500); if(mode3Active){
return;
}
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
@ -147,7 +149,8 @@ void espDeepSleepFor(long seconds, bool activatePump = false){
Serial.print(seconds); Serial.print(seconds);
Serial.println(" seconds"); Serial.println(" seconds");
esp_sleep_enable_timer_wakeup( (seconds * 1000U * 1000U) ); esp_sleep_enable_timer_wakeup( (seconds * 1000U * 1000U) );
wait4sleep.in(500, prepareSleep); //wait4sleep.in(500, prepareSleep);
mDeepsleep=true;
} }
@ -183,27 +186,16 @@ void mode2MQTT(){
sensorSolar.setProperty("percent").send(String((100 * solarRawSensor.getAverage() ) / 4095)); sensorSolar.setProperty("percent").send(String((100 * solarRawSensor.getAverage() ) / 4095));
sensorSolar.setProperty("volt").send( String(getSolarVoltage()) ); sensorSolar.setProperty("volt").send( String(getSolarVoltage()) );
float temp[2] = { TEMP_INIT_VALUE, TEMP_INIT_VALUE }; float t1 = temp1.getMedian();
float* pFloat = temp; float t2 = temp2.getMedian();
int devices = dallas.readAllTemperatures(pFloat, 2); sensorTemp.setProperty("control").send( String(t1));
if (devices < 2) { sensorTemp.setProperty("temp").send( String(t2));
if ((pFloat[0] > TEMP_INIT_VALUE) && (pFloat[0] < TEMP_MAX_VALUE) ) {
sensorTemp.setProperty("control").send( String(pFloat[0]));
}
} else if (devices >= 2) {
if ((pFloat[0] > TEMP_INIT_VALUE) && (pFloat[0] < TEMP_MAX_VALUE) ) {
sensorTemp.setProperty("temp").send( String(pFloat[0]));
}
if ((pFloat[1] > TEMP_INIT_VALUE) && (pFloat[1] < TEMP_MAX_VALUE) ) {
sensorTemp.setProperty("control").send( String(pFloat[1]));
}
}
bool lipoTempWarning = abs(temp[0] - temp[1]) > 5; bool lipoTempWarning = t1!=85 && t2!=85 && abs(t1 - t2) > 10;
if(lipoTempWarning){ if(lipoTempWarning){
Serial.println("Lipo temp incorrect, panic mode deepsleep"); Serial.println("Lipo temp incorrect, panic mode deepsleep TODO");
espDeepSleepFor(PANIK_MODE_DEEPSLEEP); //espDeepSleepFor(PANIK_MODE_DEEPSLEEP);
return; //return;
} }
bool hasWater = true;//FIXMEmWaterGone > waterLevelMin.get(); bool hasWater = true;//FIXMEmWaterGone > waterLevelMin.get();
@ -339,18 +331,12 @@ void readSensors() {
/* Required to read the temperature once */ /* Required to read the temperature once */
float temp[2] = {0, 0}; float temp[2] = {0, 0};
float* pFloat = temp; float* pFloat = temp;
for(int i=0; i < 10; i++) {
// first read returns crap, ignore result and read twice
if (dallas.readAllTemperatures(pFloat, 2) > 0) { if (dallas.readAllTemperatures(pFloat, 2) > 0) {
Serial << "t1: " << String(temp[0]) << endl; Serial << "t1: " << String(temp[0]) << endl;
Serial << "t2: " << String(temp[1]) << endl; Serial << "t2: " << String(temp[1]) << endl;
} }
delay(200);
if (i <= 2) {
temp1.add(temp[0]); temp1.add(temp[0]);
temp2.add(temp[1]); temp2.add(temp[1]);
}
}
/* Use the Ultrasonic sensor to measure waterLevel */ /* Use the Ultrasonic sensor to measure waterLevel */