基于物聯(lián)網(wǎng)的多重警報!智能門鎖安全系統(tǒng)
通過指示谷歌助理,我們控制我們的門鎖安全系統(tǒng)。如果門鎖是活躍的,它將發(fā)送警報,如果違反檢測。
房子里的安全很重要。本課題提出了一種智能門鎖安全系統(tǒng)的原型,可用于提高門的安全性。此外,使用鑰匙的傳統(tǒng)方法門可以很容易地被未經(jīng)授權的人或竊賊打開,如果他們有正確的鑰匙。這樣他們就能偷走房子里所有值錢的東西。
該項目的核心思想是實現(xiàn)一個基于智能多報警的智能物聯(lián)網(wǎng)門鎖安全系統(tǒng),盡可能減少用戶交互。因此,在這個項目中,我們將建立我們自己的安全系統(tǒng),可以檢測門/窗是否被打開。警報可以通過谷歌助手的語音命令激活或關閉,當檢測到入侵時,它還會發(fā)送一封郵件以及電報頻道的消息給你和你的親戚警告他們。很酷的是,整個系統(tǒng)都在云端運行,所以可以在世界任何地方進行控制。
基于物聯(lián)網(wǎng)的項目可以引導我們進行另一場關于自動化鎖定安全系統(tǒng)的革命。安全可以通過普通的保安來實現(xiàn),但數(shù)字化比其他任何保安都更有效。它的非凡之處是,通過一點點利用物聯(lián)網(wǎng)和云計算,讓你的家、工業(yè)、學校、學院、服務器機房等變得智能化、智能化,從而節(jié)省時間、節(jié)省人力,達到事倍功倍的效果。這一安全系統(tǒng)將為所有主要關注安全問題的地方提供幫助。
工作原理
基于物聯(lián)網(wǎng)門鎖的系統(tǒng)采用了Bolt開發(fā)板,該開發(fā)板基于樂鑫半導體著名的ESP8266 Wi-Fi模塊。但是這里它有自己的Bolt固件在里面運行,這有助于我們通過螺栓提供的API訪問GPIO引腳(數(shù)字讀/寫,模擬讀,PWM寫)等。
在我們的硬件,我們將有一個霍爾效應傳感器和磁鐵安裝到門。當門打開時,磁鐵遠離大廳傳感器,傳感器將檢測到它,這可以通過API調(diào)用讀取,我們可以觸發(fā)蜂鳴器,并通過男性和電報向用戶發(fā)出警報。要激活警報,只需對IFTTT中設置的谷歌助手說命令(激活安全警報)。一旦激活,橙色燈將開始發(fā)光,指示狀態(tài)?,F(xiàn)在,每當門被打開時,警報就會響起蜂鳴器的聲音,也會有一封郵件發(fā)送到你的Gmail收件箱,以及電報頻道上的消息,以及違規(guī)的日期和時間。
創(chuàng)建項目的步驟:-
設置Bolt IoT模塊
在我們開始之前我們得先安裝好波特的硬件。這很容易做到,只要在你的手機上安裝螺栓應用程序并輸入你的Wi-Fi憑據(jù),這樣你的螺栓就可以連接到你的Wi-Fi,從而連接到互聯(lián)網(wǎng)。然后你可以訪問云頁面,從那里獲得你的設備ID和API密鑰,一切都好了。您可以訪問BoltIOT文檔以了解更多有關它的信息。
使用Bolt IoT硬件的GPIO引腳
正如我之前所說,Bolt硬件的所有GPIO引腳都連接到云,并且只能通過API來控制(讀/寫)。API的詳細信息可以在我之前分享的文檔中找到。我們來舉個例子。讀取引腳狀態(tài)的API在文檔中解釋如下
這里,我們感興趣的是API URL
這里的API密鑰是44b2de6b-7e68-40e7-a27f-814b58afe008,設備ID是BOLT13819450。但這是一個示例鍵和ID,在你的設備上是不一樣的。你必須訪問cloud.boltiot.com來獲取你的設備的設備ID和API密鑰。下面的快照可以幫助你做到這一點。
一旦獲得API密鑰和設備ID,您只需將默認值替換為您的值并在瀏覽器中加載URL。您的瀏覽器將返回pin的狀態(tài)
如果值是1,那么它是高的,如果是0,那么它是低的。同樣,您可以嘗試所有命令的API鏈接,如數(shù)字讀取,寫入,模擬寫入,PWM甚至串行通信。一旦你完成了它,讓我們繼續(xù)這個項目的實際程序。
準備Python環(huán)境
正如我之前所說,bolt可以用JavaScript、HTML或Python編程。在這里,我們將只關注如何用python實現(xiàn)它。我們必須在應該已經(jīng)安裝了python的計算機上編寫python腳本。如果您是新手,我建議您閱讀這篇文章,了解如何安裝python并開始使用它。除此之外,我們還需要安裝兩個庫包,以便我們的程序工作。您可以使用pip install選項將包添加到python中,在python目錄下的終端上運行以下命令來安裝包。打開windows終端并導航到python目錄(主要在C:// python 3中)
步驟1:-安裝pip如果你沒有安裝之前。用下面的命令安裝它
步驟2:-在C://Python/Scripts目錄下安裝請求包
步驟3:—使用以下命令安裝boltiot包
一旦安裝成功完成,你的界面應該如下所示
現(xiàn)在我們已經(jīng)打開了Python IDLE,并開始為我們的安全系統(tǒng)編寫實際的程序。但在此之前,通過谷歌助手激活或取消激活警報,并向我們的電報頻道發(fā)送電子郵件和發(fā)送消息,我們使用IFTTT提供的谷歌助手服務和Web hooks服務。現(xiàn)在我們來設置它們。如果您是使用IFTTT小程序的新手,那么建議您在繼續(xù)之前閱讀本文。
通過谷歌助手激活和取消激活告警
我們必須為此創(chuàng)建兩個小程序(食譜),一個是激活警報,另一個是取消激活警報。當報警激活時,接在引腳3上的電容應充電,當報警解除時,接在引腳4上的電容應充電。
applet為該服務使用谷歌助手,web鉤子獲取該服務的請求。下面的屏幕截圖顯示了如何通過谷歌助手將小程序設置為激活警報時使3腳高,取消警報時使4腳高。
電容器的用途是什么?
電容器1和2用作存儲元件。當板從IFTTT接收命令時,引腳3和4將作為輸出引腳。根據(jù)該命令,電路板將對電容器1或電容器2充電。
現(xiàn)在,當IFTTT操作完成時,Python代碼使引腳3和4作為輸入引腳,通過讀取這些引腳的狀態(tài),Python代碼將了解它是否應該根據(jù)哪個電容有電荷激活或停用警報。簡單地說,這是一個將IFTTT與Python連接起來的小技巧。如果博爾特平臺提供了一個虛擬鉆頭,那就容易多了,但他說,這不是一個選擇。
當檢測到入侵者時發(fā)送電子郵件
第三個applet將在檢測到入侵者時發(fā)送電子郵件。這可以通過在IFTTT上使用web hook和Gmail服務來實現(xiàn)。Webhooks服務會給我們一個URL,這個URL在加載時將觸發(fā)預定義的Email。applet的快照如下所示。您可以自定義接收方ID和文本。如果檢測到入侵者,該URL將在python腳本中使用請求庫觸發(fā)。
當檢測到入侵者時,向電報頻道發(fā)送警報。
1. 我們將利用電報頻道在發(fā)現(xiàn)入侵者時廣播警報。
2. 首先,在telegram中創(chuàng)建一個新通道,并提供合適的名稱和描述,如下所示。
3. 在下一個屏幕中,將頻道設置為Public,并根據(jù)您的意愿輸入頻道永久鏈接。保存此通道鏈接為“telegram_chat_id”,其中下圖為“smart_door_lock_alarm”。
4. 現(xiàn)在讓我們?yōu)槲覀兊念l道創(chuàng)建一個機器人。聊天機器人是運行在電報內(nèi)部的第三方應用程序,我們將使用這個聊天機器人向我們的頻道發(fā)送警報。
5. 在telegram的主界面,點擊右上角的搜索圖標,搜索botfather。
6. 在搜索結果中,選擇旁邊有藍色勾號的botfather。
7. 聊天顯示了幾個可能的命令,輸入“/newbot”創(chuàng)建一個新的機器人。
8. 給你的機器人正確的名字和用戶名。
9. 成功創(chuàng)建bot后,它會生成一個令牌。此令牌用于通過python發(fā)送和接收消息。
10. 請將此筆記保存為“telegram_bot_id”,其中保存為“bot”,后面跟著bot令牌。
11. 現(xiàn)在讓我們將機器人添加到我們的頻道,轉(zhuǎn)到頻道描述并從3點菜單中選擇添加管理員。從搜索字段中選擇機器人,并賦予機器人適當?shù)臋嘞蕖?
選擇“添加管理員”
12.恭喜你!您已經(jīng)成功創(chuàng)建了一個通道和一個聊天機器人。
Python程序說明
這個物聯(lián)網(wǎng)安全警報的完整python代碼可以在這個項目的末尾找到。在本節(jié)中,讓我們將代碼分解成小片段并嘗試理解它們。python腳本的總體目標是檢查警報是否激活或取消激活,如果激活,我們必須檢查門是否打開,如果打開,我們必須觸發(fā)電子郵件并打開蜂鳴器。
我們已經(jīng)知道,如果我們必須激活安全系統(tǒng),引腳3上的電容將是高的,如果我們必須取消激活安全系統(tǒng),引腳4上的電容將是高的。所以我們只需要在python腳本中讀取它們來激活或取消激活警報。
我們通過導入time、json、requests和boliot庫來開始程序。其中time庫默認情況下在python中添加,但是您必須像前面討論的那樣手動安裝請求和boltiot包,否則您將在這些行上得到錯誤。
import time #導入執(zhí)行延遲操作的時間
#使用請求通過webhooks IFTTT發(fā)送郵件
通過API導入boliot來控制GPIO引腳
導入json #庫來處理json數(shù)據(jù)
接下來,我們輸入設備的憑據(jù),如API密鑰和設備ID。只有使用這兩個值,您才能訪問設備上的任何GPIO引腳。不要與公眾分享這些,因為它們可以被任何人用來控制你的GPIO引腳。
正如在API部分所討論的,當我們以字符串的形式執(zhí)行數(shù)字Read時,我們將獲得響應,因此我將這些字符串值賦給兩個變量,以便我們可以在程序中輕松地使用它們。
現(xiàn)在我們創(chuàng)建一個名為send_telegram_message()的函數(shù),它將message作為參數(shù)。
在第一行中,我們正在構建URL,以便Telegram知道它必須將消息發(fā)送到哪個bot。為此需要telegram_bot_id。data變量是一個字典,它保存聊天ID(通道ID),以便Bot知道它必須將消息發(fā)布到哪個通道。它還包含要作為消息發(fā)送的文本消息。
在下一步中,我們需要使用前面構建的URL向Telegram服務器發(fā)出HTTP請求。該請求是一個“POST”請求,其中包含所有相關數(shù)據(jù),如URL和要包含在請求中的數(shù)據(jù)。
‘ telegram_data = JSON .loads(response.text) ’行將文本響應轉(zhuǎn)換為JSON對象并將其存儲在telegram_data中。請求的狀態(tài)存儲在telegram_data變量的“ok”字段中,我們將返回它。“ok”字段將始終包含一個布爾值,即True/False,如果消息已發(fā)送,則為True。
該函數(shù)被封裝在try-except塊中,以便捕獲任何錯誤,如果在try塊中存在任何錯誤,則返回False。
在無限while循環(huán)中,我們有另外兩個循環(huán)。如果從谷歌助手激活告警,將執(zhí)行一個,如果告警被取消激活,將執(zhí)行另一個。缺省情況下,如果未收到命令,則執(zhí)行去激活循環(huán)。
在這里,必須通過讀取引腳3來檢查警報是否被激活,這只是電容器。如果引腳高,我們使橙色LED發(fā)光,然后退出這個循環(huán),進入激活while循環(huán)。我們每5秒檢查一次,以確保我們沒有超過bolt提供的API速率限制,即每分鐘30次調(diào)用。
類似地,在激活的while循環(huán)中,我們必須檢查引腳4以知道警報是否被取消激活。如果停用,我們關閉橙色循環(huán),回到停用的while循環(huán)。否則我們必須通過讀取引腳0來檢查磁鐵是否存在于霍爾傳感器附近。如果引腳高,則意味著磁鐵遠離傳感器,表明門已打開。所以我們觸發(fā)蜂鳴器,也觸發(fā)郵件和消息到電報頻道使用請求包。否則我們每五秒監(jiān)測一次傳感器。執(zhí)行相同操作的代碼如下所示
是時候測試設備了
一旦你準備好了代碼,我們可以開始測試我們的項目。將板子安裝在門框上,將磁鐵安裝在門上。確保磁鐵離霍爾傳感器很近。這個想法是,當門關閉時,傳感器應該檢測到磁鐵,當門打開時,不應該能夠檢測到磁鐵。
本文編譯自hackster.io