我想将RSSI测量从ESP8266转移到PC,然后我将在C平台和简单的IPS(ındoor定位系统)中使用此测量。 我该如何进行数据传输? 我试图通过TCP传输这些数据。但是我如何在TCP服务器中写入RSSI值?例如下面写的代码“hello nodeMCU。我可以在TCP服务器上实时打印这样的RSSI值吗?我的意思是ESP将获得RSSI然后发送到TCP服务器。谢谢你的帮助?
print(wifi.setmode(wifi.STATION))
print(wifi.sta.config("SSid","password"))
print(wifi.sta.getip())
print('\nAll About Circuits main.lua\n')
tmr.alarm(0, 1000, 1, function()
if wifi.sta.getip() == nil then
print("Connecting to AP...\n")
else
ip, nm, gw=wifi.sta.getip()
print("IP Info: \nIP Address: ",ip)
print("Netmask: ",nm)
print("Gateway Addr: ",gw,'\n')
tmr.stop(0)
end
end)
-- Start a simple http server
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
print(payload)
conn:send("Hello, NodeMCU!!! ")
end)
conn:on("sent",function(conn) conn:close() end)
end)
答案 0 :(得分:0)
主要问题是:你的服务器在哪里?您发布的代码在ESP8266 上启动服务器。但是,根据您的描述,我了解您希望在PC上运行服务器 并从设备向其发送数据?
从All About Circuits复制的服务器代码中存在潜在的内存泄漏(关闭上升值)。试试这个:
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(sck,payload)
print(payload)
sck:send("Hello, NodeMCU!!! ")
end)
conn:on("sent",function(sck) sck:close() end)
end)
但是如果服务器在您的PC上并且假设它是HTTP服务器,您应该使用NodeMCU HTTP module,如下所示:
这是代码
-- replace interval, server address, headers and body of course
tmr.alarm(1, 5000, 1, function()
local rssi = wifi.sta.getrssi()
http.post('http://httpbin.org/post',
'Content-Type: application/json\r\n',
'{"rssi":"'..rssi..'"}',
function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)
end)