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