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

背景介紹

show.png

我有一個習慣,定鬧鐘每隔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 = "[email protected]" --發件人
--收件人列表
rcpt = {
    "[email protected]"
}
mesgt = {
    headers = { -- 只是文字顯示內容.
        to = "[email protected]", --收件人
        subject = "請休息五分鐘!" --主題
    },
    body = "您已連續思考一小時,請先休息五分鐘吧!"
}
r, e = smtp.send{
    from = from,
    rcpt = rcpt,
    source = smtp.message(mesgt),
    server = "smtp.example.com",
    user = "[email protected]",
    password = "username_pwd"
}
if not r then
    print(e)
else
    print("發送成功!")
end

如果你想實現一些更復雜的操作,最好在常用電腦上配置一個 Lua 完整的開發環境

想要文件能執行當做命令執行,還需要給文件添加可執行權限:

chmod +x ./rest_reminder.lua

測試代碼是否有效:

./rest_reminder.lua

正常執行的話,你的收件人郵箱(或郵件垃圾箱),應該會收到一封郵箱。

test.png

注意:

  • headers 中的收件人會顯示在郵件頭,但是真正決定發送給誰的是 rcpt
  • smtp.example.com 要改爲發信郵箱的 smtp 服務器。
  • [email protected]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

參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章