The “ESP8266 NodeMCU Module NET” introduces a comprehensive set of functionalities for network communication on the ESP8266 platform using the NodeMCU firmware. This module empowers developers to create versatile IoT applications by enabling connections over Wi-Fi, TCP/IP, and UDP protocols.
Read more: ESP8266 NodeMCU Module – NETWith the NET module, developers can perform various networking tasks such as creating clients and servers, establishing UDP sockets, managing multicast groups, and interacting with DNS servers. This module provides a wide range of functions for initiating, managing, and terminating network connections, as well as for resolving hostnames and configuring DNS servers.
Whether it’s setting up a web server, connecting to cloud services, or implementing peer-to-peer communication, the ESP8266 NodeMCU Module NET offers the necessary tools and capabilities to facilitate seamless networking operations. It serves as a foundational component for building connected devices and IoT solutions powered by the ESP8266 platform.
NET Module Functions for ESP8266 NodeMCU
Constant | Description |
---|---|
net.createConnection() | Creates a client. |
net.createServer() | Creates a server. |
net.createUDPSocket() | Creates a UDP socket. |
net.multicastJoin() | Join multicast group. |
net.multicastLeave() | Leave multicast group. |
net.server:close() | Closes the server. |
net.server:listen() | Listen on port from IP address. |
net.server:getaddr() | Returns server local address/port. |
net.socket:close() | Closes socket. |
net.socket:connect() | Connect to a remote server. |
net.socket:dns() | Provides DNS resolution for a hostname. |
net.socket:getpeer() | Retrieve port and IP of remote peer. |
net.socket:getaddr() | Retrieve local port and IP of socket. |
net.socket:hold() | Throttle data reception by placing a request to block the TCP receive function. |
net.socket:on() | Register callback functions for specific events. |
net.socket:send() | Sends data to remote peer. |
net.socket:ttl() | Changes or retrieves Time-To-Live value on socket. |
net.socket:unhold() | Unblock TCP receiving data by revocation of a preceding hold(). |
net.udpsocket:close() | Closes UDP socket. |
net.udpsocket:listen() | Listen on port from IP address. |
net.udpsocket:on() | Register callback functions for specific events. |
net.udpsocket:send() | Sends data to specific remote peer. |
net.udpsocket:dns() | Provides DNS resolution for a hostname. |
net.udpsocket:getaddr() | Retrieve local port and IP of socket. |
net.udpsocket:ttl() | Changes or retrieves Time-To-Live value on socket. |
net.dns.getdnsserver() | Gets the IP address of the DNS server used to resolve hostnames. |
net.dns.resolve() | Resolve a hostname to an IP address. |
net.dns.setdnsserver() | Sets the IP of the DNS server used to resolve hostnames. |
Example :1 TCP Connection in local
The code sets up a Wi-Fi connection, establishes a TCP connection to a server, and sends a message to the server. It also includes event handlers to handle Wi-Fi connection events.
- Create a TCP connection and communicate with TCP server
- Set IP of Server
Code
-- www.ArunEworld.com print("ArunEworld : TCP Example") -- Connect to Access Point (DO NOT save config to flash) wifi.setmode(wifi.STATIONAP) station_cfg = {} station_cfg.ssid = "ArunEworld" station_cfg.pwd = "ArunEworld.com" wifi.sta.config(station_cfg) wifi.sta.connect() function TCP_CONNECTION_func() TCP_Conn = net.createConnection(net.TCP, 0) TCP_Conn:connect(80, '192.168.1.102') -- Change your server IP TCP_Conn:on("connection", function(TCP_Conn, payload) print("Connection_func : ") print(payload) end) TCP_Conn:on("receive", function(TCP_Conn, payload) print("Received : " .. payload) end) TCP_Conn:send("ArunEworld : This ESP8266 is Connected to TCP Server\n") end -- Wifi Event Monitoring wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T) print("\n\tSTA - CONNECTED" .. "\n\tSSID: " .. T.SSID .. "\n\tBSSID: " .. T.BSSID .. "\n\tChannel: " .. T.channel) end) wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) print("\n\tSTA - DISCONNECTED" .. "\n\tSSID: " .. T.SSID .. "\n\tBSSID: " .. T.BSSID .. "\n\tReason: " .. T.reason) TCP_Conn = nil end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) print("\n\tSTA - GOT IP" .. "\n\tStation IP: " .. T.IP .. "\n\tSubnet Mask: " .. T.netmask .. "\n\tGateway IP: " .. T.gateway) TCP_CONNECTION_func() end)
Code Explanation
Certainly! Here’s an explanation of the provided Lua code:
- Print Statement:
print("ArunEworld : TCP Example")
This line prints out the string "ArunEworld : TCP Example"
. It serves as an informational message indicating the purpose of the code.
- Wi-Fi Configuration:
wifi.setmode(wifi.STATIONAP)
This line sets the Wi-Fi mode to STATIONAP
, allowing the device to connect to an existing Wi-Fi network as a station while also creating an access point.
station_cfg = {} station_cfg.ssid = "ArunEworld" station_cfg.pwd = "ArunEworld.com" wifi.sta.config(station_cfg) wifi.sta.connect()
These lines configure the Wi-Fi station mode with the SSID and password of the target network. It then attempts to connect to the configured network.
- TCP Connection Setup:
function TCP_CONNECTION_func() TCP_Conn = net.createConnection(net.TCP, 0) TCP_Conn:connect(80, '192.168.1.102') -- Change your server IP end
This function sets up a TCP connection to the specified server IP address (192.168.1.102
) on port 80.
- TCP Event Handlers:
TCP_Conn:on("connection", function(TCP_Conn, payload) print("Connection_func : ") print(payload) end)
This sets up an event handler for the “connection” event. When the TCP connection is established, the provided function is called, which prints out the connection payload.
TCP_Conn:on("receive", function(TCP_Conn, payload) print("Received : " .. payload) end)
This sets up an event handler for the “receive” event. When data is received over the TCP connection, the provided function is called, which prints out the received data.
- Sending Data:
TCP_Conn:send("ArunEworld : This ESP8266 is Connected to TCP Server\n")
This line sends a message to the TCP server after the connection is established.
- Wi-Fi Event Monitoring:
wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T) -- Event handler for when the Wi-Fi station is connected -- Print out details about the connection end) -- Similar event handlers are registered for other Wi-Fi events like disconnection and obtaining an IP address.
Example :1 TCP Connection to httpbin.org site (Onlin)
print("ww.ArunEworld.com") print("wifi init") --wifi.start() -- commented out wifi.setmode(wifi.STATIONAP) -- connect to Access Point (DO NOT save config to flash) station_cfg = {} station_cfg.ssid = "ArunEworld" station_cfg.pwd = "ArunEworld.com" wifi.sta.config(station_cfg) wifi.sta.connect() srv = net.createConnection(net.TCP, 0) srv:on("receive", function(sck, c) print(c) end) -- Wait for connection before sending. srv:on("connection", function(sck, c) -- 'Connection: close' rather than 'Connection: keep-alive' to have server -- initiate a close of the connection after final response (frees memory -- earlier here), https://tools.ietf.org/html/rfc7230#section-6.6 sck:send("GET /get HTTP/1.1\r\nHost: httpbin.org\r\nConnection: close\r\nAccept: */*\r\n\r\n") end) srv:connect(80, 'httpbin.org')
Explanation
The code sets up a Wi-Fi connection, establishes a TCP connection to a server, and sends an HTTP GET request to retrieve data from httpbin.org
. Any received data is printed to the console.
- Print Statements:
print("ww.ArunEworld.com") print("wifi init")
These lines print out the strings "ww.ArunEworld.com"
and "wifi init"
. They are for informational purposes and help indicate the progress of the program.
- Wi-Fi Configuration:
wifi.setmode(wifi.STATIONAP)
This line sets the Wi-Fi mode to STATIONAP
, which allows the device to connect to an existing Wi-Fi network as a station while also creating an access point.
station_cfg = {} station_cfg.ssid = "ArunEworld" station_cfg.pwd = "ArunEworld.com" wifi.sta.config(station_cfg) wifi.sta.connect()
These lines configure the Wi-Fi station mode with the SSID and password of the target network. It then attempts to connect to the configured network.
- TCP Connection Setup:
srv = net.createConnection(net.TCP, 0)
This line creates a TCP connection object named srv
.
srv:on("receive", function(sck, c) print(c) end)
This sets up an event handler for the “receive” event. When data is received over the TCP connection, the provided function is called, which prints out the received data.
srv:on("connection", function(sck, c) sck:send("GET /get HTTP/1.1\r\nHost: httpbin.org\r\nConnection: close\r\nAccept: */*\r\n\r\n") end)
This sets up an event handler for the “connection” event. When the TCP connection is established, the provided function is called, which sends an HTTP GET request to httpbin.org
. The request includes the path /get
and necessary headers.
- Connect to Server:
srv:connect(80, 'httpbin.org')
This line initiates the connection to the server at httpbin.org
on port 80 (the standard HTTP port).