城市變得越來越聰明,我們中的一群人希望他們解決的第一個問題是交通。 交通頭痛的一個原因是停車。 那麼,我們如何解決它?
使用智能停車收費表! 本教程演示如何使用IBM Bluemix和PubNub構建支持IoT的智能停車收費表應用程序的原型。 該應用程序具有三個核心功能: 向駕駛員顯示可用和已採取的停車位的實時視圖,允許駕駛員根據駕駛員的操作 (例如進入和離開停車位) 自動跟蹤計費項目設置和完整代碼RepoThis項目是物聯網愛好者的一個偉大的DIY實驗。
因此,如果您有興趣嘗試一下,請前往GitHub獲取bluemix-parking-meter項目的完整源代碼。 有關從配置硬件到託管和運行應用程序的詳細步驟,請參閱構建說明和自述文件。 要託管此應用程序,您需要創建一個Bluemix和PubNub帳戶。
訪問IBM Bluemix註冊頁面和PubNub附加組件頁面以創建各自的帳戶。 這兩項服務都提供了一個免費的tier帳戶來玩他們的產品。 組件該應用程序有三個組件: 停車管理服務器 (PMS) 監視所有停車位並管理所有用戶的計量和計費。
物聯網硬件平台將停車位連接到PMS,還可以檢測車輛的存在與否。 移動應用程序提供了一個簡單的界面來幫助駕駛員找到空位並管理其停車使用和計費。 硬件平台由Arduino Yun提供動力,並使用超聲波傳感器檢測停車位中是否存在車輛。
PMS實現為在Python上運行的應用程序服務器。 它跟蹤所有設備並管理計費和預訂。 移動應用程序 (也稱為Auto Park) 是基於Cordova和JavaScript的Android應用程序。
PMS應用服務器託管在IBM Bluemix雲平台上,PMS到硬件和PMS到移動應用之間的整個通信由PubNubs實時數據流網絡提供支持。 硬件以下是用於該項目的硬件組件列表: arduino YunHC-SR04超聲波傳感器 (3號 ) 麵包板上的示例設置如下所示: 硬件電路的相關示意圖如下: 硬件有三個功能部分: 主控制器啟用WiFi的Arduino Yun充當控制幾個停車位的主控制器。
它通過超聲波傳感器定期監視並獲取其管轄範圍內每個停車位的狀態。 它還通過PubNub與PMS接口,並發布停車狀態傳感器控制器。 這是Arduino Yun board的內部組件,由ATMega32芯片供電。 它直接與傳感器接口,每隔幾秒鐘運行一個循環,以獲取每個傳感器超聲波傳感器的最新狀態,三個HC-SR04傳感器用於模擬三個停車位。
硬件設置的源代碼在GitHub存儲庫中的yun_pubnub目錄 (用於主控制器) 和device/hcsr04目錄 (用於傳感器控制器) 下可用。 停車管理服務器 (IBM Bluemix) PMS是用Python編寫的,可以作為IBM Bluemix託管服務安裝。 IBM Bluemix為PMS提供了計算能力,以監視硬件設備並為用戶管理停車計量和計費。
此外,您需要將PubNub附加服務與您的IBM Bluemix帳戶相關聯,以便PMS與PubNub一起使用。 請參考README.md中的步驟,以了解如何使用PubNub在Bluemix下設置和託管Python應用程序。
PMS的源代碼位於GitHub存儲庫中的parking-meter目錄下。 移動應用程序是基於Cordova的標準Android應用程序。 它顯示帶有彩色編碼停車位的停車區地圖,以幫助用戶選擇空置空間。
移動應用程序的源代碼位於GitHub存儲庫中的MobileApp目錄下。 PubNubPubNub充當整個系統的通信中間件。 它提供了一個基於雲的實時數據流網絡,該網絡支持70多個sdk,因此它可以使任何設備與Internet上的任何其他設備進行通信。
此應用程序使用三個PubNubs sdk,用於所有組件之間的無縫通信。 這些是: 用於移動appPython SDK的Javascript SDK用於用於Arduino YunThis應用程序依賴於多個PubNub通道來實現組件之間的通信,如下所示: 上圖中的專用通道是指PMS和一個移動應用程序之間的專用通道。 通過PubNub通道交換的所有消息均為JSON格式。
對於每個請求停車預訂的移動應用程序,PMS都會通過此渠道為該特定移動應用程序啟動消息。 所有渠道的意義將在下一節中闡明。 系統操作和場景本系統的完整操作可分為以下五個場景。
場景1: 應用程序初始化當移動應用程序安裝後首次啟動時,它會詢問用戶車輛的車牌/註冊號。 這作為PMS的唯一標識符來跟蹤應用程序以進行計費。 隨後,應用程序向PMS發送請求以獲取所有停車位的狀態。
這用於顯示地圖,其中每個空間用插槽號 (001、002和003) 標識。 以下是在PMS和移動應用程序之間進行消息交換的方式: 來自應用程序的JSON請求包含一個參數RequestType,其值為1,用於指示獲取所有停車位的批量狀態的請求。 來自PMS的JSON響應包含停車位插槽編號作為參數,其狀態為0或1,以指示該空間是空的還是被占用的。
對於移動應用程序中的地圖顯示,當前空置的停車位顯示為綠色,而占用或保留的停車位顯示為紅色。 場景2: 設備狀態更新每當停車位檢測到車輛的存在或不存在時,它會立即向PMS發出信號。 在這裡,001標識空間的插槽識別號,值1表示停車位已被占用。
或者,值為0表示空間為空。 PMS還在全球PubNub頻道parkingapp-resp上中繼此信息,以便所有應用程序都可以更新其停車地圖顯示。 場景3: 預訂請求 & 計費StartA接近空置停車位的用戶可以通過點擊應用程序上所需的空置停車位來提前預訂。
這提示PMS為用戶啟動計費會話。 PMS在其私人頻道上向應用程序發送一條消息,以啟動計費的開始。 除此之外,PMS還會啟動計時器。
以下是此交互中JSON消息的格式的仔細研究: 值為2的參數RequestType指示對保留的請求
此時,PMS停止計時器。 場景5: 計費停止後,當用戶從停車位拉出他的車輛時,硬件設備再次感測到這一點,並向PMS發送狀態更新,指示該空間現在是空的。 在接收到此更新後,PMS為用戶計算賬單,並通過其專用通道向移動應用發送賬單會話停止消息以及賬單詳細信息。
移動應用程序接收到的JSON消息包含賬單詳細信息的參數:
在這種情況下,向用戶收取最低10美元的賬單。 此外,該應用程序不具有在停車期間對用戶進行認證的任何規定 (作為方案4的一部分),以確保預留停車位的用戶是實際將其車輛停放在該空間中的用戶。 對於希望進一步增強此應用程序並使其更接近現實生活的部署的讀者來說,這是一個練習。
我們在構建和使用這個應用程序時玩得很開心,考慮到有相當多的子系統,測試端到端的場景非常有趣。 使用IBM Bluemix & PubNub服務極大地簡化了開發挑戰,因為開發人員可以專注於應用程序邏輯,而不必擔心如何使不同子系統之間的通信工作。 除此之外,這兩種服務都能夠處理大規模的規模,可以利用這些規模來構建類似的現實世界應用程序,這些應用程序需要247的正常運行時間和成千上萬的隨機用戶。
最初發布的所有最新進展和科技新聞都直接發送到您的收件箱? 相關問題我沒有得到谷歌玻璃資源管理器版。
在沒有硬件的情況下嘗試學習Glass dev是徒勞的嗎? 不,您仍然可以在沒有硬件的情況下學習玻璃開發的基礎知識。 完成此操作的主要方法有三種: 1) 訪問鏡像API文檔,進入遊樂場,並開始散列一些代碼。
下載PHP、Java和Python庫,無論你最喜歡哪一個。 熟悉行話和轉換 (時間軸,捆綁包,菜單等)。 閱讀支持文檔 (下面的第二個鏈接),以了解Glass硬件的實際功能。
根據此規範構建一些應用程序。 很快,你會找到一個有硬件的朋友