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);
}