I am making a sump pump monitor
two sensors one to measure water level - this works
the other is a vibration sensor that returns HIGH when the motor is running.
The idea is to measure(time) how long the motor runs. If it runs for more than 1 minute email me.
All timers I have read about control when to do a task, I need
to measure how long the motor has run.None of the widgets seem to do what I require, so I am assuming some code must be written.
here is what I have working- water level.,
I wired the vibration sensor and was able to see it high or low on the blink app.
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define TRIGGERPIN D1
#define ECHOPIN D2
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "c48e77b790e64b05adf1ee77fb4dbb40";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "nn";
char pass[] = "";
WidgetLCD lcd(V1);
BlynkTimer timer;
// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void myTimerEvent()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V5, millis() / 1000);
}
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(TRIGGERPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
lcd.clear(); //Use it to clear the LCD Widget
lcd.print(0, 0, "Distance in cm"); // use: (position X: 0-15, position Y: 0-1, "Message you want to print")
// Please use timed events when LCD printintg in void loop to avoid sending too many commands
// It will cause a FLOOD Error, and connection will be dropped
}
void loop()
{
lcd.clear();
lcd.print(0, 0, "Depth in cm"); // use: (position X: 0-15, position Y: 0-1, "Message you want to print")
long duration, distance;
digitalWrite(TRIGGERPIN, LOW);
delayMicroseconds(3);
digitalWrite(TRIGGERPIN, HIGH);
delayMicroseconds(12);
digitalWrite(TRIGGERPIN, LOW);
duration = pulseIn(ECHOPIN, HIGH);
distance = 100-(duration/2) / 29.1;
Serial.print(distance);
Serial.println("Cm");
lcd.print(7, 1, distance);
Blynk.run();
timer.run(); // Initiates BlynkTimer
delay(1000); //was 3500
}