经过两天的调试,下面代码已经可以通过知心天气网站获取数据。
然后通过字符串操作函数截取天气信息,串口输出,当然下一步可以输出到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)
网友评论