[开源硬件] esp8266如何通过get给服务器提交数据-基于Lua

[复制链接]
664|14
 楼主 | 2018-9-20 20:28 | 显示全部楼层 |阅读模式
终端设备用的是ESP8266
运行固件为NodeMCU,即嵌入式Lua环境
服务端基于PHP。简单的获取后保存上传的数据
演示代码:
服务端
  1. <html>
  2. <head>
  3. <head>
  4.   <title>数据收集器</title>
  5.   <meta charset="utf-8">
  6. </head>
  7. </head>
  8. <body>

  9. <?php
  10. $user_name = isset($_GET['name'])?$_GET['name']:null;
  11. $user_pwd = isset($_GET['pwd'])?$_GET['pwd']:null;
  12. $message = array(
  13.                 "type" => 0,
  14.                 "data" => "name:".$user_name." pwd:".$user_pwd
  15. );
  16. echo json_encode($message);       
  17. ?>
  18. <?php
  19. $file=fopen("test.csv","a+");
  20. fwrite($file, $_GET["name"]);
  21. fwrite($file, ",");
  22. fwrite($file, $_GET["pwd"]);
  23. fwrite($file, ",");

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

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

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

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

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

 楼主 | 2018-9-20 20:31 | 显示全部楼层

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-10-17 15:54 | 显示全部楼层
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。
| 2018-10-18 21:23 | 显示全部楼层
最近也在玩NodeMCU,有空可以交流一下
你最优秀
 楼主 | 2018-10-18 21:41 | 显示全部楼层
ta1ent 发表于 2018-10-17 15:54
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。 ...

不会丢,我测试过发送序列,发送了1个多小时一个都没错。
 楼主 | 2018-10-18 21:42 | 显示全部楼层
ta1ent 发表于 2018-10-17 15:54
支持一下!楼主试试传一些不同的信息比如时间戳之类的,看看会不会丢包。 ...

我用PHPstudy搭建的服务器,用花生壳做内网穿透,都很靠谱,然后让全国各地朋友进行访问测试都没问题。这个方案非常经济实惠。
 楼主 | 2018-10-18 21:43 | 显示全部楼层
877049204 发表于 2018-10-18 21:23
最近也在玩NodeMCU,有空可以交流一下
你最优秀

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

评论

877049204 2018-10-19 15:28 回复TA
Come on 加QQ好友拉我入群 
| 2018-11-7 10:51 | 显示全部楼层
web服务器是如何接收 esp8266透传 的收数据?谢谢
 楼主 | 2018-11-7 16:28 | 显示全部楼层
xjson 发表于 2018-11-7 10:51
web服务器是如何接收 esp8266透传 的收数据?谢谢

只要监测端口是正确的,你这边提交数据,那边立马就收到。用服务器软件,或者直接配置系统自带的WEB服务器。
如果不懂怎么搞,直接下载PHPstudy,这个软件全包圆帮你搞定各种环境配置。
| 2018-11-8 20:44 | 显示全部楼层
这个怎么连接到ws2812中啊,我想用stm32做一个智能灯,这个是连接stm32还是连接ws2812啊
| 2018-11-8 21:42 | 显示全部楼层
好牛的
| 2018-11-16 15:30 | 显示全部楼层
你的数据是如何打包的呢?
 楼主 | 2018-11-16 18:10 | 显示全部楼层
evanlee1025 发表于 2018-11-16 15:30
你的数据是如何打包的呢?

这个演示没有打包,直接通过get在网址里提交上去的。也可以使用POST方式隐藏提交的信息。不过我们在嵌入式里进行的,别人也看不到这些。所以相对安全的很。
 楼主 | 2018-11-16 18:11 | 显示全部楼层
evanlee1025 发表于 2018-11-16 15:30
你的数据是如何打包的呢?

这种方式特别适合物联网采集终端上传数据。可以包含自己终端的ID,然后就是时间,采集的数据列表。
那边服务器直接就收到,转存到数据库或者写入文件。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /8 下一条

快速回复 返回顶部 返回列表