PROJECT = "wifidemo"
VERSION = "1.0.0"
--测试支持硬件:ESP32C3
--测试固件版本:LuatOS-SoC_V0003_ESP32C3[_USB].soc
local sys = require "sys"
require("sysplus")
-- 尝试加载http模块
local http
local success, err = pcall(require, "http")
if success then
http = http
else
-- 如果http模块加载失败,再尝试加载http2模块(假设存在http2模块)
success, err = pcall(require, "http2")
if success then
http = http2
else
log.error("main", "Failed to load http or http2 module: ", err)
return
end
end
local rtos_bsp = rtos.bsp()
-- spi_id,pin_reset,pin_dc,pin_cs,pin_busy,mode
function eink_pin()
if rtos_bsp == "AIR101" then
return 0, pin.PB03, pin.PB01, pin.PB04, pin.PB00
elseif rtos_bsp == "AIR103" then
return 0, pin.PB03, pin.PB01, pin.PB04, pin.PB00
elseif rtos_bsp == "AIR105" then
return 5, pin.PC12, pin.PE08, pin.PC14, pin.PE09
elseif rtos_bsp == "ESP32C3" then
--(spi_id, pin_busy, pin_reset, pin_dc, pin_cs)
return 2, 11, 10, 6, 7
elseif rtos_bsp == "ESP32S3" then
return 2, 16, 15, 14, 13
elseif rtos_bsp == "EC618" then
return 0, 1, 10, 8, 18
else
log.info("main", "bsp not support")
return
end
end
--需要自行填写的东西
--wifi信息
local wifiName,wifiPassword = "**你的WIFI地址*****", "******你的WIFI密码******"
--地区id,请前往https://api.luatos.org/luatos-calendar/v1/check-city/ 查询自己所在位置的id
local location = "101010100" --北京
--天气接口信息,需要自己申请,具体参数请参考https://api.luatos.org/ 页面上的描述
--采用天气API:https://tianqiapi.com/
local appid,appsecret = "27*******","3wd******"
local function connectWifi()
log.info("wlan", "wlan_init:", wlan.init())
wlan.setMode(wlan.STATION)
wlan.connect(wifiName,wifiPassword,1)
-- 等待连上路由,此时还没获取到ip
result, _ = sys.waitUntil("WLAN_STA_CONNECTED")
log.info("wlan", "WLAN_STA_CONNECTED", result)
-- 等到成功获取ip就代表连上局域网了
result, data = sys.waitUntil("IP_READY")
log.info("wlan", "IP_READY", result, data)
end
local function requestHttp()
local code, headers, body = http.request("GET","http://apicn.luatos.org:23328/luatos-calendar/v1?mac=111&battery=10&location="..location.."&appid="..appid.."&appsecret="..appsecret).wait()
if code == 200 then
return body
else
log.info("http get failed",code, headers, body)
sys.wait(500)
return ""
end
end
function refresh()
log.info("refresh","start!")
local data
for i=1,5 do--重试最多五次
collectgarbage("collect")
data = requestHttp()
collectgarbage("collect")
if #data > 100 then
break
end
log.info("load fail","retry!")
end
if #data < 100 then
log.info("load fail","exit!")
return
end
collectgarbage("collect")
local spi_id, pin_busy, pin_reset, pin_dc, pin_cs = eink_pin()
local mode =0
if spi_id then
eink.model(eink.MODEL_1in54)
spi.setup(spi_id,nil,0,0,8,20*1000*1000)
eink.setup(mode, spi_id,pin_busy,pin_reset,pin_dc,pin_cs)
eink.setWin(200, 200,2)
--稍微等一会,免得墨水屏没初始化完成
sys.wait(100)
eink.clear(1)
log.info("eink", "end setup")
eink.drawXbm(0, 0, 200, 200, data)
-- 刷屏幕
eink.show()
eink.sleep()
log.info("refresh","done")
end
end
sys.taskInit(function()
--先连wifi
connectWifi()
while true do
refresh()
sys.wait(3600*1000)--一小时刷新一次吧
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
这个脚本
最新发布