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
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.
Hi, nicht Forum fragen, sondern Doku lesen: http://nodemcu.readthedocs.org/en/dev/en/modules/node/#nodedsleep Gruß Andreas
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.
Mille gracie, F. Fo (foldi) !!! Dann werd' ich mal updaten und testen. Gruß Michael
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.
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
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.
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....
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.
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
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
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.
Welchen Module hast Du denn in den Build aufgenommmen? Float oder Integer? Gruß Andreas
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.