背景介绍

我有一个习惯,定闹钟每隔60分钟左右,提醒自己休息一次。我发现自己有时候长时间思考,很容易拘泥于细节之中。适当的简单休息过后,往往会对正在解决和处理的问题有新的认识和发现,有事半功倍的奇效。

不过大部分手机闹钟都不支持这种以小时为单位的周期闹铃。所以,我以前每次都是都手动调整闹钟时间。总感觉有点 Low!于是,我就写了个简单的发邮件的 Lua 脚本,放到树莓派上作为一个shell命令使用;然后在每周一到周五的9点至23点整点各执行一次发邮件的操作。邮件是发到了我的 QQ 邮箱。收到QQ邮件后,左上角会有一个通知悬浮窗,体验比手机的震动声好了很多。

另外,之所以会选择使用 Lua 语言,只是最近自己刚好在看 Lua 而已,用其他语言也是可以的。

在树莓派上配置必要的 Lua 环境

安装 LuaJIT

树莓派的 debian 官方推荐定制系统,内置有 Lua 5.1.5.但是 LuaJIT 使用了 JIT 技术,执行效率更高,所以更推荐安装和使用。LuaJIT 对应的也是 Lua 5.1 的语法。

你可以在 LuaJIT 下载页 右键查看最新的 LuaJIT 稳定版本,然后参照执行:

wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar xzf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make && sudo make install

验证是否安装成功,请执行:

luajit -v

安装成功,会输出:

LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/

安装 luarocks

luarocks 是 Lua 的包管理工具。在树莓派上需要从源码安装 luarocks 。这需要一些技巧。

你可以到 luarocks下载页 查看最新的luarocks版本,然后参考执行以下命令:

wget http://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz
tar xzf luarocks-2.4.3.tar.gz
cd luarocks-2.4.3

luarocks 在编译前,需要先进行配置。完整的配置内容,参见:Customizing your settings。基于 LuaJIT 的配置命令如下:

./configure --lua-suffix="jit"

然后编译安装:

make build
sudo make install

验证是否安装成功:

luarocks

安装 luasocket

luasocket 这个库,下面的代码会用到,需要提前安装下。 如果 luarocks 安装成功,那其他的 lua 库安装就非常简单了:

sudo luarocks install luasocket

简单的 Lua 脚本: 发送邮件提示自己注意休息

新建一个 rest_reminder.lua 文件

vi rest_reminder.lua

然后输入以下 Lua 代码:

#!/usr/bin/env luajit
local smtp = require("socket.smtp")
from = "username@exapmle.com" --发件人
--收件人列表
rcpt = {"your_qq_number@qq.com"
}
mesgt = {headers = { -- 只是文字显示内容.to = "your_qq_number@qq.com", --收件人subject = "请休息五分钟!" --主题},body = "您已连续思考一小时,请先休息五分钟吧!"
}
r, e = smtp.send{from = from,rcpt = rcpt,source = smtp.message(mesgt),server = "smtp.example.com",user = "username@exapmle.com",password = "username_pwd"
}
if not r thenprint(e)
elseprint("发送成功!")
end

如果你想实现一些更复杂的操作,最好在常用电脑上配置一个 Lua 完整的开发环境。

想要文件能执行当做命令执行,还需要给文件添加可执行权限:

chmod +x ./rest_reminder.lua

测试代码是否有效:

./rest_reminder.lua

正常执行的话,你的收件人邮箱(或邮件垃圾箱),应该会收到一封邮箱。

注意:

  • headers 中的收件人会显示在邮件头,但是真正决定发送给谁的是 rcpt
  • smtp.example.com 要改为发信邮箱的 smtp 服务器。
  • username@exapmle.comusername_pwd 要改为真实的邮件用户名和密码
  • 部分邮箱的 smtp 功能,可能需要单独开通。

使用 crontab 来定时执行

crontab 简单实用,如果不是很熟悉,可以把它简单当做一个高度自定义的定时器。

假设脚本的完整路径是 /home/pi/task/rest_reminder.lua

执行:

crontab -e

在打开的内容区末尾新增:

00  9-23  *  *  *  /home/pi/task/rest_reminder.lua

保存退出,正常应该会看到提示:

crontab: installing new crontab

此时,我们的定时脚本已经生效了。即使重启电脑,这个脚本依然可以正常定时执行。

crontab 借助于 cron 服务。在必要时,你可以使用 sytemed 的命令来操作 cron 服务:

# 查看状态
sudo systemctl status cron
# 激活服务
sudo systemctl enable cron

参考文档

  • 【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境
  • Installation instructions for Unix
  • Lua smtp
  • Linux 下执行定时任务 crontab 命令详解
  • crontab 使用实例
  • 强大的crontab

转载于:https://www.cnblogs.com/ios122/p/7842269.html

