注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

Python 站崗

引言

網際網路連線無處不在,它找到了新的應用,併為舊的設計注入了新的活力。在這個微型積體電路裝置擁有 TCP/IP 堆疊和無線連線的時代,人們不再需要獨立的 PC 來利用網路。

VAHNZ Controls 開發了其 eBukal[1] 遠端報警裝置,以利用他們對微控制器介面和網際網路協議的知識,為樓宇自動化領域創造了創新的解決方案。

遠端事件撥號網際網路通知

這個想法源於一位客戶在波特蘭一個漫長炎熱的夏天,需要監控辦公樓空調的溫度。辦公室物業經理希望在辦公室溫度變得難以忍受、租戶抱怨之前得到警報。該應用不僅限於檢測溫度變化,還已用於各種輸入裝置,例如接近開關和洪水感測器。

設計的第一版使用 DTMF 音調將數字訊息留在辦公室經理的電話上。除了難以破譯數字的含義之外,呼叫裝置還必須克服接收者語音郵件系統中的時序陷阱,才能選擇留下數字反饋的一個選項。由此產生的系統既不健壯也不美觀。

簡訊似乎是正確的選擇,因為任何手機都可以輕鬆接收訊息。大多數無線運營商都維護電子郵件到簡訊閘道器,並且許多現成的裝置都可以生成電子郵件。我只受到撥號連線的限制——許多包含受監控裝置的地點都無法接收無線訊號。

想出使用簡訊的基本想法並選擇元件後,我必須弄清楚如何讓各個部分協同工作。

來自 eBukal 裝置的電子郵件訊息必須在伺服器上進行解析,以確定要通知的收件人以及應接收條目的線上日誌。必須將新裝置新增到配置檔案中。諸如閾值、撥號電話號碼等引數必須透過序列埠傳送到 eBukal。必須編寫圖形使用者介面 (GUI),以便現場人員設定裝置。

Diagram: eBukal used to monitor water conditions in a basement

eBukal 如何用於監控地下室的水情 放大

我知道如何編寫命令列指令碼和 PHP 進行伺服器編碼,並使用 Perl 進行 CGI 和 Visual Basic 進行 GUI,但這次我想做得更好。我想做對。

Python - 一站式開發和平臺獨立性

我以前用過 Python,它似乎有潛力完成所有必需的編碼,而且是我喜歡使用的程式語言。我對任務的某些部分不是完全有信心,尤其是構建圖形使用者介面,但我決定面對我的恐懼,相信 Python 的成熟性、強大的庫和第三方支援。SPE 編輯器與 Python 的解釋性相結合,證明尤其有價值。

A screen shot of the eBukal user interface

基於 wxPython 的 eBukal 訊息配置使用者介面截圖

經過一些嘗試和錯誤,我最終確定了使用以下標準庫和第三方模組的最終概念

  • email、time 和 ConfigParser -- 用於伺服器端的電子郵件解析、電話訊息生成和日誌簿條目
  • cgi 和 sha -- 用於編輯伺服器配置檔案的 CGI 模組
  • wxPython 和 wx.xrc -- 用於使用 XRCed 編寫的 GUI
  • serial、pickle、ConfigParser 和 time -- 用於 eBukal 設定點下載的序列通訊庫

不幸的是,沒有使用 Python 語法的 PIC 編譯器;如果存在這樣的工具,這個迴圈就完成了。因此,微控制器程式碼是用 PicBasic Pro 編寫的,這是一個來自 MicroEngineering Labs, Inc 的流行商業產品。

Screen shot of the eBukal online log

eBukal 事件線上日誌截圖,紅色顯示警報,每日診斷顯示資訊訊息 放大

這次冒險得到了回報。系統執行良好,還可以新增許多附加功能:伺服器日誌功能、每日診斷和線上配置。Python 提供的超出了我的要求,並且根據所用庫模組中功能的可用性添加了一些功能。

總結

這可能還不是 VAHNZ Controls 的殺手級應用,但我認為選擇 Python 程式語言是朝著正確方向邁出的一步。技術總是在不斷發展,沒有人知道接下來會發生什麼,但我相信 Python 將隨時準備迎接挑戰。平臺獨立性是另一個值得高興的方面——在當今環境下,將所有籌碼押在一個玩家身上可能比以往任何時候都更具風險。

欲瞭解更多資訊,請訪問 VAHNZ Controls 線上網站 eBukal.vahnzcontrols.com 或聯絡 info at vahnzcontrols.com

關於作者

Ivan Lehecka 是 VAHNZ Controls 的創始人,該公司致力於在樓宇自動化和其他適用領域引入智慧。

[1]eBukal 是 VAHNZ Controls 的商標。