hier noch das vorher vergessens Fritzing und Sketch.
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <WiFi101.h>
#include <BlynkSimpleWiFiShield101.h>
#include <SimpleTimer.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "ff08f959f06b44558613636f3cffa622";
char ssid[] = "UPCFA246C8";
char pass[] = "MhAycvynbr2p";
int lastConnectionAttempt = millis(); // timer der die Zeit ab WiFi verbindungsabbruch prüft
int connectionDelay = 5000; // timerzeit nach Verbindungsabbruch wird alle 5000ms (5sec.) dei Verbindung geprüft
WidgetLED wasserLedV(V1); // register to virtual pin 1
WidgetLED wasserLedleerV(V2); // register to virtual pin 2
const int sensorPin = 5; // select the input pin for the sensor
int switchPin = 4; // select the input pin for the switch
int pumpPin = 6; // select the pin for the Pump LED
const int wasserLed = 2; // Pin for Waterpump
int pumpLed = 3; // pin for LED Water flows
boolean isMotorAn = false; // boolean isWasserleer = false;
boolean isWasserleer = false;
byte switchValue; // variable to store the value coming from the switch
int sensorValue = 0; // variable to store the value coming from the float sensor
unsigned long water_timestore; // Variable Speicher für Systemzeit Wasser fliesst.
//unsigned long water_empty; // Variable Speicher für Systemzeit Wasser leer.
BLYNK_WRITE(0) // Blynk write Virtual switch V0 (Virtueller switch zum Starten der Bewässerung)
{
int i=param.asInt();
if (!isMotorAn && sensorValue == LOW && switchValue == HIGH or i==1) {
// Wenn die Pumpe nicht an ist und der Taster (4) gedrückt wird oder der Virtuelle
// Taster (V0) gedrückt wird --> anschalten
Serial.print("Taster High"); // Taster High ins serielle Terminal schreiben
Serial.print("\t"); // Tabulator im seriellen Terminal schreiben
digitalWrite(pumpLed, HIGH); // Blaue LED "PumpLed" (3) einschalten
wasserLedV.on(); // Virtuelle Blaue LED "WasserLedV" (V1) einschalten
digitalWrite(pumpPin, HIGH); // Wasserpumpe "pumpPin" (1) einschalten
water_timestore = millis(); // Timer "water_timestore" starten
isMotorAn = true; // Wert "isMotorAn" auf "true" schalten
}else // anderfalls
{
if (isMotorAn && millis() - water_timestore > 90000) {
// Wenn die Pumpe an ist und der Timer "water_timestore" 90000ms (1,2min.) erreicht hat
digitalWrite(pumpPin, LOW); // Wasserpumpe "pumpPin" (1) ausschalten
digitalWrite(pumpLed, LOW); // Blaue LED "PumpLed" (3) ausschalten
wasserLedV.off(); // Virtuelle Blaue LED "WasserLedV" (V1) ausschalten
isMotorAn = false; // Wert "isMotorAn" auf "false" schalten
}
}
}
void connection() { // abfolge für das testen der WiFi Verbindung
// WiFi Verbindung prüfen
if (WiFi.status() != WL_CONNECTED)
{
if (millis() - lastConnectionAttempt >= connectionDelay)
{
lastConnectionAttempt = millis(); // wenn die Verbindung länger als 5000ms getrennt ist timer starten
Serial.print ("WiFi connection lost");
// "Wifi connection lost" ins serielle Terminal schreiben
Serial.print ("\t"); // Tabulator im seriellen Terminal schreiben
// versucht eine Verbindung zum Netzwerk herzustellen
if (pass && strlen(pass))
{
WiFi.begin((char*)ssid, (char*)pass);
}
else
{
WiFi.begin((char*)ssid);
}
}
}
else
{
Blynk.run();
}
}
void setup() {
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);
while (Blynk.connect() == false) {
// Wait until connected
}
pinMode (sensorPin, INPUT); // sensorPin als INPUT setzen (float sensor)
pinMode (4, INPUT); // switchPin als INPUT setzen (Switch for Waterpump on) _PULLUP
pinMode(pumpPin, OUTPUT); // pumpPin als Output setzen (Waterpump)
pinMode(wasserLed, OUTPUT); // wasserLed als Output setzen ("Water empty" LED)
pinMode(pumpLed, OUTPUT); // pumpLed als Output setzen ("Water On" LED)
// Debug console
Serial.begin(9600);
}
void loop() {
{Blynk.run();}
switchValue = digitalRead(switchPin);
// nur wenn der Motor nicht an ist und der Schalter betätigt
if (!isMotorAn && switchValue == HIGH && sensorValue == LOW) {
// anschalten
Serial.print("Button High"); // schereibt in den Serial Monitor "Button High"
Serial.print("\t"); // schereibt in den Serial Monitor einen Tabulator
digitalWrite(pumpLed, HIGH); // schaltet die Led für Pumpe läuft ein
wasserLedV.on(); // schaltet die Virtuelle Led (Blynk) für Pumpe läuft ein
digitalWrite(pumpPin, HIGH); // schaltet die Pumpe ein
water_timestore = millis(); // startet den Timer
isMotorAn = true; // schreibt die variable isMotorAn auf wahr also Motor läuft
}
if (isMotorAn && millis() - water_timestore > 90000) {
// wenn der TImer 90000ms abgelaufen und die Pumpe an ist ausschalten
digitalWrite(pumpPin, LOW); // schaltet die Pumpe aus
digitalWrite(pumpLed, LOW); // schaltet die Led für Pumpe läuft ein
wasserLedV.off(); // schaltet die Virtuelle Led (Blynk) für Pumpe läuft aus
isMotorAn = false; // schreibt die variable isMotorAn auf false also Motor aus
}
sensorValue = digitalRead(sensorPin); //liest den Pin für den Schwimmerschalter, An oder Aus
if (!isWasserleer && sensorValue == HIGH)// wenn das Wasser nicht schon leer ist und der Sensor Wasser leer zeigt
{
digitalWrite (wasserLed, HIGH); // schaltet die Led für Wasser leer ein
digitalWrite (pumpPin, LOW); // schaltet die Pumpe aus
digitalWrite (pumpLed, LOW); // schaltet die Led für Pumpe läuft aus
isMotorAn = false; // schreibt die variable isMotorAn auf false also Motor aus
isWasserleer = true; // schreibt die variable isWasserleer auf true also Wasser leer
}else{
// anderfalls also wenn Wasser nicht leer
digitalWrite (wasserLed, LOW); // schaltet die Led für Wasser leer aus
isWasserleer = false; // schreibt die variable isWasserleer auf false also Wasser nicht leer
}
//Blynk.syncAll();
connection();
}
LG und Danke