【树莓派自动化应用实例】整点提醒自己休息五分钟
2017-11-16 00:57
417 查看
背景介绍
我有一个习惯,定闹钟每隔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/[/code]安装 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 then print(e) else print("发送成功!") end
如果你想实现一些更复杂的操作,最好在常用电脑上配置一个 Lua 完整的开发环境。
想要文件能执行当做命令执行,还需要给文件添加可执行权限:chmod +x ./rest_reminder.lua
测试代码是否有效:./rest_reminder.lua
正常执行的话,你的收件人邮箱(或邮件垃圾箱),应该会收到一封邮箱。
注意:
headers 中的收件人会显示在邮件头,但是真正决定发送给谁的是 rcpt
smtp.example.com 要改为发信邮箱的 smtp 服务器。
**username@exapmle.com** 和 username_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
相关文章推荐
- 【树莓派自动化应用实例】整点提醒自己休息五分钟
- 【树莓派自动化应用实例】整点提醒自己休息五分钟
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
- 一个VB小程序,提醒自己上下班打卡和每小时休息
- jquery.validate.js的应用实例,自己写的有点简单
- Expect 自动化交互应用实例解析
- WatirWebdriver应用实例之自动化下载百度相册
- 自动化测试开发实际应用系列(三)HTTP JSON协议接口测试自动化实例
- Selenium2学习-025-WebUI自动化实战实例-023-页面快照截图应用之一 -- 常规截图(全页面)
- Selenium2学习-033-WebUI自动化实战实例-031-页面快照截图应用之二 -- 区域截图
- 自动化交互脚本Expect简单介绍及应用实例
- Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)
- 容易的linux自动化运维工具之安装部署和应用实例(四)
- 简洁、明晰!数据库设计三大范式应用实例剖析(感觉文章写的很好,收录到自己的博客里)
- Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)
- Selenium2学习-035-WebUI自动化实战实例-033-页面快照截图应用之三 -- 区域截图(专业版)
- ubuntu下利用cron来提醒自己休息
- Java与数据库的结合,应用实例。以学生表、选课表为例。可以自己扩展功能。
- Kettle变量和自己定义java代码的实例应用
- spring容器bean实例化之后添加一些自己的逻辑处理(应用实例启动tomcat加载缓存)