我在我的 ESP8266 WiFi 模块上运行的 Lua 脚本中看到和当前实现的内容是每隔几秒轮询一次服务器页面,而不是检查值是否已更改。如果价值发生了变化,请采取一些措施。
这是我的代码
tmr.alarm(1,10000, 1, function()
if (wifi.sta.getip() == nil) then
print("IP unavaiable, Waiting...")
else
tmr.stop(1)
tmr.alarm(1,10000, 1, function()
event_driven_func()
end)
end
end)
function event_driven_func()
print("Inside event_driven_func function"..node.heap());
conn = nil
conn=net.createConnection(net.TCP,0)
conn:on("receive", function(conn, payload)
-- local buf = "";
startRead = false
Data = ""
print("payload : "..payload)
for i = 1, #payload do
c = payload:sub(i,i)
if (c=="{") then
startRead=true
end
if (startRead) then
Data=Data..c
end
if (c=="}") then
startRead=false
print("json string detected Do something now ...");
end
end
conn:close()
collectgarbage("collect");
end)
conn:connect(80,"my_server.co.in")
conn:on("connection", function(conn, payload)
conn:send("GET /xyz.php HTTP/1.0\r\nHost: my_server.co.in\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
end)
end
但这是非常低效的。
如何实现或更好的伪代码,一个事件驱动的代码,只要值发生变化,代码就会中断,然后 event_driven_func 执行?
或者任何更好的有效方式。
应用示例:
假设我在服务器页面上显示了许多 youtube 订阅者,每当订阅者更改时,它应该向我的 json 页面 xyz.php 之一发出“POST”网络请求(这将使用 IFTTT 完成),然后将执行一个事件Lua 代码中的函数,以便反映值。