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
/* * 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:
Schreibe einen Kommentar