【NodeMCU】NodeMCU编程手记.part1

nodeMCU实现群晖定时开关机

之前某一篇文章写到,黑群要实现定时开关机,必须借助外部干预,因此购置了一个nodeMCU继电器实现定时开关机。

硬件电路暂且不表,本次主要通过在nodeMCU编程实现。

设计思路

用一块老旧的主板,组了一个黑群系统,为了省电和提高硬盘寿命,特别是风扇,夜晚静悄悄,只有风扇在吵闹闹,因此想实现定时开关机。
白群晖有定时开关机的功能,在页面中简单设置即可实现。

黑群的定时关机没问题,和白群一样,在页面中设置定时关机,系统会起个定时任务,到时间会执行shutdown命令。但是如果要实现定时开机,只要主板支持Restore On AC Power On(应该99.9999%的主板都支持),也就是来电就自动开机,通过外部电源的定时上电,也可以实现定时开机。
另外,因为本黑群用的是DC电源,硬盘供电是直接DC供电的,因此只要电源有电,硬盘电机就一直有电会转,也会影响硬盘的寿命,系统关机后一定要关掉DC电源,才能真正节电提升硬盘寿命。

基于nodeMCU的定时开关机
主要思路是:

  1. 定时关机,nodeMCU在检测到系统关机(ping不通)后,连续检测几分钟,确认没有再开机,就切断电源
  2. 定时开机,即在特定时刻,打开电源,自动开机

上一篇博文已经把固件下载到nodeMCU了,这次只是写程序了
nodeMCU这个固件很牛,是国外一堆大牛在编写的一个嵌入式小系统,屏蔽了底层的操作,只需要注入lua脚本语言即可实现复杂的功能,真是懒人的福音
应用程序的入口是init.lua,只需要把要实现的功能写入到init.lua文件里,下载到nodeMCU,即可。
主程序流程:

  1. 连接WiFi
  2. 获取NTP时间

说到调试,这个LuaLoader真是个垃圾,串口速率动不动就变成了9600(而nodeMCU通讯正常的速率是115200),UpLoader代码巨慢,还好可以用ESPlorer,只是用Java编写的,需要安装JDK。

WiFi连接的代码很简单

wifi.setmode(wifi.STATION)
wifi.sta.config({ssid="your ssid",pwd="your password"})
wifi.sta.connect()

由于编译时忘记选了SNTP,不能连接ntp获取时间,就先这样吧,明天再编译

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值