converted serial prints into MQTT status log messages
This commit is contained in:
parent
f1d55ed603
commit
57d18af76d
@ -3,6 +3,7 @@
|
||||
#define LOG_LEVEL_ERROR 0
|
||||
#define LOG_LEVEL_WARN 1
|
||||
#define LOG_LEVEL_INFO 2
|
||||
#define LOG_LEVEL_DEBUG 3
|
||||
|
||||
#define LOG_TANKSENSOR_FAIL_DETECT "Failed to detect and initialize distance sensor!"
|
||||
#define LOG_TANKSENSOR_FAIL_DETECT_CODE -1
|
||||
@ -12,3 +13,13 @@
|
||||
|
||||
#define LOG_BACKUP_FAILED "Backup error"
|
||||
#define LOG_BACKUP_FAILED_CODE -2
|
||||
|
||||
#define LOG_PUMP_BUTNOTANK_MESSAGE "Want to pump but no water"
|
||||
#define LOG_PUMP_BUTNOTANK_CODE -3
|
||||
|
||||
#define LOG_PUMP_AND_DOWNLOADMODE "Download mode, ignoring pump request"
|
||||
#define LOG_PUMP_AND_DOWNLOADMODE_CODE 2
|
||||
|
||||
#define LOG_DEBUG_CODE 1001
|
||||
#define LOG_NOPUMP_LOWLIGHT 100
|
||||
#define LOG_NOPUMPS 101
|
@ -125,6 +125,9 @@ public:
|
||||
{
|
||||
return this->mSetting->pPumpOnlyWhenLowLight->get();
|
||||
}
|
||||
|
||||
|
||||
void publishState(String state);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -87,6 +87,13 @@ void Plant::deactivatePump(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Plant::publishState(String state) {
|
||||
if (this->mConnected)
|
||||
{
|
||||
this->mPlant->setProperty("state").send(state);
|
||||
}
|
||||
}
|
||||
|
||||
void Plant::activatePump(void)
|
||||
{
|
||||
int plantId = this->mPlantId;
|
||||
@ -108,6 +115,7 @@ void Plant::advertise(void)
|
||||
//FIXME add .settable(this->switchHandler)
|
||||
this->mPlant->advertise("moist").setName("Percent").setDatatype("number").setUnit("%");
|
||||
this->mPlant->advertise("moistraw").setName("adc").setDatatype("number").setUnit("3.3/4096V");
|
||||
this->mPlant->advertise("state").setName("state").setDatatype("string");
|
||||
}
|
||||
|
||||
/* FIXME
|
||||
|
@ -110,7 +110,7 @@ void espDeepSleepFor(long seconds, bool activatePump)
|
||||
{
|
||||
if (mDownloadMode)
|
||||
{
|
||||
Serial << "abort deepsleep, DownloadMode active" << endl;
|
||||
log(LOG_LEVEL_DEBUG, "abort deepsleep, DownloadMode active", LOG_DEBUG_CODE);
|
||||
return;
|
||||
}
|
||||
if (mAliveWasRead)
|
||||
@ -120,11 +120,11 @@ void espDeepSleepFor(long seconds, bool activatePump)
|
||||
long cTime = getCurrentTime();
|
||||
if (cTime < 100000)
|
||||
{
|
||||
Serial << "Wait for ntp" << endl;
|
||||
delay(100);
|
||||
}
|
||||
else
|
||||
{
|
||||
log(LOG_LEVEL_DEBUG, "NTP timeout before deepsleep", LOG_DEBUG_CODE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -159,19 +159,13 @@ void espDeepSleepFor(long seconds, bool activatePump)
|
||||
gpio_hold_en(OUTPUT_PUMP6);
|
||||
//FIXME fix for outher outputs
|
||||
|
||||
Serial.print("Trying to sleep for ");
|
||||
Serial.print(seconds);
|
||||
Serial.println(" seconds");
|
||||
esp_sleep_enable_timer_wakeup((seconds * 1000U * 1000U));
|
||||
Serial.flush();
|
||||
if (mAliveWasRead)
|
||||
{
|
||||
Homie.prepareToSleep();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial << "Bye offline mode" << endl;
|
||||
Serial.flush();
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
}
|
||||
@ -179,10 +173,6 @@ void espDeepSleepFor(long seconds, bool activatePump)
|
||||
//requires homie being started
|
||||
void readOneWireSensors()
|
||||
{
|
||||
|
||||
Serial << "Read OneWire" << endl;
|
||||
Serial.flush();
|
||||
|
||||
for (uint8_t i = 0; i < sensors.getDeviceCount(); i++)
|
||||
{
|
||||
uint8_t ds18b20Address[8];
|
||||
@ -362,8 +352,6 @@ void onHomieEvent(const HomieEvent &event)
|
||||
switch (event.type)
|
||||
{
|
||||
case HomieEventType::READY_TO_SLEEP:
|
||||
Serial << "Bye homie mode" << endl;
|
||||
Serial.flush();
|
||||
esp_deep_sleep_start();
|
||||
break;
|
||||
case HomieEventType::SENDING_STATISTICS:
|
||||
@ -376,10 +364,8 @@ void onHomieEvent(const HomieEvent &event)
|
||||
}
|
||||
mSensorsRead = true; // MQTT is working, deactivate timeout logic
|
||||
|
||||
Serial.printf("NTP Setup with server %s\r\n", ntpServer.get());
|
||||
configTime(0, 0, ntpServer.get());
|
||||
|
||||
Serial << "publish plants mqtt" << endl;
|
||||
for (int i = 0; i < MAX_PLANTS; i++)
|
||||
{
|
||||
mPlants[i].postMQTTconnection();
|
||||
@ -399,7 +385,6 @@ void onHomieEvent(const HomieEvent &event)
|
||||
|
||||
break;
|
||||
case HomieEventType::OTA_STARTED:
|
||||
Homie.getLogger() << "OTA started" << endl;
|
||||
for (int i = 0; i < MAX_PLANTS; i++)
|
||||
{
|
||||
mPlants[i].deactivatePump();
|
||||
@ -411,7 +396,6 @@ void onHomieEvent(const HomieEvent &event)
|
||||
mDownloadMode = true;
|
||||
break;
|
||||
case HomieEventType::OTA_SUCCESSFUL:
|
||||
Homie.getLogger() << "OTA successful" << endl;
|
||||
digitalWrite(OUTPUT_ENABLE_SENSOR, LOW);
|
||||
digitalWrite(OUTPUT_ENABLE_PUMP, LOW);
|
||||
ESP.restart();
|
||||
@ -430,22 +414,26 @@ int determineNextPump()
|
||||
Plant plant = mPlants[i];
|
||||
if (!plant.isPumpTriggerActive())
|
||||
{
|
||||
Serial.printf("%d Skip deactivated pump\r\n", i);
|
||||
plant.publishState("deactivated");
|
||||
log(LOG_LEVEL_DEBUG, String(i + " Skip deactivated pump"), LOG_DEBUG_CODE);
|
||||
continue;
|
||||
}
|
||||
if ((rtcLastWateringPlant[i] + plant.getCooldownInSeconds()) > getCurrentTime())
|
||||
{
|
||||
Serial.printf("%d Skipping due to cooldown %ld / %ld \r\n", i, rtcLastWateringPlant[i], plant.getCooldownInSeconds());
|
||||
plant.publishState("cooldown");
|
||||
log(LOG_LEVEL_DEBUG, String(i+" Skipping due to cooldown " + (rtcLastWateringPlant[i] + plant.getCooldownInSeconds())), LOG_DEBUG_CODE);
|
||||
continue;
|
||||
}
|
||||
if (!isLowLight && plant.isAllowedOnlyAtLowLight())
|
||||
{
|
||||
Serial.printf("%d No pump required: due to light\r\n", i);
|
||||
plant.publishState("sunny");
|
||||
log(LOG_LEVEL_DEBUG, String(i+" No pump required: due to light"), LOG_DEBUG_CODE);
|
||||
continue;
|
||||
}
|
||||
if (plant.getCurrentMoisture() == MISSING_SENSOR)
|
||||
{
|
||||
Serial.printf("%d No pump possible: missing sensor \r\n", i);
|
||||
plant.publishState("nosensor");
|
||||
log(LOG_LEVEL_DEBUG, String(i+" No pump possible: missing sensor"), LOG_DEBUG_CODE);
|
||||
continue;
|
||||
}
|
||||
if (plant.isPumpRequired())
|
||||
@ -459,18 +447,20 @@ int determineNextPump()
|
||||
/* no time from NTP received */
|
||||
(getCurrentTime() < 10000))
|
||||
{
|
||||
Serial.printf("%d Requested pumping\r\n", i);
|
||||
plant.publishState("active");
|
||||
log(LOG_LEVEL_DEBUG, String(i+" Requested pumping"), LOG_DEBUG_CODE);
|
||||
pumpToUse = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("%d ignored due to time boundary: %d to %d (current %d)\r\n", i, plant.getHoursStart(), plant.getHoursEnd(), getCurrentHour());
|
||||
plant.publishState("after-work");
|
||||
log(LOG_LEVEL_DEBUG, String(i+" ignored due to time boundary: " + String(plant.getHoursStart()) + " to " + plant.getHoursEnd() + " ( current " + getCurrentHour() + " )"), LOG_DEBUG_CODE);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("%d No pump required: moisture acceptable %f / %ld\r\n", i, plant.getCurrentMoisture(), plant.getSettingsMoisture());
|
||||
plant.publishState("wet");
|
||||
}
|
||||
}
|
||||
return pumpToUse;
|
||||
@ -486,10 +476,10 @@ int determineNextPump()
|
||||
*/
|
||||
bool aliveHandler(const HomieRange &range, const String &value)
|
||||
{
|
||||
if (range.isRange)
|
||||
if (range.isRange) {
|
||||
return false; // only one controller is present
|
||||
Serial.println("aliuve handler");
|
||||
Serial.flush();
|
||||
}
|
||||
|
||||
if (value.equals("ON") || value.equals("On") || value.equals("1"))
|
||||
{
|
||||
mDownloadMode = true;
|
||||
@ -546,8 +536,6 @@ void setup()
|
||||
{
|
||||
mPlants[i].init();
|
||||
}
|
||||
Serial.println("plants init");
|
||||
Serial.flush();
|
||||
// read button
|
||||
pinMode(BUTTON, INPUT);
|
||||
|
||||
@ -663,7 +651,6 @@ void setup()
|
||||
}
|
||||
else
|
||||
{
|
||||
printFile("/homie/Readme.md");
|
||||
if (doesFileExist(CONFIG_FILE))
|
||||
{
|
||||
printFile(CONFIG_FILE);
|
||||
@ -825,13 +812,13 @@ void plantcontrol()
|
||||
lastPumpRunning = determineNextPump();
|
||||
if (lastPumpRunning != -1 && !hasWater)
|
||||
{
|
||||
Serial.println("Want to pump but no water");
|
||||
log(LOG_LEVEL_ERROR, LOG_PUMP_BUTNOTANK_MESSAGE, LOG_PUMP_BUTNOTANK_CODE);
|
||||
}
|
||||
else if (lastPumpRunning != -1 && hasWater)
|
||||
{
|
||||
if (mDownloadMode)
|
||||
{
|
||||
Serial.println("Mode 3 active, ignoring pump request");
|
||||
log(LOG_LEVEL_INFO, LOG_PUMP_AND_DOWNLOADMODE, LOG_PUMP_AND_DOWNLOADMODE_CODE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -851,19 +838,17 @@ void plantcontrol()
|
||||
{
|
||||
if (mSolarVoltage < SOLAR_CHARGE_MIN_VOLTAGE)
|
||||
{
|
||||
Serial.print(mSolarVoltage);
|
||||
Serial.println("V! No pumps to activate and low light, deepSleepNight");
|
||||
log(LOG_LEVEL_INFO, String(String(mSolarVoltage) + "V! No pumps to activate and low light, deepSleepNight"), LOG_NOPUMP_LOWLIGHT);
|
||||
espDeepSleepFor(deepSleepNightTime.get(), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("No pumps to activate, deepSleep");
|
||||
log(LOG_LEVEL_INFO, "No pumps to activate, deepSleep", LOG_NOPUMPS);
|
||||
espDeepSleepFor(deepSleepTime.get(), false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Running pump, watering deepsleep");
|
||||
espDeepSleepFor(wateringDeepSleep.get(), true);
|
||||
}
|
||||
}
|
||||
@ -888,4 +873,4 @@ void log(int level, String message, int statusCode)
|
||||
delete logTopic;
|
||||
}
|
||||
Serial << statusCode << "@" << level << " : " << message << endl;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user