Gast
#5682771
Hallo liebe Leute, ich versuche seit Tagen meinen Wetterstationsaußenposten einigermaßen stromsparend zu programmieren. Leider kann ich mir momentan nur aussuchen, ob ich über Openhab2 ein Signal erhalte oder die Anlage auch wirklich stromsparend läuft, dann bekommt der Pi nämlich kein Signal mehr. Ich verwende einen ESP8266 als NodeMCU Board und einem DHT22 Temperatur- und Luftfeuchtigkeitsfühler. Das Ziel ist es, den Wettersensor in einem Vogelhäuschen anzubringen und dann über eine Solarzelle in einem LiPol Akku zu versorgen. Hier ist mein Sketch dazu: #include <ArduinoJson.h> #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <DHT.h> #define DHTTYPE DHT22 #define DHTPIN 5 #define WLAN_SSID "geheim" #define WLAN_PASSWORD "auch geheim" DHT dht(DHTPIN, DHTTYPE, 22); ESP8266WebServer server(80); float temperature, humidity; //int soil = analogRead(A0); //float soil_percent; unsigned long previousMillis = 0; const long interval = 2000; void setup() { Serial.begin(115200); delay(10); dht.begin(); humidity = dht.readHumidity(); temperature = dht.readTemperature(); // pinMode(soil, INPUT); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(WLAN_SSID); WiFi.mode(WIFI_STA); WiFi.begin(WLAN_SSID, WLAN_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.on("/dht22.json", [](){ unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; humidity = dht.readHumidity(); temperature = dht.readTemperature(); if (isnan(humidity) || isnan(temperature)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.println("Reporting " + String((int)temperature) + "C and " + String((int)humidity) + " % humidity"); } StaticJsonBuffer<500> jsonBuffer; JsonObject& root = jsonBuffer.createObject(); root["temperature"] = temperature; root["humidity"] = humidity; String jsonString; root.printTo(jsonString); Serial.println(jsonString); server.send(200, "application/json", jsonString); }); server.begin(); Serial.println("HTTP server started! Waiting for clients!"); } void loop() { server.handleClient(); // delay(20e6); // ESP.deepSleep(300e6); //5 Minuten schlafen //delay(100); }