關于Telegram這款通訊應用,雷鋒網(wǎng)有過詳細介紹,而且創(chuàng)始人背后的故事也十分精彩,堪比好萊塢大片,推薦閱讀。不過今天要介紹的,卻是如何用Telegram遠程控制傳感器和制動器。雖然我們能用App控制家里的智能產品,但如果用通訊應用的話,是不是有一種與設備聊天的親密感呢?
去年六月,Telegram公布了一些API,可以借此開發(fā)模仿真實用戶的自動化程序,即BOT。整個思路是,開發(fā)一個BOT,運行在樹莓派上,讓它接受Telegram的指令,再讓溫度/濕度傳感器和一個裝有兩個繼電器的模塊接上樹莓派,接受控制。
原理
用戶通過手機上的Telegram與BOT聊天,信息會發(fā)往Telegram服務器。而樹莓派上的程序會通過兩種方式收到信息:
polling:每隔一段時間,程序查看是否有新信息,有則收取
webhook:配置Telegram,將新信息發(fā)到一個網(wǎng)頁URL
第二種方法需要一個公有IP,而且要對路由進行設置,比較麻煩,所以選第一個。
造個BOT
第一步當然是建個Telegram號啦。很簡單,直接向系統(tǒng)內置的BotFather發(fā)“/newbot”指令就行啦,就像下圖那樣。
設定好顯示名稱和用戶名就行啦,系統(tǒng)會提供一個授權指令,它就是密碼了。有了名字和密碼,程序就能扮演人類了。
安裝
本文的例子中,BOT程序是用javascript開發(fā)的,運行在Node.js服務器環(huán)境(如何在樹莓派上安裝請看這里)。程序需要3個庫:
node-dht-sensor:從傳感器中讀取溫度和溫度值
onoff:控制樹莓派數(shù)字PIN碼
node-telegram-bot:使用Telegram的API
建個新文件夾保存BOT程序代碼,并在此文件夾下,輸入以下命令:
npm install node-dht-sensor onoff node-telegram-bot
在同一文件夾下,復制BOT的javascript代碼,下載地址見這里。記得替換代碼中的密碼,換成自己申請的那個。
執(zhí)行程序只需用下面的代碼:
sudo node bot.js
使用
現(xiàn)在開發(fā)的命令有下面這些:
/getouts:顯示繼電器的狀態(tài)
/setout1 ON|OFF和/setout2 ON|OFF:控制兩個輸出口的開/關
/gettemp:顯示實際溫度
/gethum:顯示實際濕度
安全
Telegram里的BOT都是公開的,每個用戶都能給它們發(fā)信息,所以為了確保自己的程序只響應自己的命令,要在代碼中加入用戶的ID驗證。如下所示:
本文的例子中用的是DHT11溫度/濕度傳感器,以及一個配了兩個繼電器的模塊。將他們接上樹莓派的PIN口即可。在程序中,還要配置正確的PIN口,如下:
都弄完后,就可以用Telegram給家里的傳感器什么的發(fā)指令了。PS:如果大神發(fā)現(xiàn)QQ和微信什么的也可以,可留言或關注硬創(chuàng)邦微信號討論。