Lua警报不执行代码

时间:2015-09-30 02:55:01

标签: lua iot esp8266 nodemcu

我使用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分钟,但没有。

2 个答案:

答案 0 :(得分:0)

tmr.alarm的文档中,第三个参数可以是01

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')