7.2 KiB
node Module
The node module provides access to system-level features such as sleep, restart and various info and IDs.
node.restart()
Restarts the chip.
####Syntax
node.restart()
####Parameters
nil
####Returns
nil
####Example
node.restart();
node.dsleep()
Enter deep sleep mode, wake up when timed out.
####Syntax
node.dsleep(us, option)
Note: This function can only be used in the condition that esp8266 PIN32(RST) and PIN8(XPD_DCDC aka GPIO16) are connected together. Using sleep(0) will set no wake up timer, connect a GPIO to pin RST, the chip will wake up by a falling-edge on pin RST.
option=0, init data byte 108 is valuable;
option>0, init data byte 108 is valueless.
More details as follows:
0, RF_CAL or not after deep-sleep wake up, depends on init data byte 108.
1, RF_CAL after deep-sleep wake up, there will belarge current.
2, no RF_CAL after deep-sleep wake up, there will only be small current.
4, disable RF after deep-sleep wake up, just like modem sleep, there will be the smallest current.
####Parameters
-
us
: number(Integer) or nil, sleep time in micro second. If us = 0, it will sleep forever. If us = nil, will not set sleep time. -
option
: number(Integer) or nil. If option = nil, it will use last alive setting as default option.
####Returns
nil
####Example
--do nothing
node.dsleep()
--sleep μs
node.dsleep(1000000)
--set sleep option, then sleep μs
node.dsleep(1000000, 4)
--set sleep option only
node.dsleep(nil,4)
node.info()
Returns NodeMCU version, chipid, flashid, flash size, flash mode, flash speed.
####Syntax
node.info()
####Parameters
nil
####Returns
majorVer
(number)minorVer
(number)devVer
(number)chipid
(number)flashid
(number)flashsize
(number)flashmode
(number)flashspeed
(number)
####Example
majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info()
print("NodeMCU "..majorVer.."."..minorVer.."."..devVer)
node.chipid()
Returns the ESP chip ID.
####Syntax
node.chipid()
####Parameters
nil
####Returns number:chip ID
####Example
id = node.chipid();
node.flashid()
Returns the flash chip ID.
####Syntax
node.flashid()
####Parameters
nil
####Returns number:flash ID
####Example
flashid = node.flashid();
node.heap()
Returns the current available heap size in bytes. Note that due to fragmentation, actual allocations of this size may not be possible.
####Syntax
node.heap()
####Parameters
nil
####Returns number: system heap size left in bytes
####Example
heap_size = node.heap();
node.key() --deprecated
Define action to take on button press (on the old devkit 0.9), button connected to GPIO 16.
This function is only available if the firmware was compiled with DEVKIT_VERSION_0_9 defined.
####Syntax
node.key(type, function)
####Parameters
type
: type is either string "long" or "short". long: press the key for 3 seconds, short: press shortly(less than 3 seconds)function
: user defined function which is called when key is pressed. If nil, remove the user defined function. Default function: long: change LED blinking rate, short: reset chip
####Returns
nil
####Example
node.key("long", function() print('hello world') end)
####See also
node.led()
node.led() --deprecated
Set the on/off time for the LED (on the old devkit 0.9), with the LED connected to GPIO16, multiplexed with node.key()
.
This function is only available if the firmware was compiled with DEVKIT_VERSION_0_9 defined.
####Syntax
node.led(low, high)
####Parameters
low
: LED off time, LED keeps on when low=0. Unit: milliseconds, time resolution: 80~100mshigh
: LED on time. Unit: milliseconds, time resolution: 80~100ms
####Returns
nil
####Example
-- turn led on forever.
node.led(0)
####See also
node.key()
node.input()
Submit a string to the Lua interpreter. Similar to pcall(loadstring(str))
, but without the single-line limitation.
!!! note "Note:"
This function only has an effect when invoked from a callback. Using it directly on the console does not work.
####Syntax
node.input(str)
####Parameters
str
: Lua chunk
####Returns
nil
####Example
sk:on("receive", function(conn, payload) node.input(payload) end)
####See also
node.output()
node.output()
Redirects the Lua interpreter output to a callback function. Optionally also prints it to the serial console.
!!! note "Note:"
Do not attempt to print()
or otherwise induce the Lua interpreter to produce output from within the callback function. Doing so results in infinite recursion, and leads to a watchdog-triggered restart.
####Syntax
node.output(output_fn, serial_debug)
####Parameters
output_fn(str)
: a function accept every output as str, and can send the output to a socket (or maybe a file).serial_debug
: 1 output also show in serial. 0: no serial output.
####Returns
nil
####Example
function tonet(str)
sk:send(str)
end
node.output(tonet, 1) -- serial also get the lua output.
-- a simple telnet server
s=net.createServer(net.TCP)
s:listen(2323,function(c)
con_std = c
function s_output(str)
if(con_std~=nil)
then con_std:send(str)
end
end
node.output(s_output, 0) -- re-direct output to function s_ouput.
c:on("receive",function(c,l)
node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
end)
c:on("disconnection",function(c)
con_std = nil
node.output(nil) -- un-regist the redirect output function, output goes to serial
end)
end)
####See also
node.input()
node.readvdd33() --deprecated, moved to adc.readvdd33()
####See also
adc.readvdd33()
node.compile()
Compile a Lua text file into Lua bytecode, and save it as .lc file.
####Syntax
node.compile(filename)
####Parameters
filename
: name of Lua text file
####Returns
nil
####Example
file.open("hello.lua","w+")
file.writeline([[print("hello nodemcu")]])
file.writeline([[print(node.heap())]])
file.close()
node.compile("hello.lua")
dofile("hello.lua")
dofile("hello.lc")
node.setcpufreq()
Change the working CPU Frequency.
####Syntax
node.setcpufreq(speed)
####Parameters
speed
:node.CPU80MHZ
ornode.CPU160MHZ
####Returns number:target CPU Frequency
####Example
node.setcpufreq(node.CPU80MHZ)
node.restore()
Restore system configuration to defaults. Erases all stored WiFi settings, and resets the "esp init data" to the defaults. This function is intended as a last-resort without having to reflash the ESP altogether.
This also uses the SDK function system_restore()
, which doesn't document precisely what it erases/restores.
####Syntax
node.restore()
####Parameters
nil
####Returns
nil
####Example
node.restore()
node.restart() -- ensure the restored settings take effect