I have installed a hot water temp monitor on my hot water heater’s flue gas piping as its get hot when the hot water heater is running and cools down when the hot water heater is offline. This way I can tell when the hot water heater is online or offline.
I had set a temp limit in the code which when exceeded, it notifies me that the hot water tank is online. I want to however change the temp limit in my code by using a slider widget so I can adjust the temp limit right from the blynk app.
With the temp limit set in the code, the notification widget worked fine, however after I added the slider widget, it doesnt notify me that the tank is online. Not sure what I am doing wrong.
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
#define DHTTYPE DHT22
#define DHTPIN 2 //pin gpio 12 in sensor
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
//connect DHT22 leg 1 to 5v on wemos, leg 2 to d4 ( # 2 in code) on wemos, leg 4 to ground on wemos)
// blynk two guages, v0 pin and v1 pin
char auth[] = "xxxxx";
float t;
float h;
bool temperatureMoved = true;
int maxvalue = 0;
#ifndef STASSID
#define STASSID "xxxx"
#define STAPSK "xxxx"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, password);
dht.begin();
timer.setInterval(2000, sendUptime);
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
ArduinoOTA.setHostname("hot water tank flue gas temp");
// No authentication by default
// ArduinoOTA.setPassword("admin");
// Password can be set with it's md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
BLYNK_WRITE(V2)
{
maxvalue == param.asInt();
}
void sendUptime()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
Blynk.virtualWrite(V0, t); // virtual pin
Blynk.virtualWrite(V1, h); // virtual pin
if ((t < maxvalue) && (temperatureMoved == true)) {
temperatureMoved = false;
Blynk.notify(String("STAND BY mode. Flue Temp:") + t + String("C"));
}
if ((t >= maxvalue) && (temperatureMoved == false)) {
temperatureMoved = true;
Blynk.notify(String("Water heater ON. Flue Temp:") + t + String("C"));
}
}
void loop() {
ArduinoOTA.handle();
Blynk.run();
timer.run();
}