Ich benötigte eigentlich nur einen Regensensor um meine Automatische Bewässerung im FHEM auszuschalten wenn es Regnet.

Grundsätzliche Funktionsweise:
Das WiFi Modul meldet sich im Netzwerk an und Sendet seine Sensordaten an FHEM.
Im FHEM sind dummys erstellst und die Wetterstation ruft nur eine URL auf, in der der STATE
Was hab ich benutzt:

  • LoLin V3 NodeMCU WiFi Modul
  • DHT11
  • Regensensor

WetterSender_Steckplatine

fehmWetter

/*
*  This sketch sends data via HTTP GET requests to FHEM service.

*/

#include <SimpleDHT.h>
#include <ESP8266WiFi.h>
int pinDHT11 = 4; //Pin D2
SimpleDHT11 dht11;

const char* ssid = "***WLAN Name***";
const char* password = "***WLAN Passwort***";

const char* host = "smarthome";

int messwert=0;
byte humidity = 0;
byte temperature = 0;

WiFiClient client;

void setup() {
Serial.begin(115200);
delay(10);

// We start by connecting to a WiFi network

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {

++value;

Serial.print("connecting to ");
Serial.println(host);

// Use WiFiClient class to create TCP connections
const int httpPort = 8083;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
//--------- Werte lesen -----
if (dht11.read(pinDHT11, &temperature, &humidity, NULL)) {
Serial.print("Read DHT11 failed.");
return;
}
// We now create a URI for the request
String url = "/fhem?cmd=set%20dy_outtemp%20";
url += temperature;

Serial.print("Requesting URL: ");
Serial.println(url);

sendURL(url);
delay(100);

url = "/fhem?cmd=set%20dy_outhumi%20";
url += humidity;

sendURL(url);
delay(100);

messwert =analogRead(A0);
url = "/fhem?cmd=set%20dy_regen%20";
if (messwert>480){
url += 1;  }
else {
url += 0;}

sendURL(url);
delay(100);

// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}

Serial.println();
Serial.println("closing connection and waite 60sec");
delay(60000);
}

void sendURL(String url){
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
}

Downloads:
NodeMCU V3.0 Part für Fritzing

Ein Gehäuse für den Regensensor wurde mit dem 3D-Drucker gedruckt:

Regensensor Gehäuse

Regensensor Gehäuse