Hallo zusammen
Habe ein Eltako ESP8266 (Wemos D1 mini) Windmesser im einsatz den muss ich von seinem Urspruenglichen Ort wegnehmen und an einen anderen Ort setzen. Habe den immer mit USB spannung versorgt und hat auch gut funktioniert aber nun muss der an einen ort wo ich kein Strom habe oder hinbauen kann also muss er ueber Batterie betrieben werden.
Das Programm arbeitet seit 2 Jahren einwandfrei nur jetzt muss deep sleep rein was ich auch getan habe aber es funktioniert nicht der Sensor geht nicht Schlafen was in der Serial console festzustellen ist.
Die pins RST und D0 sind durch einen Jumper gebrueckt.
Brauche mal eure Hilfe denn irgendwas mach ich sicher falsch
Ich habe einen Windsensor (sihe Bild) der ueben eine USB Stromversorgung aus dem Haus hatte und das hat auch funktioniert. Jetzt soll der sensor aber ueber Batterie laufen und dazu muss er in den Deep.Sleep modus sonst ist die Batterie schnell leer.
Hallo,
mich stören die vielen esp.restart() in Deinem code. Aber das nur nebenbei.
Bau doch mal von den deepsleep noch eine Serielle Ausgabe ein . Serial.println("gehe jetzt schlafen")
um zu sehen ob du da hinkommst .Zudem sollte nach dem deepsleep noch ein delay() kommen.
OK dann ist dein Problem ja nicht der deep Sleep sondern ehr Dein Code, Du kommst da nicht hin.
Ich kenne mich mit Mqt nicht aus , aber irgendwann muss das Telegram ja beendet sein und das ist dann das Ende. Zudem würde ich vor dem deepsleep noch die ISR für das Windrad abschalten also Interrupt sperren damit nicht ständig die ISR dazwischen funken kann.
Du könntest auch die ganz harte Tour nehmen und im loop millis() abfragen. wenn der Wert > z.B 20s ist verzweigst Du zum deep sleep und Schluss is...
Oh ja dann hab ich das wohl vergessen ist ja auch schon nen weile her das ich das gemacht hab. Aber wo muesste die dann reinkommen und wie schaut die aus
Na ja
ich schließe daraus das der code letztlich nicht von Dir ist. Wenn man die Function nicht benötigt dann lass sie halt raus. Es geht doch darum.
aufwecken
Einrichten
einmal messen
versenden
schlafen gehen
Jetzt musst Du halt rausbekommen wann die Arbeit erledigt ist , oder du machst die brutale Art und fragst millis() ab und verzweigst.
Was für eine Batterie hast Du denn vor zu nutzen. Du hast ja anscheinend auch noch eine Anzeige dran. Die kann ja sicher komplett weg. Wenn der D1 läuft und WIFI ein ist musst Du im Mittel mindestens mit 100mA rechnen. Hast Du schon mal eine Energie-Bilanz berechnet. Nicht das Du anschließend enttäuscht bist wenn die Batterie nach 1Woche leer ist.
Generell gehört der Code neu aufgebaut. Ein Loop braut es eigentlich nicht beim DeepSleep. Der ESP wacht auf, erledigt alles im Setup, geht am Ende vom Setup schlafen.
da hast du auch recht den hat kumpel geschrieben und bei ihm funktioniert der genauso wie bei mir nur er hat seinen sensor am gartenhaus wo auch festern strom ist
Bin da nicht so gut in sowas zu schreiben da brauche ich dann hilfe
Stimmt , da macht das deepSleep aber so keinen Sinn. Ja da hast Du recht der code ist so ungeeignet. Darum würde ich die Murx Methode vorschlagen.
deepsleep kann schon im loop Sinn machen denke ich. Es kommt darauf an was zu machen ist. Und wann dann der Job erledigt ist. Für die Messung des Windrades hier in dem Beispiel wird ja eine endliche Zeit benötigt, also mehrere Umläufe. Wenn man das nur im Setup machen wollte müsste man also eine künstliche Schleife programieren. Gleiches Gilt sicher für das versenden der Daten. Man kann das schon im loop machen es braucht zwei Statusszstände
1 Messung beendet Messwert liegt vor
2 Daten sind gesendet ( eventuell Antwort vom Server auswerten)
dann in eine Function verzweigen die die Verbindung zum WIFI abbaut und den deepsleep ausführt.
Das könnte man noch in einer Schrittkette Statemaschine machen.
ich hatte mir mal eine excell Tabelle gemacht das mal für Deinen Fall gerechnet . Annahme die Laufzeit beträgt 20s und es gibt keine wesentlichen Stromverbraucher außer dem D1
System Daten
Zykluszeit gesamt
900
s
davon aktiv Zeit
20
s
sleep Zeit
880
s
Mittlerer aktiv Strom
100
mA
sleep Modus
0,4
mA
mittler Strom eins Zyklus
2,613
mA
System Spannung
3,7
V
System Leistung
9,67
mW
Energieverbrauch/Tag (Arbeit)
232,06
mWh
Batterie-Daten
Batterie Kapazität
1000
mAh
Batterie Spannung
3,7
V
Energie Aku
3700
mWh
Wirkungsgrad Stromversorgung
80
%
nutzbare Energie (Arbeit)
2960,00
mWh
Batterie Laufzeit ohne Ladung
12,76
Tage
das sind jetzt theoretische Werte , real wird das ehr weniger sein. Im Winter wenn es kalt ist haben die Akus auch ehr 50% Kapazität.
so in Etwa sieht´s aus
Das Problem ist auch, das wenn man ein ESP im Akkubetrieb betreibt, der Code so schnell wie möglich abgearbeitet werden soll.
Ich vermute, der TO wird kaum über 1 Monat Laufzeit kommen, wenn er es so Aufbaut und belässt.
Der effektivere Weg wäre, etwas Stromsparendes wie ATTiny, der die Messwerte ausarbeitet, dieses dann zum Bsp. über nRF24 oder ähnliches zu einem stationären ESP der das dann ins Homegedöns einbindet.