玩轉樹莓派:OpenHAB的入門(二)

經過第一篇的介紹,咱們如今已經安裝了OpenHAB和Demo House,那麼接下來咱們來看一下OpenHAB是如何工做的。html

OpenHAB如何工做?java

接下來你會在openHAB配置的共享文件夾看到sitemap和items的子目錄。python

Items是存放你想要在系統裏用到的每個控制設備、傳感器或信息元素的庫。它不必定是一個物理設備,你能夠定義一個網絡來源如天氣或股票。每一個項均可以被命名或指定多個組,並鏈接到特定的bindings。git

當你打開openHAB移動或Web應用程序時,Sitemaps只關心你會看到的界面。你能夠控制按鈕如何放置以及信息如何呈現出來。您能夠爲你的每個房間定義最高級別的組,點擊每一個房間的設備列表。或您可能更喜歡一種類型的設備爲一組。github

Rules是家庭自動化方面發揮做用的地方,在那裏你能夠預設打開設備的時間表或條件。好比在晚上10點打開臥室紅色的燈;或者,若是溫度小於0或有人在房間裏的時候就打開一個供暖器。你能夠找到一個腳本文件夾,它提供了相似的功能規則。web

persistence engine是一個重要問題,不過本文不提。默認狀況下,openHAB只會顯示事物的現狀;若是你想隨着時間的推移跟蹤數據,你須要設置一個數據源爲持續數值。在這你能夠設置一般數據點多久測一次,或刪除舊的數據點,你還須要告訴它使用什麼樣的數據庫,如MySQL或簡單記錄到一個文件。數據庫

你也能夠將數據值變成文字標籤。例如,humidex.scale文件定義溼度值的範圍以及如何轉換成文字:29-38「有些不適」。瀏覽器

在openHAB裏,sitemap和items文件必不可少;其他的均可選擇。你能夠有多個sitemaps和Item,因此你能夠控制demo內容,或嘗試一種新的家居控制界面。bash

接下來,咱們將添加一些經常使用的智能家居套件,從一個新的sitemap開始。每個都會介紹一些核心概念,好比如何安裝bindings,以及定義項。服務器

首先建立一個新的(空白)home.items文件,並在相關目錄中建立一個新home.sitemap文件。打開home.sitemap粘貼下面的代碼。這只是做爲一個基本骨架,咱們會在以後添加bits。

sitemap home label="My Home"
{

 }

你應該看到一個通知,說openHAB已經肯定了一種新的sitemap和items文件。

啓用調試模式

當你正在試圖讓openHAB正確工做,啓用調試模式方便你的工做,它詳細的調試日誌列出了全部有用的東西。要啓用此模式,打開openHAB配置共享文件夾,而後在logback.xml裏編輯。在行40,將DEBUG改爲INFO。以後你須要從新啓動。

<logger name="org.openhab" level="INFO"/>

一旦你跟蹤日誌你會看到不少信息。

添加Philips Hue

本文使用了Philips Hue做爲示範。Hue燈泡要求你安裝一個binding ——把他想象成一個設備驅動程序。目前有約160 bindings適用於OpenHAB 1,這就是爲何OpenHAB是一個強大的系統,它能夠與全部不一樣的控制系統組合成一個統一的接口。

Bindings必須先下載好,在樹莓派上最簡單的方法是使用apt-get,而後將控制權給openhab用戶。

sudo apt-get install openhab-addon-binding-hue
sudo chown -hR openhab:openhab /usr/share/openhab

接下來,你須要告訴OpenHAB加載binding,並配置全部所需的變量。進入配置文件夾,複製一份openhab-default.cfg的副本,將其命名爲openhab.cfg。打開該文件,搜索HUE,用下面的代碼替換整個部分。您須要更改的惟一事情就是你的橋接器的IP值,若是你不知道的話,嘗試在網上搜索工具。secret的數值並不重要,它只是一種OpenHAB用來識別橋樑的用戶名。

################################ HUE Binding #########################################
# IP of the Hue bridge
hue:ip=192.168.1.216
hue:secret=makeuseofdotcom
hue:refresh=10000

保存並退出。若是你正在跟蹤日件,你會看到一個消息讓你等待配對,但若是你忘記了或錯過了倒計時,你只要重置樹莓派就能夠了,當Hue binding啓動時你會獲得另外100秒的計時器。在繼續以前請確保你已成功配對。

接下來,打開home.items文件,咱們會添加一些Hue燈泡。下面是一個示例定義:

