将RSSI数据从ESP8266传输到PC

时间:2016-06-02 05:55:51

标签: lua esp8266 nodemcu

我想将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)

1 个答案:

答案 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,如下所示:

  • 启动新计时器
  • 在每个间隔中读取RSSI
  • 向服务器发送HTTP POST

这是代码

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