标题: 制作自己的wifi开关 ESP8266 lua数据存储 [打印本页]
作者: 沙漠之痕 时间: 2018-11-6 23:12
标题: 制作自己的wifi开关 ESP8266 lua数据存储
本帖最后由 沙漠之痕 于 2018-11-9 13:31 编辑
1. 上电延时2秒加载file.lua文件,在file.lua文件中写入数据到mode.lua文件,再延时5秒读出数据通过串口打印数据
操作流程:
(1)手写创建打开一个文件file.open("mode.lua", "w+")(写方式打开)
(2)向文件中写入数据file.writeline()
(3)读取文件并打印内容
(4)关闭文件
Init.lua文件:
tmr.alarm(0,2000,0,function()
dofile("file.lua")
end)
init.lua文件结束
file.lua文件:
file.lua文件结束
if file.open("mode.lua", "w+") then
file.writeline("abc")
file.flush()
file.writeline("222")
file.flush()
file.writeline("666")
file.close()
else
print("open mode.lua faild")
end
tmr.alarm(1,5000,0,function()
if file.open("mode.lua", "r") then
s1= file.readline()
print(s1)
s1= file.readline()
print(s1)
s1= file.readline()
print(s1)
file.close()
end
end)
file.lua文件结束
2. 通过串口发送指令控制继电器, 掉电记忆继电器状态,再次上电恢复继电器状态。
init.lua文件
RELAY_Stat = ""
RELAY_Pin = 1
gpio.mode(RELAY_Pin, gpio.OUTPUT)
if file.open("mode.lua", "r") then
RELAY_Stat = file.readline()
print(RELAY_Stat)
file.close()
end
if string.find(RELAY_Stat,"RELAY=1",1) then
gpio.write(RELAY_Pin,1)
elseif string.find(RELAY_Stat,"RELAY=0",1) then
gpio.write(RELAY_Pin,0)
end
tmr.alarm(0,4000,0,function()
dofile("file.lua")
end)
init.lua文件结束
file.lua文件:
UartReceCnt = 0
UartReceTempCnt = 0
UartReceData = ""
uart.on("data",0,function(data)
UartReceData = UartReceData..data
UartReceCnt = UartReceCnt + 1
end,0)
tmr.alarm(1,10,1,function()
if UartReceCnt ~= 0 then
if UartReceTempCnt == UartReceCnt then
UartReceCnt = 0
UartReceTempCnt = 0
if UartReceData == "open" then
gpio.write(RELAY_Pin,1)
if file.open("mode.lua", "w+") then
file.writeline("RELAY=1")
file.flush()
else
print("open mode.lua faild")
end
file.close()
elseif UartReceData == "close" then
gpio.write(RELAY_Pin,0)
if file.open("mode.lua", "w+") then
file.writeline("RELAY=0")
file.flush()
else
print("open mode.lua faild")
end
file.close()
elseif UartReceData == "rest" then
node.restart()
end
uart.write(0,UartReceData)
UartReceData = ""
UartReceCnt = 0
else
UartReceTempCnt = UartReceCnt
end
end
end)
file.lua文件
用到的函数介绍:
1. file.open(filename, mode) 打开文件以进行访问,可能会创建它(对于写入模式)
参数: fliename 要打开的文件
mode: r 读模式(默认)
w 写模式
a 附加模式
r+ 更新模式,保留所有先前的数据
w+ 更新模式,删除所有先前的数据
a+ 追加更新模式,保留以前的数据,只允许在文件末尾写入
返回:文件对象,如果文件打开确定。nil如果文件未打开或不存在(读取模式)
2. file.writeline(string) 将字符串写入打开的文件,并在末尾附加'\ n'
参数: string 要写入文件的内容
返回:true如果写得好,nil就出错了
3. file.readline() 从打开的文件中读取下一行。行被定义为以EOL('\ n')字节结尾的零个或多个字节。如果下一行超过1024,则此函数仅返回前1024个字节。
参数:无
返回:文件内容以字符串形式逐行显示,包括EOL('\ n')。nilEOF时返回
4. file.close() 关闭打开的文件(如果有)。
参数 无
返回: nil
5. file.flush()刷新对文件系统的任何挂起写入,确保重启时不会丢失任何数据
参数: 无
返回: nil
交流QQ:1813763867
QQ群:235371864
作者: 沙漠之痕 时间: 2018-11-9 13:07
上电时判断继电器状态重新优化.....更新
作者: 沙漠之痕 时间: 2018-11-9 13:31
添加演示视频
作者: 快乐眼泪 时间: 2018-11-9 18:56
这个可以做成用手机APP控制电器的设备吗?
作者: 沙漠之痕 时间: 2018-11-12 08:37
https://v.youku.com/v_show/id_XM ... 193b97c5e2278a1ca96
作者: 沙漠之痕 时间: 2018-11-12 08:41
可以啊,把其他的几节连起来,就会知道 可以做成TCP服务器的模式
作者: 小港湾 时间: 2018-12-14 20:26
我是小港湾,方便告诉你的联系方式吗?
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |