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

背景介绍

我有一个习惯,定闹钟每隔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 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

参考文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏嵌入式程序猿

嵌入式工程师必须会的技能:玩转bootloader

Bootloader 的作用相信不用多说,嵌入式工程师应该都知道他的重要性,我们可以通过bootloader上载,下载用户应用程序,引导系统等,那么对NXP(F...

33815
来自专栏前端架构

360搜索引擎so自动收录php改写方案——适合phpcms等cms

360搜索引擎自动收录功能,官方提供了代码,带式,十分坑爹,没有提供批量提交入口,只是提供了一段js代码,关键是 一个js去下载另外一个js,document....

4068
来自专栏开源优测

windows下Jenkins+Jmeter集成

1.jdk的安装配置 2.jmeter的安装配置 3.ant的安装配置 4.Jenkins的安装配置

732
来自专栏技术小讲堂

PHP环境中安装pear、phpunit以及xdebug全攻略1.准备2.安装

首先,本文是基于wamp环境的基础上的,所以,如果您看到这里还没有搭建好wamp环境的话,介意您先把环境搭建好,因为这里都是一些实践性的内容。 1.准备 wam...

3128
来自专栏陈满iOS

开源项目: Mac端12306购票神器 - 12306ForMac:项目运行填坑纪实(mac系统升级后执行brew link carthage命令出错)

但是不用灰心,最大同性交友网站--GitHub上面一个开源了Mac端的项目12306ForMac。如果你对它的安全性不放心,那么我们可以下载下来看看,自己运行看...

712
来自专栏我的博客

把U盘制作电脑维护必备盘

第一:准备工具软碟通(点击:百度一下)、完美者iso(我觉得这个维护系统挺好的) 第二:软碟通破解码(我一直用的是网上给的,也给大家分享下注册名:李明 注册码...

2614
来自专栏MixLab科技+设计实验室

设计师编程指南之Sketch插件开发 10 - skpm & webview

往期文章索引: 1 / 入门基本概念、page的相关操作 2 / artboard 、NSFileManager 和 NSString 关于文件及文件夹的相关操...

3387
来自专栏大数据智能实战

ubuntu环境下Pytorch安装及No module named 'torch._C'问题解决

近日,发现很多代码都是基于Pytorch来写的,为了进行测试和学习,于是进行了安装。 安装过程算是比较简单,直接从官网上下载源码,https://github....

46710
来自专栏CRPER折腾记

VS Code 折腾记 - (10) 你想发布自己捣鼓的snippets到VSCode插件市场!

em..自认为英文不错和自学能力灰常好的大佬,到这里可以停止阅读了,省的浪费时间!

762
来自专栏杂烩

GitHug备忘 原

作为开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首...

515

扫码关注云+社区