Color Bedroom_Hue "Bedroom Hue" <hue> (Bedroom) {hue="1"}
·Color指定咱們在這個項目上擁有什麼樣的控制權。RGB色調燈泡是「Color」,由於咱們對它們有全綵色的控制。其餘的燈可能只是一個開關。
·其次是項目的代號:我選擇bedroom_hue,隨便什麼均可以,不過你要記住後來製做sitemap時。代號不能有空格。
·引號之間的是標籤。在這種狀況下很簡單,可是對於好比溫度或某個值,你須要添加一些特殊的代碼,告訴它如何顯示該值或使用什麼樣的轉換。標籤是爲了接口,它能夠有空格。
·角括號之間的是圖標的名稱。你會在openHAB分享的webapps/images中找到全部可用的圖標。實際上,整個系列的色調圖標表明不一樣的亮度或開/關。只是指定基本圖標的名稱–若是這是個切換項,openHAB會自動尋找/關閉圖標。這是可選的。
·在圓括號中,咱們告訴它是哪組的一部分,在這種狀況下大多隻是臥室組。
·最後,最重要的是,咱們將該項與任何須要的變量進行適當的綁定。在這種狀況下,Hue燈泡綁定的數字是1。你能夠經過打開官方色調應用程序找到這個數字而後看看燈光標籤。每一個燈泡都有一個獨特的數字。

這裏增長了四個燈泡,這是完整的home.items:

Group Bedroom
Group Office
Group Kai
Group Living_Room
Group Cinema
Group Secret
Group Lights
/* Lights */
Color Bedroom_Hue "Bedroom Hue" <hue> (Bedroom,Lights) {hue="1"}
Color Office_Hue "Office Hue" <hue> (Office, Lights) {hue="2"}
Color Secret_Hue "Secret Hue" <hue> (Secret, Lights) {hue="3"}
Color Kai_Hue "Kai's Hue" <hue> (Kai, Lights) {hue="4"}

/ * Lights * /文本只是一個評論,它沒有任何功能,除了幫助咱們掃描該文件。如今咱們擁有了添加的設備。但打開http://raspberrypi.local:8080/?sitemap=home 是一個空白的界面,由於咱們尚未在Sitemap建立界面元素呢。讓咱們如今開始。

用來描述的代碼是不一樣的,但如今咱們建立一個新的「框架」,並添加一些組控件以及一些圖標。

sitemap home label="My Home"
{
 Frame {
  Group item=Lights label="All lighting" icon="hue"
  Group item=Bedroom label="Bedroom" icon="bedroom"
  Group item=Office label="Office" icon="desk"
  }
 }

組別是一個用於快速測試的工具,現實中,你會想要更多的控制權來控制項是如何顯示的。如今,這就足夠了。保存並在瀏覽器加載你的家庭sitemap。你應該看到這個。

咱們已經把它們放在一個燈組裏,點擊All lighting看看。

注意,辦公室色調項顯示的是不一樣的圖標–由於辦公燈已經在這個時候開了,那麼OpenHAB就會智能地將圖標調整爲「on」的版本。不過,它並無反映的顏色,但若是你安裝了移動應用程序,就會反映當前的顏色。

若是你發現多出一些多餘的項,不用擔憂。要知道雖然你只能一次加載一個sitemap,可是會從全部的.item文件中將全部的項都顯示在一個頁面上。所以若是你已經離開了代碼項文件,可能會有一些額外的項也出如今你的組別中。建議備份代碼內容,並將它從文件夾中移出,以免重複錯誤。

使用my.openhab IFTTT遠程訪問

如今,你須要在同一個本地網絡訪問openHAB系統,但若是在你的Wi-Fi範圍以外你想控制你的設備並檢查傳感器?那咱們就須要設置遠程訪問–最簡單的方式就是用my.openhab Web服務,它繞過端口轉發和路由器配置。my.openhab服務也有一個IFTTT頻道,讓你進行遠程控制和自動化。

首先安裝binding。若是你不知道某個特定安裝包的確切名稱,能夠經過apt-cache尋找。

 

sudo apt-get install openhab-addon-io-myopenhab
sudo chown -hR openhab:openhab /usr/share/openhab

在my.openhab網站註冊以前,你須要建立一個密鑰,並找到你的UUID——惟一標識你的安裝。而後檢查下openHAB Home share -> webapps -> static,你應該能夠找一個包含了你惟一識別碼的UUID文件。因爲此時發現如今使用的樹莓派使用的是Java舊版本,沒有正確地建立祕密密鑰。

java -version

檢查一下你的Raspbian。若是不是1.7或更高版本,那麼你的版本並不能使用要趕忙更新。奇怪的是,最新版本的Raspbian安裝了Oracle Java 8,但並無設置爲默認。

