nodemcu lua dofile - 如何调用另一个lua文件?
2017-2-26 9:43:14
收藏:0
阅读:151
评论:1
我在nodemcu esp8266上有一个可工作的init.lua:
-- 加载凭据,'SSID'和'PASSWORD'在其中声明并初始化
dofile("credentials.lua")
function startup()
if file.open("init.lua") == nil then
print("init.lua已删除或重命名")
else
print("正在运行")
file.close("init.lua")
-- 实际应用程序存储在'application.lua'中
-- dofile("application.lua")
end
end
print("连接到WiFi接入点...")
wifi.setmode(wifi.STATION)
wifi.sta.config(SSID, PASSWORD)
-- wifi.sta.connect()不必要,因为config()默认使用auto-connect=true
tmr.create():alarm(1000, tmr.ALARM_AUTO, function(cb_timer)
if wifi.sta.getip() == nil then
print("等待IP地址...")
else
cb_timer:unregister()
print("WiFi连接已建立,IP地址:" .. wifi.sta.getip())
print("您有3秒钟的时间来中止")
print("等待...")
tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup)
end
end)
它可以不出错地运行,并且已建立无线连接。
现在我编写了第二个bme280_mqtt.lua文件,我想自动运行它:
alt=45 -- 测量地点的高度
bme280.init(3, 4)
P, T = bme280.baro()
-- 将测量空气压力转换为海平面气压
QNH = bme280.qfe2qnh(P, alt)
ldk=string.format("Ld=%d.%03d ", QNH/1000, QNH%1000)
H, T = bme280.humi()
if T<0 then
temp=string.format("T=-%d.%02d°C ", -T/100, -T%100)
else
temp=string.format("T=%d.%02d°C ", T/100, T%100)
end
luftf=string.format("Lf=%d%% ", H/1000, H%1000)
D = bme280.dewpoint(H, T)
if D<0 then
taupu=string.format("Tp=-%d.%02d°C ", -D/100, -D%100)
else
taupu=string.format("Tp=%d.%02d°C ", D/100, D%100)
end
m = mqtt.Client("wetterstation", 120)
m:connect("192.168.1.116", 1883)
m:publish("wetterstation",temp .. taupu .. luftf .. ldk,0,0)
node.dsleep(10*1000000)
通过ESPlorer手动调用"发送到ESP"按钮一切正常。但是通过dofile(bme280_mqtt.lua)却得到以下错误:
dofile('bme280_mqtt.lua')
bme280_mqtt.lua:25: 未连接
stack traceback:
[C]: in function 'publish'
bme280_mqtt.lua:25: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk
这里有什么错误?我如何正确地从init.lua调用bme280_mqtt.lua?
此致敬意
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

如何正确从
init.lua调用bme280_mqtt.lua?您确实正确调用了它。
bme280_mqtt.lua:25: not connected意味着
bme280_mqtt.lua的第25行出现错误。我没有统计行数,但问题就在这里:
m:connect("192.168.1.116", 1883) m:publish("wetterstation",temp .. taupu .. luftf .. ldk,0,0)只有在连接到代理之后才能发布。请查看http://nodemcu.readthedocs.io/en/latest/en/modules/mqtt/#example中的示例。您可以在
connect函数中使用回调函数来发布,或者在调用connect之前注册一个关于连接事件的处理程序,例如:m:on("connect", function(client) -- 在此处发布 end)