這個項目是一個DIY觸摸屏面板,用于布防/解除HomeAssistant的報警系統(tǒng)。它由RaspberryPi、3.5英寸觸摸屏顯示器、基于Python的自定義應(yīng)用程序和MQTT提供支持。
本文將引導(dǎo)您完成項目的創(chuàng)建,并提供創(chuàng)建您自己的項目所需的一切!
家庭助理
HomeAssistant是一個了不起的開源家庭自動化平臺。它的眾多功能之一是能夠?qū)崿F(xiàn)您自己的家庭安全警報系統(tǒng)。然后,您可以使用各種傳感器來確定是否/何時觸發(fā)警報。
就我而言,我的所有外門上都有幾個Z-Wave門傳感器。如果在警報激活時任何門打開,我會在手機和電腦上收到即時推送通知。最終,我將把它擴展到包括運動傳感器和警報器。
雖然這工作正常,但布防/撤防設(shè)備的唯一方法是通過Web界面。不幸的是,手動警報沒有一個API接口,我們可以使用它來發(fā)送布防/撤防命令,同時還可以從HA接收即時狀態(tài)更改。
因此,我創(chuàng)建了新的手動MQTT警報組件,其功能與手動警報相同,但也允許通過MQTT進行雙向通信!有了這個組件,我們可以使用我們可以想象的任何網(wǎng)絡(luò)連接平臺輕松構(gòu)建自己的遠(yuǎn)程鍵盤。就我而言,我選擇使用帶有觸摸屏的RaspberryPi構(gòu)建解決方案。
硬件
至少,您需要以下組件:
Adafruit的PiTFTPlus480x3203.5“TFT+觸摸屏顯示器
微型SD卡
用于供電的MicroUSB電纜
*我在這個項目中使用了PiZeroW,但是任何帶有wifi的Pi都應(yīng)該可以工作(即使是使用USBwifi適配器的)。
可選:該軟件還支持可選的屏幕保護模式,在這種模式下,屏幕會在很長一段時間后黑屏。通過添加PIR運動傳感器,我們可以讓屏幕保持關(guān)閉,直到有人接近鍵盤,從而延長顯示器的使用壽命。只需將PIR傳感器連接到顯示器底部的額外引腳-請參閱本頁下方的運動傳感器部分。
準(zhǔn)備HomeAssistant和MQTT
HomeAssistantv0.50添加了我們需要使用的新alarm.manual_mqtt組件。這依賴于MQTT平臺的啟動和運行,因此請確保首先執(zhí)行此操作。
要將警報添加到HomeAssistant,只需將其放入您的文件中:configuration.yml

可以在文檔頁面上找到完整的配置選項列表。alarm.manual_mqtt
準(zhǔn)備樹莓派
PiTFT顯示器需要特殊的內(nèi)核驅(qū)動程序、配置和校準(zhǔn)。Adafruit確實提供了一個很好的指南和預(yù)烘焙的操作系統(tǒng)映像,其中包括這些;但是,這個舊圖像無法在PiZeroW上正常工作(wifi完全壞了)。
就我而言,我最終安裝了最新版本的RaspbianJessieLite并按照這些說明使顯示器正常工作。
注意:此項目不需要X桌面環(huán)境,因為軟件直接繪制到屏幕的幀緩沖區(qū)。如果您按照上一個鏈接中的說明進行操作,只需跳過任何引用X11的部分。
此時,您的TFT上應(yīng)該會出現(xiàn)一個功能齊全的LinuxCLI!

要讓觸摸屏與pygame一起使用,請確保您使用的是SDL1.2。
現(xiàn)在我們可以在Pi上安裝報警面板軟件了!
軟件
要安裝它,請使用Git將存儲庫克隆到某個位置-我選擇了/srv:

您還需要通過將.env.dist示例文件復(fù)制到.env并編輯以下設(shè)置來配置面板:
PINS-您想使用的4位密碼的逗號分隔列表。
MQTT_HOST-MQTT服務(wù)器的IP或主機名
MQTT_USER-MQTT的用戶名
MQTT_PASS-MQTT對應(yīng)的密碼
您現(xiàn)在可以運行該程序:

最后,如果您希望警報面板在啟動時啟動,請將以下內(nèi)容添加到您的rc.local文件(exit0行上方):

可選運動傳感器/屏幕保護程序
為了最大限度地延長顯示器的使用壽命,可以使用PIR運動傳感器在無人時自動關(guān)閉顯示器。PiTFT顯示器在其底部方便地暴露了GPIO引腳,因此只需進行以下連接:
直流至5v
GND到地
輸出到任何未使用的GPIO(例如引腳23)

確保將以下行添加到您的.env文件中,以便控制面板了解您的傳感器-將23替換為您選擇使用的任何GPIO引腳:
PIR_GPIO_PIN=23
(如果您的控制面板已經(jīng)在運行,那么您需要在進行此更改后重新啟動它。)
用法
應(yīng)用程序啟動后,顯示器應(yīng)自動連接到MQTT。

