美文网首页
nodemcu esp8266 获取天气,截取天气信息,串口输出

nodemcu esp8266 获取天气,截取天气信息,串口输出

作者: 0学习 | 来源:发表于2017-12-31 20:01 被阅读0次

    经过两天的调试,下面代码已经可以通过知心天气网站获取数据。
    然后通过字符串操作函数截取天气信息,串口输出,当然下一步可以输出到oled上。辛苦两天,终于有所收获。网上搜了一堆教程,大多是ESP8266刷的anduino的系统。
    我这是直接刷的nodemcu。用lua编辑上传执行。

    wifi.setmode(wifi.STATIONAP)--工作在ap+客服端,下一步可以通过手机设置密码账号
     cfg={}
     cfg.ssid="SLF"
    -- cfg.pwd="mypassword"
     wifi.ap.config(cfg)
     station_cfg={}
    station_cfg.ssid="NETGEAR2.4"  --这里是你的wifi名字
    station_cfg.pwd="nidemima" --这里是你的wifi密码
    wifi.sta.config(station_cfg)
    tmr.alarm(1, 1000, tmr.ALARM_AUTO,
    --延时函数等待wifi连接       
       function()
                if wifi.sta.getip()== nil then
                    print("not connected, Waiting...")
    --未连接显示等待
                else
                    tmr.stop(1)
                    print("Config done, IP is "..wifi.sta.getip())
                    conn=net.createConnection(net.TCP, 0) 
    --建立一个连接connection
    
    end
    end
    )
    
     do
      print("\n  Current SoftAP configuration:")
      for k,v in pairs(wifi.ap.getconfig(true)) do
          print("   "..k.." :",v)
      end
    end --打印AP信息
    
    led1 = 4
    stat=1
    
    temp=""
    city=""
    wea=""
    lasttime =""
    
    host = "api.thinkpage.cn" --天气网站
    gpio.mode(led1, gpio.OUTPUT)
    tmr.alarm(2, 1500, tmr.ALARM_AUTO,function()
    
    if stat==1 then
    gpio.write(led1, gpio.LOW);
    stat=0
    elseif stat==0 then
    gpio.write(led1, gpio.HIGH);
    stat=1
    end
    end
    )--设置led1=D4 1.5秒循环闪烁
    tmr.alarm(3, 10000, tmr.ALARM_AUTO,function() --每10秒到网站获取数据
    conn=net.createConnection(net.TCP, 0) 
    conn:connect(80,"api.thinkpage.cn")
    conn:on("receive", function(conn, payload)
    print(payload) 
    --conn:send("GET /v3/weather/now.json?key=24qbvr1mjsnukavo&location=xian&language=en")
    --print(payload)
    if payload~=nil then
    i=string.find(payload,"name")
    j=string.find(payload,"country")
    end
    --print(i,j)
    print("CITY:"..string.sub(payload,i+7,j-4).."\r\n")--输出城市信息
    print("WEATHER:"..string.sub(payload,string.find(payload,"text")+7,string.find(payload,"code")-4).."\r\n")--输出当前天气
    print("TEMP:"..string.sub(payload,string.find(payload,"temperature")+14,string.find(payload,"last_update")-5).."\r\n")--输出当前温度
    
    end )
    conn:on("connection", function(conn, payload)
    --sss="GET /v3/weather/now.json?key=24qbvr1mjsnukavo&location=xian&language=en".."HTTP/1.1\r\n".."Host: ".."api.thinkpage.cn".. "\r\n".."Connection: close\r\n\r\n"
    conn:send("GET /v3/weather/now.json?key=lkvdhpaemyl8vgme&location=xian&language=en".." HTTP/1.1\r\n".."Host: ".."api.thinkpage.cn".. "\r\n".."Connection: close\r\n\r\n")
    --print(payload)
    
    end
    )
    
    
    end)
    

    相关文章

      网友评论

          本文标题:nodemcu esp8266 获取天气,截取天气信息,串口输出

          本文链接:https://www.haomeiwen.com/subject/jsvagxtx.html