sudo update-alternatives --config java

選擇顯示jdk-8-oracle,而後重啓openHAB。Oracle Java 8比默認的OpenJDK更快!

如今你須要在webapps/static文件夾中找到一個secret文件。打開secret和uuid,並準備複製粘貼。

如今去建立一個My.OpenHAB賬戶,使用這些內容,而後回來–你還須要先確認你的電子郵件。首先,咱們須要對myopenhab設置默認的persistence engine(咱們須要創建一些基本的東西能夠將咱們的數據「出口」到在線服務,並使IFTTT可見)。要作到這一點,打開openhab.cfg,找到變量persistence:default=而後改爲persistence:default=myopenhab。保存。

最後,在configurations/persistence 文件夾中建立一個新的文件命名爲myopenhab.persist,而後複製粘貼下面的內容。

Strategies {
    default = everyChange
}
Items {
    * : strategy = everyChange
}

你不須要如今理解這個,可是要記住「每次改變就保存每一項的狀態」。

前往openHAB通道(你須要驗證並容許它訪問你的myopenhab賬戶)鏈接IFTTT。還要注意,除非你的項至少有一次改變,不然IFTTT上的項目清單是不會出現的,因此若是沒有出現,你就切換一下開關,而後從新加載。

恭喜你,你如今能夠經過IFTTT 能夠訪問你的openHAB系統了!

經過REST來使用藍牙狀態傳感器

其餘的任何平臺上,有現成的藍牙綁定。可是,因爲Java文件須要從新編譯爲ARM架構,所以現成的藍牙綁定並不能在樹莓派上實現,必需要添加到binding,而後再重建binding。這很是複雜並且還不能實現。不過有一種更簡單的解決方案:調整以前的Python腳本,直接傳遞到OpenHAB RESTful接口。

RESTful接口意味着你可使用它的內置Web服務器與系統進行交互,僅僅經過調用URL和傳遞或獲取數據,你就能夠在本身的服務器上訪問這個網址,來看看一個簡單的例子:http://raspberrypi.local:8080/rest/items——輸出全部你定義的項目編碼列表。這很強大,由於它充分利用了openHAB的所有潛力,並且還容許你編寫自定義的接口,並且傳遞傳感器狀態不須要特定的binding。咱們使用這種來呈現一個特定的藍牙設備的存在。

首先添加一個新的開關項到你的home.items文件。咱們命名爲「jamesinoffice」,而後作一個它的開關,這不是一個簡單的開關觸點,這樣以便手機死機的時候能夠手動控制。

Switch JamesInOffice "James in Office" (Office)

注意,我沒有定義一個圖標或關聯特定的binding。這只是一個普通的開關。

接下來,插入一個兼容的USB藍牙適配器,並安裝一些能夠與其交互的基本工具。

sudo apt-get install bluez python-bluez python-pip
sudo pip install requests
hcitool dev

最後一個命令是顯示你的藍牙適配器。若是沒有列出,換另外一個適配器試試的。下一步就是要找到你的設備的藍牙地址。

wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py
python inquiry.py

確保你的手機打開了藍牙設置頁面(讓它進入配對/公共模式),很明顯藍牙被激活了。你須要找出列出的十六進制硬件地址。

在你的樹莓派用戶主目錄建立新的Python腳本而後把代碼粘貼進去。

下面有一些你須要編輯的,首先是你特定的設備地址:

result = bluetooth.lookup_name(&#039;78:7F:70:38:51:1B&#039;, timeout=5)

以及這條,將jamesinoffice換成你定義的開關代號。

r = requests.put("http://localhost:8080/rest/items/JamesInOffice/state",data=payload)

最後要告訴這個腳本在啓動的時候運行。

sudo nano /etc/rc.local

向下滾動至底部,在退出前添加下面這行:

python /home/pi/detect.py &

&符號的意思是「在後臺運行」。若是你將它添加到一個組中,單擊該組。它須要大約10秒的更新,不過若是你的手機能檢測到,你會看到默認的燈泡圖標打開或關閉。若是沒有看到這種狀況就檢查一下日誌,多是你使用了錯誤的項名稱。

OpenHAB手機App

雖然你可使用移動設備的Web界面,可是openHAB有iOS和Android 版本的原生應用程序,它們看起來要比默認的瀏覽器界面更漂亮。在設置中,輸入本地地址做爲內部的IP,別忘了還有端口號。可是若是你尚未註冊MyOpenHAB,你只能從你的本地Wi-Fi訪問你的系統。

相關文章
相關標籤/搜索