【樹莓派自動化應用實例】整點提醒本身休息五分鐘

背景介紹

效果圖

我有一個習慣,定鬧鐘每隔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

參考文檔

相關文章
相關標籤/搜索