极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3786|回复: 0

nodemcu的网页穿透,网页控制LED实例

[复制链接]
发表于 2017-4-22 17:29:25 | 显示全部楼层 |阅读模式

项目地址:https://github.com/IoTServ/NodeMcu-Proxy
先看下效果吧!分别点击那4个按钮,看nodemcu的反应
   nodemcu1.png
然后是nodemcu的控制效果,以打印数据代替
   nodemcu2.png
   nodemcu3.png
好了,上我的代码,自行改1,2,3行为自己的,我的id定为4567,2,3行为我家的路由器用户名密码
  1. id = '4567'  -自己设置自己的id替换4567
  2. ssid = 'wifi名'
  3. ssidpwd = 'wifi密码'
  4. wifi.setmode(wifi.STATION)
  5. wifi.sta.config(ssid,ssidpwd)    --set your ap info !!!!!!
  6. wifi.sta.autoconnect(1)
  7. led1 = 3  
  8. led2 = 4  
  9. gpio.mode(led1, gpio.OUTPUT)  
  10. gpio.mode(led2, gpio.OUTPUT)  
  11. function startServer()
  12. conn=net.createConnection(net.TCP, 0)
  13. conn:on("connection", function(conn, c)
  14. conn:send(id)
  15. tmr.alarm(2, 30000, 1, function()
  16.         conn:send(' ')
  17. end)
  18. end)
  19. conn:on("receive", function(conn, pl)
  20.                 local _, _, method, path, vars = string.find(pl, "([A-Z]+) (.+)?(.+) HTTP");
  21.                 local buf = "";
  22.                 local _GET = {}  
  23.         if (vars ~= nil)then  
  24.             for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do  
  25.                 _GET[k] = v
  26.             end  
  27.         end
  28.         buf = buf.."<h1> ESP8266 Web Server</h1>";  
  29.         buf = buf.."<p>GPIO0 <a href="?pin=ON1"><button>ON</button></a> <a href="?pin=OFF1"><button>OFF</button></a></p>";  
  30.         buf = buf.."<p>GPIO2 <a href="?pin=ON2"><button>ON</button></a> <a href="?pin=OFF2"><button>OFF</button></a></p>"..'<h3>Raw Data To MCU:</h3><br>'..pl;
  31.         local _on,_off = "",""  
  32.         if(_GET.pin == "ON1")then  
  33.             gpio.write(led1, gpio.HIGH);
  34.                         print('on led1')
  35.         elseif(_GET.pin == "OFF1")then  
  36.             gpio.write(led1, gpio.LOW);
  37.                         print('off led1')
  38.         elseif(_GET.pin == "ON2")then  
  39.             gpio.write(led2, gpio.HIGH);
  40.                         print('on led2')
  41.         elseif(_GET.pin == "OFF2")then  
  42.             gpio.write(led2, gpio.LOW);
  43.                         print('off led2')
  44.         end
  45.                 conn:send(buf);
  46.         collectgarbage(); end)
  47. conn:connect(8001,"www.mcunode.com")
  48. end
  49. tmr.alarm(1, 1000, 1, function()
  50.    if wifi.sta.getip()==nil then
  51.                 print("Connect AP, Waiting...")
  52.    else
  53.                 tmr.stop(1)
  54.                 startServer()
  55.       
  56.    end
  57. end)
复制代码


如果id为4567(我自己设的id),访问页面地址为:http://www.mcunode.com/proxy/4567/index.html

其中4567可替换为自定义id,index.html可换为任意字符串,不影响连接(但必须有一个字符串),mcu可以获取此参数,建议为模拟文件名,至此,你就可以从公网随意访问nodemcu页面啦!(测试阶段,当前只支持Get方法通过url参数传递参数)
其实只要按照这个标准改都可以,心跳为一个空格,里面也有,反正几天都不会掉,现在已经测设了十几天没掉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-4-20 19:07 , Processed in 0.049788 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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