Forum: Mikrocontroller und Digitale Elektronik ESP8266 - maximale deep-sleep Zeit?


von ESP Liebhaber (Gast)


Lesenswert?

Hallo Wifi-Fanatiker,

ich messe mit einem ESP8266-07 Modul und DS18B20 die Temperatur 
(Prog-Sprache LUA).

Per node.sleep() leg ich das Modul für z.B. 15min(90000000ms) in den 
Tiefschlaf. Auch 30min(180000000ms) funktionieren wunderbar.

Nun möchte ich, dass das Modul nur einmal pro Stunde aufwacht,
ABER: Wenn ich 1h(3600000000ms) eingebe, wacht das Modul bereits
nach 35min auf.

Meine Frage nun: Gibt es eine maximale Zeit für den deep.sleep des 
ESP8266.
Leider konnte ich dazu noch nirgend etwas finden...

Gruß
Michael

von Dason (Gast)


Lesenswert?

Falsches Forum.

Besser geeignet ist mit großer LUA-Abteilung:

http://www.esp8266.com/

von F. F. (foldi)


Lesenswert?

Dason schrieb:
> Falsches Forum.

Dann gehe mal dorthin, denn hier ist schon das richtige Forum und in 
anderer Form wäre dein Hinweis sogar nützlich.

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
nicht Forum fragen, sondern Doku lesen:
http://nodemcu.readthedocs.org/en/dev/en/modules/node/#nodedsleep

Gruß
Andreas

von F. F. (foldi)


Lesenswert?

Hätte man dann auch eben posten können.

The maximum sleep time is 4294967295us, ~71 minutes. This is an SDK 
limitation. Firmware from before 05 Jan 2016 have a maximum sleeptime of 
~35 minutes.

von ESP Liebhaber (Gast)


Lesenswert?

Mille gracie,  F. Fo (foldi) !!!
Dann werd' ich mal updaten und testen.
Gruß
Michael

von Doh! (Gast)


Lesenswert?

Siehe
https://github.com/nodemcu/nodemcu-firmware/blob/dev/app/lua/llimits.h#L32
und
https://github.com/nodemcu/nodemcu-firmware/blob/dev/app/modules/node.c#L58

Beide schränken die Parametergröße ein, bevor die Hardware das 
mitbekommt.
Der LUA Fehler wird nciht ausgelöst, weil us nie < 0 sein kann ... mal 
ein Issue aufmachen.

von Andreas B. (bitverdreher)


Lesenswert?

F. F. schrieb:
> Hätte man dann auch eben posten können.

Naja, dafür kann man da ja auch mal andere Dinge nachlesen.
Diese Seite ist bei mir gewöhnlich offen, wenn ich was mit dem ESP in 
Lua mache.

Gruß
Andreas

von Doh! (Gast)


Lesenswert?

Habs mal als issue aufgemacht, dass der Fehler nicht abgefangen wird: 
https://github.com/nodemcu/nodemcu-firmware/issues/1109

Da aber auch die Hardware irgendwo begrenzt (bzw. die Espressif SDK) 
wirst du wohl um ein mehrmaliges kürzeres deepsleep bei alngen Pausen 
nicht herum kommen.

von U. C. (Gast)


Lesenswert?

F. F. schrieb:
> Hätte man dann auch eben posten können.
>
> The maximum sleep time is 4294967295us, ~71 minutes. This is an SDK
> limitation. Firmware from before 05 Jan 2016 have a maximum sleeptime of
> ~35 minutes.

Das hättest du auch eben ins Deutsche übersetzen können....

von F. F. (foldi)


Lesenswert?

U. C. schrieb:
> Das hättest du auch eben ins Deutsche übersetzen können....

Die max. Schlafdauer beträgt 4294967295us, was in etwa 71 Minuten 
entspricht.
Das ist eine Beschränkung der Software.
Firmware vor dem 05. Januar 2016 hat eine max. Schlafdauer von ungefähr 
35 Minuten.

Mach ich doch gern für dich.

von ESP Liebhaber (Gast)


Lesenswert?

