【树莓派自动化应用实例】整点提醒本身休息五分钟

背景介绍

效果图

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

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

另外,之因此会选择使用 Lua 语言,只是最近本身恰好在看 Lua 而已,用其余语言也是能够的。ios

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

安装 LuaJIT

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

你能够在 LuaJIT 下载页 右键查看最新的 LuaJIT 稳定版本,而后参照执行:github

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

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

luajit -v

安装成功,会输出:segmentfault

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

安装 luarocks

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

你能够到 luarocks下载页 查看最新的luarocks版本,而后参考执行如下命令:socket

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

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

test

注意:

  • 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

参考文档

相关文章
相关标签/搜索