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); }
schon mal EasyESP probiert? Kann eigentlich alles was du willst https://www.letscontrolit.com/wiki/index.php/ESPEasy https://www.letscontrolit.com/wiki/index.php?title=SleepMode Marc
Das NodeMCU Board eignet sich dafür nicht gut, weil die Bauteile um den ESP herum viel Ruhestrom aufnehmen. Zum Üben der Programmierung ist es jedoch sehr gut geeignet. Wenn dein Programm fertig ist, wird das Board trotz Depp-Sleep noch ein paar mA aufnehmen. Dann steigst du auf ein "nacktes" ESP-12 Modul um und Drops ist gelutscht. Was dein Programm angeht: Im Deep Sleep kann niemand den ESP kontaktieren, deswegen nutzt Dir der ESP8266WebServer hier nichts. Du musst die Kommunikation umkehren: Der ESP verbindet sich in regelmäßigen Intervallen mit einem zentralen Server und sendet seine Messwerte. Dazu brauchst du einen Server, der ständig empfangsbereit ist. Für zuhause würde ich dazu einen Raspberry Pi (oder ähnlich) verwenden - es sei denn du hast schon einen Server aufgestellt. Hier bietet sich das MQTT Protokoll und Serverseitig ein MQTT Broaker an. Aber man kann auch z.B. mit PHP eine einfache Brücke zur Datenbank herstellen, wo die Messwerte gespeichert werden. Wie das ganze mit OpenHab zusammen kommen kann, weiss ich nicht. Davon habe ich keine Ahnung. Vermutlich kann man aber auch das irgendwie mit PHP Scripten lösen.
Hi, also meine bisherigen "Stromspar" Erfahrungen mit dem ESP8266 wie auch ESP32 würde ich als nicht zufrieden stellenden beschreiben. Ich habe mehrere Boards mit mit verschiedener Software mal ausprobiert. MicroPython, EasyEsp, Arduino Sketch hat kein gutes Ergebnis geliefert. Akkubetrieb war mit einem 2000mAh Akku mit aufwachen Intervallen im Minuten Bereich nur für wenige Tage möglich. Mit permanent Strom und auch per Solar habe ich welche Betrieben, das größte Manko bei mir ist das dass WLAN Modul also der HF Part immer gestorben ist mal nach einen paar Wochen oder auch Monaten in Betrieb. Sowohl drinne als auch draussen. MC funktioniert soweit einwandfrei ich kann nur keine Verbindung zum WLAN mehr aufbauen. Seit dem habe ich ein Stapel ESPs im Schrank liegen. Ich habe das ganze auch mit MQTT zur Kommunikation Betrieben und dann eine InfluxDB mit Grafana auf meinem Udoo x86 Server Betrieben(ne SSD macht auf Dauer mehr Spaß als ne SD Karte). IMHO Ich würde für stromsparendes inzwischen Abstand von ESP Modulen nehmen und eher zu einer Cortex-M0 mit Lora Lösung tendieren. Mir fehlt nur noch ein gescheites Lora Gateway.
Stefanus F. schrieb: > Wie das ganze mit OpenHab zusammen kommen kann, weiss ich nicht. Davon > habe ich keine Ahnung. Wie wäre es mit einem MQTT Broker, z.B. Mosquitto. https://www.openhab.org/addons/bindings/mqtt/
Blabla schrieb: > bei mir ist das dass WLAN Modul also der HF Part immer > gestorben ist Meinst du damit, dass sie kaputt gegangen sind, oder sind sie nur bis zum nächsten Reset (oder Batteriewechsel) ausgefallen?
Blabla schrieb: > Mit permanent Strom und auch per Solar habe ich welche Betrieben, das > größte Manko bei mir ist das dass WLAN Modul also der HF Part immer > gestorben ist mal nach einen paar Wochen oder auch Monaten in Betrieb. Ist zwar schon älter der Beitrag, aber sicher, dass es der HF Part ist und nicht das Flash? Nutzt man die Arduino Lib, sollte man folgende Zeile im setup verwenden: WiFi.persistent( false ); // avoid writing to flash after every wakeup Hab selbst gerade zwei NodeMCU+BM280 Wetterstationen mit CR123 am Laufen. Allerdings erst seit ein paar Wochen. War einiges an Board Modifikation notwendig um auf < 20uA im Deep Sleep zu kommen. LDO musste weg, Versorgung zum UART2USB chip musste weg und alle on-board Verbindungen zu GPIO0 und RST musste ich ebenfalls unterbrechen, da es sonst manchmal Probleme mit dem Wakeup gegeben hat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.