【樹(shù)莓派自動(dòng)化應(yīng)用實(shí)例】整點(diǎn)提醒自己休息五分鐘

背景介紹

效果圖

我有一個(gè)習(xí)慣,定鬧鐘每隔60分鐘左右,提醒自己休息一次。我發(fā)現(xiàn)自己有時(shí)候長(zhǎng)時(shí)間思考,很容易拘泥于細(xì)節(jié)之中。適當(dāng)?shù)暮?jiǎn)單休息過(guò)后,往往會(huì)對(duì)正在解決和處理的問(wèn)題有新的認(rèn)識(shí)和發(fā)現(xiàn),有事半功倍的奇效。

不過(guò)大部分手機(jī)鬧鐘都不支持這種以小時(shí)為單位的周期鬧鈴。所以,我以前每次都是都手動(dòng)調(diào)整鬧鐘時(shí)間??偢杏X(jué)有點(diǎn) Low!于是,我就寫(xiě)了個(gè)簡(jiǎn)單的發(fā)郵件的 Lua 腳本,放到樹(shù)莓派上作為一個(gè)shell命令使用;然后在每周一到周五的9點(diǎn)至23點(diǎn)整點(diǎn)各執(zhí)行一次發(fā)郵件的操作。郵件是發(fā)到了我的 QQ 郵箱。收到QQ郵件后,左上角會(huì)有一個(gè)通知懸浮窗,體驗(yàn)比手機(jī)的震動(dòng)聲好了很多。

另外,之所以會(huì)選擇使用 Lua 語(yǔ)言,只是最近自己剛好在看 Lua 而已,用其他語(yǔ)言也是可以的。

在樹(shù)莓派上配置必要的 Lua 環(huán)境

安裝 LuaJIT

樹(shù)莓派的 debian 官方推薦定制系統(tǒng),內(nèi)置有 Lua 5.1.5.但是 LuaJIT 使用了 JIT 技術(shù),執(zhí)行效率更高,所以更推薦安裝和使用。LuaJIT 對(duì)應(yīng)的也是 Lua 5.1 的語(yǔ)法。

你可以在 LuaJIT 下載頁(yè) 右鍵查看最新的 LuaJIT 穩(wěn)定版本,然后參照?qǐng)?zhí)行:

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

驗(yàn)證是否安裝成功,請(qǐng)執(zhí)行:

luajit -v

安裝成功,會(huì)輸出:

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

安裝 luarocks

luarocks 是 Lua 的包管理工具。在樹(shù)莓派上需要從源碼安裝 luarocks 。這需要一些技巧。

你可以到 luarocks下載頁(yè) 查看最新的luarocks版本,然后參考執(zhí)行以下命令:

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 在編譯前,需要先進(jìn)行配置。完整的配置內(nèi)容,參見(jiàn):Customizing your settings。基于 LuaJIT 的配置命令如下:

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

然后編譯安裝:

make build
sudo make install

驗(yàn)證是否安裝成功:

luarocks

安裝 luasocket

luasocket 這個(gè)庫(kù),下面的代碼會(huì)用到,需要提前安裝下。 如果 luarocks 安裝成功,那其他的 lua 庫(kù)安裝就非常簡(jiǎn)單了:

sudo luarocks install luasocket

簡(jiǎn)單的 Lua 腳本: 發(fā)送郵件提示自己注意休息

新建一個(gè) rest_reminder.lua 文件

vi rest_reminder.lua

然后輸入以下 Lua 代碼:

#!/usr/bin/env luajit
local smtp = require("socket.smtp")
from = "username@exapmle.com" --發(fā)件人
--收件人列表
rcpt = {
    "your_qq_number@qq.com"
}
mesgt = {
    headers = { -- 只是文字顯示內(nèi)容.
        to = "your_qq_number@qq.com", --收件人
        subject = "請(qǐng)休息五分鐘!" --主題
    },
    body = "您已連續(xù)思考一小時(shí),請(qǐng)先休息五分鐘吧!"
}
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("發(fā)送成功!")
end

如果你想實(shí)現(xiàn)一些更復(fù)雜的操作,最好在常用電腦上配置一個(gè) Lua 完整的開(kāi)發(fā)環(huán)境。

想要文件能執(zhí)行當(dāng)做命令執(zhí)行,還需要給文件添加可執(zhí)行權(quán)限:

chmod +x ./rest_reminder.lua

測(cè)試代碼是否有效:

./rest_reminder.lua

正常執(zhí)行的話(huà),你的收件人郵箱(或郵件垃圾箱),應(yīng)該會(huì)收到一封郵箱。

test

注意:

  • headers 中的收件人會(huì)顯示在郵件頭,但是真正決定發(fā)送給誰(shuí)的是 rcpt
  • smtp.example.com 要改為發(fā)信郵箱的 smtp 服務(wù)器。
  • username@exapmle.comusername_pwd 要改為真實(shí)的郵件用戶(hù)名和密碼
  • 部分郵箱的 smtp 功能,可能需要單獨(dú)開(kāi)通。

使用 crontab 來(lái)定時(shí)執(zhí)行

crontab 簡(jiǎn)單實(shí)用,如果不是很熟悉,可以把它簡(jiǎn)單當(dāng)做一個(gè)高度自定義的定時(shí)器。

假設(shè)腳本的完整路徑是 /home/pi/task/rest_reminder.lua 。

執(zhí)行:

crontab -e

在打開(kāi)的內(nèi)容區(qū)末尾新增:

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

保存退出,正常應(yīng)該會(huì)看到提示:

crontab: installing new crontab

此時(shí),我們的定時(shí)腳本已經(jīng)生效了。即使重啟電腦,這個(gè)腳本依然可以正常定時(shí)執(zhí)行。

crontab 借助于 cron 服務(wù)。在必要時(shí),你可以使用 sytemed 的命令來(lái)操作 cron 服務(wù):

# 查看狀態(tài)
sudo systemctl status cron
# 激活服務(wù)
sudo systemctl enable cron

參考文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容