打印
[开源硬件]

esp8266如何通过get给服务器提交数据-基于Lua

[复制链接]
3769|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
终端设备用的是ESP8266
运行固件为NodeMCU,即嵌入式Lua环境
服务端基于PHP。简单的获取后保存上传的数据
演示代码:
服务端
<html>
<head>
<head>
  <title>数据收集器</title>
  <meta charset="utf-8">
</head>
</head>
<body>

<?php
$user_name = isset($_GET['name'])?$_GET['name']:null;
$user_pwd = isset($_GET['pwd'])?$_GET['pwd']:null;
$message = array(
                "type" => 0,
                "data" => "name:".$user_name." pwd:".$user_pwd
);
echo json_encode($message);       
?>
<?php
$file=fopen("test.csv","a+");
fwrite($file, $_GET["name"]);
fwrite($file, ",");
fwrite($file, $_GET["pwd"]);
fwrite($file, ",");

fwrite($file, "\n");
?>

</body>
</html>
改程序是一个PHP格式的网页文件,在网页框架内包含了2个php代码段,第一个获取get提交上来的两个数据,name和pwd
第二个PHP段是保存这两个变量传送来的数据,写入到一个CSV文件里去。
————————————————————————————————————————————————————————————————————————
终端两个代码文件,一个是初始化联网用的init.lua,一个是test.lua
--init.lua
print("set up wifi mode")
wifi.setmode(wifi.STATION)
sta_cfg={}
sta_cfg.ssid="360WiFi-SJB"
sta_cfg.pwd="shejibu123"
wifi.sta.config(sta_cfg)

wifi.sta.connect()
print("IP unavaiable, Waiting...")
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()~= nil then

tmr.stop(1)
print("Config done, IP is "..wifi.sta.getip())
dofile("test.lua")
end

end)
其实这个文件可以保持不变,只需要修改你的WIFI账号密码就行了,另外就是下面要跳转到什么文件里。这个文件名可以根据实际修改
终端我设定的是定时提交一组数据
tmr.alarm(1, 10000, 1,  function()
http.get("http://192.168.1.229:8088/test.php?name=Hello&pwd=World", nil, function(code, data)
    if (code < 0) then
      print("HTTP request failed")
    else
      print(code,data)
    end
end)
      print("----------------------------------------------\n")
end)
所以我建立了个定时器函数,定时为10秒中断一次,然后回调函数是一个get提交,这里的URL其实可以使用变量处理的,这样就可以将你外挂传感器获取的内容通过它提交上去了

相关帖子

沙发
gaoyang9992006|  楼主 | 2018-9-20 20:31 | 只看该作者

通过串口监控打印的数据。显示都是成功的
然后还可以去网站根目录下查看是否有test.csv

成功的通过网址链接将数据上传到了我自己电脑搭建的服务器上。
网址跳转我使用的是花生壳。

使用特权

评论回复
板凳
ta1ent| | 2018-10-17 15:54 | 只看该作者
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。

使用特权

评论回复
地板
877049204| | 2018-10-18 21:23 | 只看该作者
最近也在玩NodeMCU,有空可以交流一下
你最优秀

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2018-10-18 21:41 | 只看该作者
ta1ent 发表于 2018-10-17 15:54
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。 ...

不会丢,我测试过发送序列,发送了1个多小时一个都没错。

使用特权

评论回复
6
gaoyang9992006|  楼主 | 2018-10-18 21:42 | 只看该作者
ta1ent 发表于 2018-10-17 15:54
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。 ...

我用PHPstudy搭建的服务器,用花生壳做内网穿透,都很靠谱,然后让全国各地朋友进行访问测试都没问题。这个方案非常经济实惠。

使用特权

评论回复
7
gaoyang9992006|  楼主 | 2018-10-18 21:43 | 只看该作者
877049204 发表于 2018-10-18 21:23
最近也在玩NodeMCU,有空可以交流一下
你最优秀

哈哈,谢谢夸赞。版主**流或者去硬件2**流都可以。

使用特权

评论回复
评论
877049204 2018-10-19 15:28 回复TA
Come on 加QQ好友拉我入群 
8
xjson| | 2018-11-7 10:51 | 只看该作者
web服务器是如何接收 esp8266透传 的收数据?谢谢

使用特权

评论回复
9
gaoyang9992006|  楼主 | 2018-11-7 16:28 | 只看该作者
xjson 发表于 2018-11-7 10:51
web服务器是如何接收 esp8266透传 的收数据?谢谢

只要监测端口是正确的,你这边提交数据,那边立马就收到。用服务器软件,或者直接配置系统自带的WEB服务器。
如果不懂怎么搞,直接下载PHPstudy,这个软件全包圆帮你搞定各种环境配置。

使用特权

评论回复
10
喝牛奶的猪头三| | 2018-11-8 20:44 | 只看该作者
这个怎么连接到ws2812中啊,我想用stm32做一个智能灯,这个是连接stm32还是连接ws2812啊

使用特权

评论回复
11
小小电子爱好者| | 2018-11-8 21:42 | 只看该作者
好牛的

使用特权

评论回复
12
evanlee1025| | 2018-11-16 15:30 | 只看该作者
你的数据是如何打包的呢?

使用特权

评论回复
13
gaoyang9992006|  楼主 | 2018-11-16 18:10 | 只看该作者
evanlee1025 发表于 2018-11-16 15:30
你的数据是如何打包的呢?

这个演示没有打包,直接通过get在网址里提交上去的。也可以使用POST方式隐藏提交的信息。不过我们在嵌入式里进行的,别人也看不到这些。所以相对安全的很。

使用特权

评论回复
14
gaoyang9992006|  楼主 | 2018-11-16 18:11 | 只看该作者
evanlee1025 发表于 2018-11-16 15:30
你的数据是如何打包的呢?

这种方式特别适合物联网采集终端上传数据。可以包含自己终端的ID,然后就是时间,采集的数据列表。
那边服务器直接就收到,转存到数据库或者写入文件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1963

主题

15938

帖子

208

粉丝