Guten Morgen ec2021!
Meinen Herzlichsten für deine Bemühungen.
Ich erkenne, dass ich es mit einem Profi zu tun habe.
Brauche da meine Zeit, um alles zuzuordnen bzw. anzuwenden.
Bin LOW-Level unterwegs.
Manche Dinge scheinen so einfach;
Hier mal der bis jetzt lauffähige Sketch;
const int Lw = 595; //Anpassen des Wertes, den der Sensor in der Luft (trocken) anzeigt (serieller Monitor).
const int Fw = 270; // Anpassen des Wertes, den der Sensor in der gewässerten Erde (nass) anzeigt (serieller Monitor).
const int SensorPin = A0;
const int Led = 14; //"D5" am ESP8266
int Sensorwert = 0;
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <UrlEncode.h>
#define DHTPIN 4 // Ist am ESP8266 "D2"!
#define DHTTYPE DHT11 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "";
const char* password = "";
WiFiServer server(80);
// +international_country_code + phone number
// Portugal +351, example: +351912345678
String phoneNumber = "";
String apiKey = "";
void sendMessage(String message){
String url = "http://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message);
WiFiClient client;
HTTPClient http;
http.begin(client, url);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Send HTTP POST request
int httpResponseCode = http.POST(url);
if (httpResponseCode == 200){
Serial.print("Message sent successfully");
}
else{
Serial.println("Error sending the message");
Serial.print("HTTP response code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
void setup()
{
Serial.begin(115200);
pinMode(Led , OUTPUT);
dht.begin();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
// Wartezeit vor der Messung
delay(10000);
// Sensor wird ausgelesen. Hier nur Celsius, Fahrenheit ist auskommentiert (|| isnan(f)).
float h = dht.readHumidity();
// Temperatur in Celsius (default)
float t = dht.readTemperature();
// Temperatur in Fahrenheit (isFahrenheit = true)
//float f = dht.readTemperature(true);
// Fehlersuchlauf und Abbruch mit Meldung.
if (isnan(h) || isnan(t) ) {
Serial.println(F("Fehler beim Auslesen des Sensors!"));
return;
}
// Compute heat index in Fahrenheit (the default)
// float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.println(WiFi.localIP());
Serial.print(F("Temperatur: "));
Serial.print(t);
Serial.println(F("°C "));
Serial.print(F("Luftfeuchtigkeit: "));
Serial.print(h);
Serial.println(F("% "));
Sensorwert = analogRead(SensorPin); //Sensor in die Erde
Serial.println(Sensorwert);
String cmd;
cmd += "\"";
WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println();
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name =\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<meta charset=utf-8 />");
client.println("<head><meta http-equiv=\"refresh\" content=\"10\">");
client.println("<link rel=\"icon\" href\"data:,\">");
client.println("<title>PlantBox</title>");
client.println("<body>");
client.println("<span style='color: #199BDE;'>");
client.println("<H2><u><center><span style='color: #ff5733;'>PlantBox</span></center></u></H2>");
client.println("<h4><center>Temperatur:");
client.println(dht.readTemperature()-5); // Ausgeben der Temperatur
client.println("°"); // Schreiben des ° Zeichen
//client.println("C</h4></center>");
client.println("<h4><center>Luftfeuchte:");
client.println(dht.readHumidity()); // Ausgeben der Temperatur
client.print("%"); // Schreiben des ° Zeichen
client.println("<h4><center>Bodenfeuchte:");
client.println(analogRead(SensorPin));
client.println("</h4></center>");
if(Sensorwert <= 500)
{
Serial.println("Pflanze gut gewässert!");
digitalWrite(Led , LOW);
client.println("<center>");
client.println("<H3><span style='color: #00FF00;'>Pflanze gut gewässert!!</span></H3>");
}
if(Sensorwert >= 340)
{
Serial.println("Bitte gießen!!!");
digitalWrite(Led , HIGH);
client.println("<center>");
client.println("<H3><span style='color: #FF0000;'>Bitte gieß mich!</span></H3>");
**sendMessage("Gieß mich bitte!!!");**
}
client.print("</body>\n</html>");
}
Die Anweisung sendMessage("Gieß mich bitte!!!"); soll mir nur einmal geschickt werden.
Wünsche einen schönen Tag!!! ;_)) Klaus