我使用LuaLoader在NodeMCU中编程。我试图读取Node的ADC并将其发送到我公共领域的PHP文件。
使用下一个代码,我获得了adc和Node的IP并通过GET发送。
x = adc.read(0);
ip = wifi.sta.getip();
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'example.com')
conn:send("GET /data.php?mdata="..x.."&ip="..ip.." HTTP/1.1\r\n")
conn:send("Host: example.com\r\n")
conn:send("Connection: keep-alive\r\nAccept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
print ("Done")
代码正常运行。如果我将其粘贴到我的LuaLoader中,它将返回:
HTTP/1.1 200 OK
Date: Wed, 30 Sep 2015 02:47:51 GMT
Server: Apache
X-Powered-By: PHP/5.5.26
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html
Done
但是,我想在警报内重复代码并每分钟发送一次数据,但它不起作用。
tmr.alarm(0, 60000, 1, function()
x = adc.read(0);
ip = wifi.sta.getip();
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'example.com')
conn:send("GET /data.php?mdata="..x.."&ip="..ip.." HTTP/1.1\r\n")
conn:send("Host: example.com\r\n")
conn:send("Connection: keep-alive\r\nAccept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
print ("Done")
end )
输出只是......
Done
......没有有效载荷。它不发送数据。
我尝试将代码放在一个函数中,放在另一个文件中并使用 dotfile 将其调用到警报但是它不起作用。我试着让它有更多时间发送数据,延长闹钟2分钟,但没有。
答案 0 :(得分:0)
从tmr.alarm
的文档中,第三个参数可以是0
或1
:
repeat: `0` - one time alarm, `1` - repeat
由于您正在传递0
,因此它只执行一次该函数。改为通过1
:
tmr.alarm(0, 60000, 1, function()
x = adc.read(0);
ip = wifi.sta.getip();
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'robcc.esy.es')
conn:send("GET /data.php?mdata="..x.."&ip="..ip.." HTTP/1.1\r\n")
conn:send("Host: robcc.esy.es\r\n")
conn:send("Connection: keep-alive\r\nAccept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
print ("Done")
end )
答案 1 :(得分:0)
我找到了答案。我建立了连接后添加了一个回调。警报可能是在发送包之前重置连接。
x = adc.read(0);
ip = wifi.sta.getip();
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload)
print ("\nDone---------------")
print(payload)
end)
conn:on("connection", function(conn, payload)
print('\nConnected...')
conn:send("GET /data.php?mdata="..x.."&ip="..ip.." HTTP/1.1\r\n"
.."Host: example.com\r\n"
.."Connection: keep-alive\r\nAccept: */*\r\n"
.."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.."\r\n")
end)
conn:connect(80,'example.com')