Tja,
nun teste ich schon eine Weile. Mein Script resettet sich immer sofort, 
wenn ich die Firmware aus dem Build von: http://nodemcu-build.com/ 
nehme.
Muss etwas im LUA-script bei der 1.4.0 ggü. der 0.9.6 geändert werden?
1
--init.lua
2
3
print("Setting up WIFI...")
4
wifi.setmode(wifi.STATION)
5
--modify according your wireless router settings
6
--wifi.sta.config("myssid","mypassword")
7
8
wifi.sta.config("xy-ssid","xy-ssid passwd")
9
wifi.sta.setip({ip="192.168.1.103",netmask="255.255.255.0",gateway="192.168.1.254"})
10
wifi.sta.connect()
11
tmr.alarm(1, 1000, 1, function() 
12
if wifi.sta.getip()== nil then 
13
print("IP unavaiable, Waiting...") 
14
else 
15
tmr.stop(1)
16
print("Config done, IP is "..wifi.sta.getip())
17
dofile("ds18b20-web.lua")
18
end 
19
end)

Dieser code funktioniert mit 0.9.6 tadellos...bei der 1.4.0 bekommt er 
die IP und resettet sich danach sofort.
Gruß
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

habe mit NodeLUA noch nichts gemacht, trotzdem eine Frage:
wifi.sta.setip({ip="192.168.1.103",netmask="255.255.255.0",gateway="192. 
168.1.254"})
legt doch wohl IP, Mask und Gateway der Station.

Dann connectest Du und wartest wohl darauf, daß Du (per DHCP) eine IP 
bekommst?

if wifi.sta.getip()== nil then
print("IP unavaiable, Waiting...")
else
tmr.stop(1)
print("Config done, IP is "..wifi.sta.getip())

Gruß aus Berlin
Michael

von ESP Liebhaber (Gast)


Lesenswert?

Hi,
damit gebe ich noch einmal die IP am Ende aus (print über rs232)
Ist sie nicht verfügbar z.b. 0.0.0.0/Router nicht erreichbar wird 
Unavailable ausgegeben.

von Andreas B. (bitverdreher)


Lesenswert?

Welchen Module hast Du denn in den Build aufgenommmen?
Float oder Integer?

Gruß
Andreas

von Harry L. (mysth)


Lesenswert?

ESP Liebhaber schrieb:
> Ist sie nicht verfügbar z.b. 0.0.0.0/Router nicht erreichbar wird
> Unavailable ausgegeben.

Das ist in Kombination mit einer festen IP völliger Quatsech!

von ESP Liebhaber (Gast)


Lesenswert?

Harry L. schrieb:
> Das ist in Kombination mit einer festen IP völliger Quatsech!

OK, da könntest du recht haben. Wahrscheinlich weil er so oder so eine 
Adresse bekommt. Unter 0.9.6 funktioniert es halt ohne Beanstandung.

@Andreas: die float Version. Ich hatte es mal unter 0.9.6 mit der 
integer versucht. Das klappte aber nicht.

Hier noch das von der init.lua aufgerufene Script. Das eingebettete 
ds18b20 ist das mitgelieferte script aus github und wurde nicht 
verändert.
1
require('ds18b20')
2
3
ipnum=wifi.sta.getip()
4
5
-- ESP-01 GPIO Mapping
6
gpio0, gpio2 = 3, 4
7
8
ds18b20.setup(gpio0)
9
10
--- INTERVAL ---
11
-- In milliseconds. werden unten mit 1000 multipliziert
12
--30min   
13
time_between_sensor_readings = 1800000 
14
--1h = 3600000
15
16
function sendData()
17
18
t1=ds18b20.read() 
19
20
21
print("Temperatur:"..t1.."°C\n")
22
23
-- connection to xy_domain.de
24
print("Sending data to xy_domain.de")
25
26
conn=net.createConnection(net.TCP, 0)
27
conn:on("receive", function(conn, payload) print(payload) end)
28
conn:connect(80, '10x.xxx.xxx.10')
29
conn:send("GET http://xy_domain.de/testlabor/showtemp/collectdata.php?pl="..ipnum.."&t1="..t1.."&t2="..t2.."HTTP/1.1\r\n")
30
conn:send("Host: xy_domain.de\r\n")
31
conn:send("Accept: */*\r\n") 
32
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
33
conn:send("\r\n")
34
conn:on("sent", function(conn) print("Closing connection") conn:close() end)
35
conn:on("disconnection", function(conn) print("Got disconnection...") end)
36
print("Going to deep sleep for "..(time_between_sensor_readings/1000).." seconds")
37
node.dsleep(time_between_sensor_readings*1000)
38
end

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
Noch kein Account? Hier anmelden.