【树莓派自动化应用实例】整点提醒自己休息五分钟相关推荐

  1. 休息五分钟,学几个bash快捷键

    Ctrl-A 相当于HOME键,用于将光标定位到本行最前面 Ctrl-E 相当于End键,即将光标移动到本行末尾 Ctrl-B 相当于左箭头键,用于将光标向左移动一格 Ctrl-F 相当于右箭头键,用 ...

  2. 如何在win10中设置每小时定时提醒眼睛休息

    很多职场人工作时使用电脑比较多,目前比较常用的电脑操作系统,win10算其中一个.为了保护身体健康,一些办公人士在使用win10电脑工作一定时间之后,会起来进行活动活动.喝水或者休息眼睛等.那在繁忙的 ...

  3. 保护视力的软件:定时提醒你休息的桌面工具EyeLeo

    文章目录 保护视力的软件:定时提醒你休息的桌面工具EyeLeo 什么是EyeLeo 为什么要使用? 它为什么如此重要? EyeLeo特征 使用说明 保护视力的软件:定时提醒你休息的桌面工具EyeLeo ...

  4. 7.12 C语言练习(爬动的蠕虫:一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。)

    [练习] 题目要求:一条蠕虫长1寸,在一口深为N寸的井的底部.已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬.在休息的过程中,蠕虫又下滑了D寸.就这样,上爬和下滑重复进行.请问,蠕虫需 ...

  5. 《 Python List列表全实例详解系列(五)》——修改元素(修改单个、修改一组)

    < Python List列表全实例详解系列(五)> --修改元素(修改单个.修改一组) 接上一篇:<  Python List列表全实例详解系列(四)>__列表删除元素(4种 ...

  6. python自动化办公实例展示_自动化办公 Python 操控 Word

    虽然Word不好用, 但还必须得用它, python-docx是专门用于编辑Word文档的一个工具库, 它有两大用途, 自动化生成word文档 and 自动化修改文档 python word 1. 自 ...

  7. python自动化测试脚本实例_Python+Selenium学习--自动化测试用例实例

    前言 之前我们简单讨论了手工测试用例与自动化测试用之间的差异,以及自动化测试用例设计时的注意事项,这一节就通过实例向读者介绍如何编写具体的自动化测试用例. 下面我以百度云盘为例: 百度云盘是百度的产品 ...

  8. python自动化办公实例展示_原创的20个Python自动化案例,一口一个,高效办公!...

    === 欢迎关注我的公众号:早起Python === 导读 大家好,自从4月底发布第一篇Python办公自动化办公系列文章以来,目前已经马不停蹄的更新了20个案例,累计阅读超10W+,为了方便大家阅读 ...

  9. 【python自动化办公实例】CAD中用pyautocad简化等高线

    一.关于pyautocad Pyautocad库由俄罗斯工程师Roman Haritonov开发,用于简化使用Python语言书写AutoCAD ActiveX Automation脚本,因官方参考实 ...

最新文章

  1. 吐血整理所有常用端口,遇到端口问题一查就懂!
  2. 笔记整理-信息系统开发基础-软件测试-模糊测试
  3. Java设计模式之结构型:代理模式
  4. 404 单页应用 报错 路由_通过 Laravel 创建一个 Vue 单页面应用(五)
  5. 【nyoj - 252】 01串(简单dp)
  6. 作者:钱宇华(1976-),男,博士,山西大学计算智能与中文信息处理教育部重点实验室教授...
  7. #窗体整人小程序_Excel VBA和文件夹-1.8通过对话框灵活选定文件的小技巧
  8. thrift编写服务端 客户端
  9. 百度地图集成Plist文件需要增加的字段
  10. 2021-07-08郝斌C语言笔记
  11. 腾讯云服务器开放端口
  12. code review流程规范
  13. 【合金装备xp热门主题】
  14. K8s 中 iptables 和ipvs 的理解
  15. HTML+CSS案例京东静态界面
  16. ue4 Sequencer笔记
  17. RabbitMq 消息接收确认(可靠消费)
  18. mysql主备方案_Mysql 主备双库方案
  19. 裁剪rplidar的扫描数据
  20. 《计算机系统基础》——计算机系统导论

热门文章

  1. Jar包反编译后修改源码再编译
  2. 有关架构图你需要了解的基础知识
  3. 使用vuex 进行组件之间的通讯
  4. Spring Web 应用的最大败笔
  5. 作为高管,你需要了解的五个ERP趋势
  6. Linux 最常用的脚本,值得学习收藏!
  7. 从头搭建 IntelliJ IDEA 环境,从放弃到爱不释手!
  8. [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
  9. Python 实现9*9乘法表
  10. pdo mysql fetchall_pdo fetch,pdo fetchAll,pdo query,pdo prepare用法举例