每當(dāng)HomeAssistant中的鬧鐘狀態(tài)發(fā)生變化時,它都會通過MQTT自動將新狀態(tài)實時推送到顯示屏上。
要通過報警面板更改報警狀態(tài),您必須先按相應(yīng)的數(shù)字鍵輸入有效的PIN碼。如果您不小心按錯了按鈕,只需點擊被屏蔽的輸入、#鍵或*鍵即可清除您的輸入。
輸入有效的PIN將解鎖按鈕以更改狀態(tài):
解除“武裝”
離開
按下其中任何一個都會通過MQTT向HomeAssistant發(fā)送命令以進行相應(yīng)的更改。
底層-創(chuàng)建UI和應(yīng)用程序
設(shè)計UI相當(dāng)簡單。使用Photoshop,我創(chuàng)建了一個新的480x320工作區(qū),并將其劃分為相等單位的網(wǎng)格,以確保按鈕的大小和對齊方式正確:

然后將每個按鈕及其不同狀態(tài)提取到PNG。
Python應(yīng)用程序使用我在PyGame之上創(chuàng)建的自定義UI庫。一切(除了狀態(tài)文本)都呈現(xiàn)為具有多種狀態(tài)的“按鈕”:
PIN輸入(1-9、*、0和#):
默認(rèn)
按下
操作按鈕(撤防、布防回家、布防離開):
默認(rèn)(禁用)
激活(警報系統(tǒng)的當(dāng)前狀態(tài))
可用(啟用-輸入正確的PIN后即可選擇)
甚至顯示當(dāng)前屏蔽PIN的框也被繪制為帶有狀態(tài)的“按鈕”:
默認(rèn)(沒有輸入)
輸入了1個號碼
輸入2個數(shù)字
輸入3個數(shù)字
輸入4個數(shù)字,PIN有效
輸入4個數(shù)字,PIN不正確
每個按鈕狀態(tài)都有自己的圖像-我們只需跟蹤當(dāng)前狀態(tài)并根據(jù)需要在圖像之間切換。
應(yīng)用程序本身運行一個簡單的事件循環(huán)——在每次迭代中,我們通過MQTT檢查屏幕觸摸或傳入狀態(tài)更改。UI狀態(tài)也會根據(jù)需要重新繪制。為了防止CPU以100%的速度運行并產(chǎn)生過多的熱量,我們還睡眠了很短的一段時間。
一旦輸入正確的PIN,操作按鈕就會解鎖。當(dāng)按下未鎖定的操作按鈕時,我們會立即通過MQTT向HomeAssistant發(fā)出命令,以相應(yīng)地更改警報狀態(tài)。
外殼
每個DIY項目都需要一個外殼,因此我嘗試設(shè)計一個定制的3D打印外殼來容納我的控制面板和PIR傳感器:
這不是最漂亮的情況,一些內(nèi)部測量不是100%完美的,還有一些小問題:
Pi的背面和外殼的背面之間有一個微小的間隙-理想情況下,我希望它們齊平。這是用熱膠固定的。
支柱可能更堅固。
前面板的厚度略短于TFT顯示器,使其突出約1毫米。
沒有額外的通風(fēng)孔(雖然熱量還不是問題)。
設(shè)計非常基礎(chǔ)(我不是設(shè)計師)。
由于這些原因,我將來可能會重新設(shè)計這個案例,但現(xiàn)在它已經(jīng)足夠滿足我的需要了:)
顯示器和PIR傳感器的測量結(jié)果非常完美,因此它們非常適合并緊貼在外殼的前部。安裝后,我使用了大量的熱膠將PCB固定在正面內(nèi)側(cè)。

對于后部,我只需將微型USB電纜穿過孔,將其插入Pi,然后將前后部件卡扣在一起。我之前添加的熱膠仍然是溫暖的,所以它有助于將前后部件粘合在一起。

然后我使用CommandLargePictureHangingStrips(帶有類似尼龍搭扣的材料)將它安裝在墻上。我本可以在外殼上打孔并使用螺絲,但我想要一些不那么永久的東西,以防我以后決定進行改進。
-
報警系統(tǒng)
+關(guān)注
關(guān)注
5文章
662瀏覽量
77071 -
面板
+關(guān)注
關(guān)注
13文章
1728瀏覽量
55446 -
樹莓派
+關(guān)注
關(guān)注
122文章
2081瀏覽量
110725
發(fā)布評論請先 登錄
AllJoyn核心應(yīng)用教程:Base Services服務(wù)之控制面板
怎么實現(xiàn)基于msp430和電容式觸控技術(shù)的門禁控制面板電路設(shè)計?
微軟或逐步移除Windows 10中的控制面板
win8控制面板在哪打開?
再見,控制面板,Win10系統(tǒng)終于取消控制面板
nvidia控制面板怎么設(shè)置
如何利用樹莓派DIY一個門禁報警控制面板
評論