【树莓派自动化应用实例】整点提醒自己休息五分钟
背景介紹
我有一個(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í)間。總感覺(jué)有點(diǎn) Low!于是,我就寫了個(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.3luarocks 在編譯前,需要先進(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 thenprint(e) elseprint("發(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í)行的話,你的收件人郵箱(或郵件垃圾箱),應(yīng)該會(huì)收到一封郵箱。
注意:
- headers 中的收件人會(huì)顯示在郵件頭,但是真正決定發(fā)送給誰(shuí)的是 rcpt
- smtp.example.com 要改為發(fā)信郵箱的 smtp 服務(wù)器。
- username@exapmle.com 和 username_pwd 要改為真實(shí)的郵件用戶名和密碼
- 部分郵箱的 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參考文檔
- 【LuaJIT版】從零開(kāi)始在 macOS 上配置 Lua 開(kāi)發(fā)環(huán)境
- Installation instructions for Unix
- Lua smtp
- Linux 下執(zhí)行定時(shí)任務(wù) crontab 命令詳解
- crontab 使用實(shí)例
- 強(qiáng)大的crontab
轉(zhuǎn)載于:https://www.cnblogs.com/ios122/p/7842269.html
總結(jié)
以上是生活随笔為你收集整理的【树莓派自动化应用实例】整点提醒自己休息五分钟的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jmeter脚本结合ant执行测试用例并
- 下一篇: 问题 B: C语言11.2