今天先講到的內容主要涉及以下設備:
首先是一塊樹莓派開發板,這是整個智能家居的控制中心,所有的程序都將在這塊開發板上運行。當然,并不一定要求你買一塊樹莓派,因為文中涉及的所有軟件都可以在windows,Mac OS,以及Linux甚至群暉上運行。只是樓主是比較喜歡一件事情交給一個設備做,這樣某一個功能有問題修復起來也不會影響到其他功能的使用。樓主用的開發板是rasberry pi 3B。
包郵 原廠正品 樹莓派3代B型 raspberrypi 板載藍牙和WIFI e14版本
這是京東第三方的鏈接,馬家會便宜些。對了,不要忘了給你的樹莓派配張TF卡哦,16G的就足夠了。
然后是小米智能家居套裝:
這兒雖然說的是小米智能家居套裝,但實際上指的是綠米(aqara)的產品,除了圖中所示的這些外,還有溫濕度傳感器。墻壁插座、開關等。至于米家的其他產品,無論是空氣凈化器,還是智能插線板都是不支持的。說白了,其實domoticz支持的只是網關,所以連接在網關上的設備都可以被支持,其他的產品目前只有yeelink的燈開放了協議可以單獨添加。以下為目前能連入domoticz的所有配件(注:網關需為2代以上,即帶網絡收音機的網關)
而博聯的設備樓主只有SPMINI插座,但是R2網關,A1檢測儀也是能被支持的,不過講真,如果你手上沒有博聯設備的話,建議不要去買了,各方面都遠不如米家,特別是安全性,在下文會講到,只要知道博聯設備的地址,就可以輕松的發送指令來對其進行操作,完全沒有任何的用戶驗證措施。
樹莓派系統的安裝
這是最基礎的一部工作,雖然網上有很多版本的樹莓派系統,但是為了以后出問題可以非常方便的找到各種解決方案,所以這兒推薦大家使用官方的Raspbian系統:
下載地址:戳
建議使用迅雷下載,下載完了解壓,會得到一個201X-XX-XX-raspbian-jessie.img文件,我們放著待用。
然后下載SDFormatter用來格式化TF卡。下載完安裝了就直接把TF卡格式化一遍,這個步驟就不用說了。
下載地址:戳
接著我們還需要一個工具Etcher,將img文件燒錄到tf卡中。
下載地址:戳
按步驟:1.選擇剛才下載的raspbian-jessie.img。2.選擇TF卡驅動器。3.FLASH,靜待完成就好。
等Etcher把系統鏡像燒錄至TF卡后,我們就可以把TF插到樹莓派里,然后啟動樹莓派,這里特別提醒,樹莓派3b請使用5V 2A以上的電源適配器,并且電源線要盡可能的短,越短越好。
在做第一步設置的時候,我們還需要一臺HDMI的顯示器或電視,鼠標和鍵盤都與樹莓派連接好再開機。
很快就能進到圖形桌面了,樓主這兒展示用的是VNC遠程,所以顯示比例啥的都有些問題,大家不用介意。這兒要做的第一步是連接上無線網。
點右上角的WIFI圖標,選擇SSID,然后輸入無線密碼就成。不過這兒需要額外多做一步,就是把IP地址設為手動靜態,畢竟我們是做服務器用的,動態地址每次斷鏈之后都可能變化:
具體做法是右鍵單擊右上角的WIFI圖標選擇第一項Wireless&.....
然后interface右邊選擇wlan0,把Automatically....的框勾掉,在下面填上你家里局域網的IP地址和網關,DNS服務器等。然后點擊apply后關閉。然后打開瀏覽器看看能不能正常上網:
OK,沒有問題,下一步就是打開SSH,畢竟老接著鼠標鍵盤顯示器用樹莓派也不是很方便是不。
點擊樹莓派圖標,選擇Preferences>Raspberry Pi Configuration。
然后選擇interfaces選項卡,將SSH Enabled,點擊OK。然后就可以把樹莓派關閉,拔下鼠標鍵盤顯示器,把它挪到任意一個WIFI信號良好的地方(注意,一定要保證其WIFI信號良好)。
然后我們下載putty,因為官網被墻,為了不給大家造成困擾,所以請大家自行百度下載就是了。記得選大的下載站以免造成不必要的損失。下載完成后打開putty,界面如下:
在host name里填上剛才設置的樹莓派的IP,Connection type選擇SSH。然后OPEN。當然,為了下次連接方便,你可以在Saved Sessions里填上一個名稱,點擊save,以后就可以直接雙擊打開。
輸入用戶名pi,默認密碼是rasberry(輸入密碼時光標不會變化,輸完回車就行)
看到pi@raspberrypi:~ $的提示行就算成功了,下面我們要做的第一步就是把默認密碼改掉。命令如下:
sudo passwd pi
ctrl+C復制灰框里面的命令,到putty窗口右鍵就可以粘貼。
它會讓你輸入兩次新密碼,兩次一致的話密碼就修改成功了。
接著我們要設置的是樹莓派的時間和時區。首先要做的是打開NTP,讓樹莓派時間與網絡時間同步:
sudo timedatectl set-ntp true
接著是設置時區:
sudo dpkg-reconfigure tzdata
會出現下面的界面:
在中國的話我們就選擇Asia,然后回車,然后選擇Chongqing就好了。此時終端會回到命令行模式。同時在命令行上方我們可以看到Local time is now:……,大家核對下是不是和自己的時間一致,一致的話樹莓派的時間就算設置完成,為了讓我們等會安裝更順暢,接著我們設置鏡像源,命令如下:
sudo nano /etc/apt/sources.list
在開頭添加:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
然后在原有的鏡像源前方加上#,如下圖:
然后按Ctrl+X退出(記得選Y保存)。然后運行下命令sudo apt-get update,更新下鏡像源。
sudo apt-get update
至此,我們的樹莓派系統已經完全和設置完成。下面我們就要說domoticz的安裝和設置了。
domoticz的安裝和設置
關于智能家居系統,開源的軟件有很多,例如Home Assitant,本站值友也有寫過原創:
樹莓派打造家庭中樞教程(完整版)追加修改(2017-05-0123:38:35):實話講,不知道按著教程實操的人有多少,但是我還是盡量完善、更新這份教程。首先,Hassbian系統自帶了Home-assistant,因此請使用Hassbian系統的值友跳過3.1,直接前往3.1.1。其次,3.1.1步驟如果執行失敗,可以手動安裝。
甚至如果你全部使用小米設備的話,有更簡單的:
【再更新】小米網關接入Homekit完整教程,聲控家中設備! - 小米社區官方論壇
但是為啥樓主沒有選擇這兩個而是使用了domoticz,先說通過homebridge-aqara來實現小米網關設備聯入homekit,這個做法無疑是最簡單的,但是其僅僅支持aqara設備,并且不支持網關燈以及小米無線開關(其實是homekit不支持小米無線開關的多段模式)。并且不能跨平臺使用,也就是這個僅限于ios10以上的設備才能使用,局限性太大,所以樓主放棄了。
而Home Assitant+Homebridge能夠做到跨平臺使用,也能做到控制網關燈,但是依然不支持小米無線開關(待確認),不過更重要的是,他設備添加配置都需要添加修改yaml文件。使用起來還是不便。而domoticz主要是看了這篇原創:
開源IoT平臺domoticz與百搭wifi模塊esp8266 篇一:車庫卷門遙控基友家想搞智能家居,經我極力鼓吹,先讓我用他的車庫門試手,實現效果如下視頻。隨手一拍,請看官海涵。操控略有延遲,對付車庫門這種實時性要求不高的電器來說足矣。當然,能遙控僅僅是智能的第一步。根據反饋回中央控制器的各種傳感器數據從而進行自動化調節才是智能家居的努力目標?,F有的帶中央控制器的物聯網解決方案
blindlight|贊72評論92收藏521查看詳情
雖然原文作者寫的不是很詳細,但是總體上能夠領會到domoticz的強大,以及對arduino和ESP8266的支持。最關鍵的是,domoticz配置好之后添加設備啥的幾乎不用再去命令行模式下修改任何文件。可以全部在web界面完成。當然,缺點是……UI太丑……。哈哈,樓主費了好大勁才扳回來點……,好了閑話不扯,下面說domoticz的安裝:
domoticz的安裝非常方便,就一行命令:
sudo curl -L install.domoticz.com | sudo bash
然后就等他自動無腦安裝了,安裝完之后,因為安裝的是release版的,是不包含對小米網關支持的,所以我們在這要對其升級下,將其升級到beta版,具體命令如下:
cd domoticz
./updatebeta
注意,這是兩行命令,依次復制。
此時domoticz已經安裝完成并已經自己啟動了,這時候我們打開瀏覽器,輸入http://樹莓派的IP地址:8080 ,例如樓主的就是http://192.168.10.24:8080。就能打開domoticz了。我們暫時不用管它,繼續安裝其他需要的組件。
安裝Nodejs:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
安裝avahi
sudo apt-get install libavahi-compat-libdnssd-dev
安裝其他
apt-get install mosquitto
sudo apt-get install python-dev
sudo easy_install -U distribute
sudo apt-get install python-pip
pip install paho-mqtt
然后我們把mosquitto設為隨機啟動
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
好了,之后就讓我們給domoticz添加小米網關吧。
小米網關的添加
在添加小米網關之前,我們首先要在路由器上做些設置,因為domoticz和下面的子設備都是通過局域網來通訊的,所以需要各個設備的IP地址,例如樹莓派的IP地址我們可以在樹莓派上手動設置為靜態的,但是無論是小米網關,還是博聯插座,其DHCP地址都不是固定的,所以我們就要在路由器內將這些設備的IP地址設為靜態:
不同的路由器設置不同,但大都在DHCP相關設置內,當然,也不排除某些路由器沒有相關設置(例如電信光貓):
然后我們需要一臺安卓手機來獲取小米網關的通訊密鑰:
這一段因為寫文的時候自己也沒有安卓手機了,所以大家跳轉到以下文章查看一、獲取網關基本信息這一章節:
【再更新】小米網關接入Homekit完整教程,聲控家中設備! - 小米社區官方論壇
這兒需要提醒一下的是,打開局域網通訊協議后,一定要點確定。還有就是網關信息那一頁,請全部截屏或拍照記錄,這對之后的設置非常有幫助:
下面我們就去domoticz添加小米網關了,在瀏覽器中輸入domoticz的地址,我這依然拿http://192.168.10.24:8080舉例,點擊,設置>硬件
然后自己設置一個名稱,類型選擇Xiaomi Gateway(若沒有請跳轉前文,將domoticz升級至beta版),心跳時間可以隨意設置,樓主設的是10分鐘,如果10分鐘內收不到小米網關發來的任何信息,就會重啟小米網關的連接。然后遠端地址填寫小米網關的IP地址,端口為9898,密碼為剛才獲取的小米網關通信協議密碼,最后點擊增加。完成之后點擊設置>設備,此時你就應該看到滿屏的設備在你眼前了(若沒有,請點擊所有設備):
因為樓主已經做好了設置,所以名稱都已經改成了中文,而大家看到的可能都是設備的默認名稱。這時候你就需要剛才樓主讓你們截圖拍照保存的那張圖片,通過domoticz里面ID的后四位來修改對應設備的名稱。
一開始打開的時候所有的箭頭都是綠色(未使用),單擊以后就會變成藍色已使用。這里要注意的是,只有將設備標記為已使用,我們才能在導航欄的菜單里看到他們并進行控制。
添加完成后的效果,這兒還要注意的是,小米溫濕度傳感器會有三個設備號。分別是溫濕度,溫度,濕度。我們要分別使用溫度和濕度,因為復合數據是不被homekit支持的,也無法在domoticz里設置復合傳感器的聯動。
小米網關的添加就說到這,下面說博聯的(其他設置大家自行研究,純傻瓜式操作)。
博聯SPMINI的添加
之前的很多原創中,大家紛紛使用RM Bridge來將博聯設備連入其他智能家居平臺,但是使用RM Bridge必須需要一臺安卓設備做中轉,非常不便。不過有一篇原創提到了不需要安卓設備中轉的方法:
#原創新人# 群暉安裝broadlink-http-rest代替RMBridge看了本站兩位大神的帖子后學會了如何用Siri來控制普通家電,實現簡單的家居智能化。兩位大神的帖子鏈接解放你的雙手—讓普通家電也能被Siri召喚解放你的雙手—讓普通家電也能被Siri召喚自iOS10發布后,iphoner可以使用其中增加...
其中還有http-rest來操控RM2的紅外學習,不過樓主手上沒有RM2,所以這次我們就只說其中提到的python-broadlink的安裝。
其實使用wget python-broadlink可以非常方便的進行python-broadlink的安裝,但是樓主是下載下來裝的,所以就按已成功的方法說吧:
首先前往https://github.com/mjg59/python-broadlink
點擊綠色的Clone or Download,選擇download zip,將python-broadlink的源代碼下載下來,然后上傳至樹莓派。之前很多文章里都提到建立SMB服務來往樹莓派里寫文件,其實完全沒有必要。我們只需要下載一個filezilla通過SSH上傳文件就行,下載地址:http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.25.2/FileZilla_3.25.2_win32.zip/download
然后在站點管理器里新建一個SFTP站點:
用戶名和密碼都是樹莓派的密碼。然后連接。然后右側就是服務器目錄了。我是將剛才解壓好的文件直接放在了/home/pi/domoticz/scripts/python目錄下面。以下也按此舉例:
上傳完了之后我們關閉filezilla,然后繼續打開putty,登錄樹莓派,執行以下命令:
cd /home/pi/domoticz/scripts/python
此時我們進入了剛才上傳python-broadlink的目錄。執行ls命令:

確認有setup.py的腳本。然后我們執行:
python setup.py (忘了要不要在前面加sudo了,如果執行錯誤的話大家再加一個試試)
然后等到腳本自動執行完成,沒有出現任何error就可以了。
然后我們就需要編寫對SPMINI進行控制的腳本,此段腳本出處為(https://www.domoticz.cn/forum/viewtopic.php?f=25&t=14&p=25&hilit=broadlink#p25):
這里我們先新建一個叫spmini的腳本:
nano spmini.py
將以下腳本的IP地址和MAC地址修改后copy進去:
#!/usr/bin/python
import broadlink
import sys
device_ip="插座的IP地址"
device_port=80
device_mac="插座的MAC地址全部大寫"
device_type="broadlink.sp2"
action = str(sys.argv[1])
device = broadlink.sp2(host=(device_ip,device_port), mac=bytearray.fromhex(device_mac))
device.auth()
#device.host
if action == "on":
device.set_power(True)
elif action == "off":
device.set_power(False)
elif action == "status":
print "on" if device.check_power() else "off"
應該是下圖的樣子,大家檢查下沒有問題的話就ctrl+X選擇Y保存。

然后我們為這個腳本添加可執行權限:
chmod 777 spmin.py
然后我們試著執行一下腳本看看腳本有沒有問題:
python spmini.py on
python spmini.py off
同時觀察對應的博聯插座有沒有執行相應的開關操作:

如果腳本執行如上圖沒有任何錯誤的話,那我們就可以去domoticz里添加開關了。如果你有多個插座的話,只需要建立多個.py文件,將其中的IP和MAC地址更改成相應的插座地址就行。
我們打開domoticz,現在設置>硬件里添加一個虛擬硬件,名字隨便取,我取的是博聯開關,類型是Dummy,心跳時間為無效,點擊增加:

然后我們到開關頁面,選擇手動添加 燈/開關

設備名稱填你自己想要的,然后設為使用就好。然后我們編輯剛才添加的開關:

開觸發里填上:
script:///home/pi/domoticz/scripts/python/spmini.py on
關觸發里填上:
script:///home/pi/domoticz/scripts/python/spmini.py off
然后保存,頁面會跳回開關主頁面,這時我們點擊該開關的圖標,進行開關測試。若成功則算完成,要是失敗,則前往設置>日志查看具體的出錯信息。然后評論提交,看看樓主能不能解決。
這樣,我們就把小米和博聯的設備都添加到了domoticz。當然,如果我每次操作設備還需要打開瀏覽器,輸入domoticz的網址再進行操作的話,豈不是和之前開各種APP來操作沒什么區別,我要的不就是解放雙手,只動嘴不動手么。所以下面我們來說說如何使用SIRI來操控domoticz的設備。
HOMEBRIDGE的安裝
在安裝homebridge之前我們先做些準備工作,打開domoticz,選擇房間區域設置:


然后單擊新增房間區域,取個名字,點擊ADD,然后選擇剛才新建的區域,在下面的設備中將想在homekit中使用的設備一一添加到剛才新建的房間區域。

例如樓主的homekit使用的區域idx是2,包含以下設備:

然后我們putty到樹莓派,安裝相關環境
sudo apt-get install python
sudo apt-get install libavahi-compat-libdnssd-dev
sudo apt-get install g++
然后安裝homebridge
sudo npm install -g --unsafe-perm homebridge
再安裝homebridge-edomotic
sudo npm install -g homebridge-edomoticz
然后我們進入homebridge目錄,設置config.json文件:
cd ~/.homebridge/
nano config.json
修改roomid為剛才在domoticz內建立的房間區域號后ctrl+x保存。
{
"bridge": {
"name": "Homebridge",
"username": "CC:21:3E:E4:DE:33",
"port": 51826,
"pin": "031-45-154"
},
"description": "Configuration file for (e)xtended Domoticz platform.",
"platforms": [
{
"platform": "eDomoticz",
"name": "eDomoticz",
"server": "127.0.0.1",
"port": "8080",
"ssl": 0,
"roomid": ,
"mqtt": 1
}
],
"accessories": []
}
如下圖:

然后命令行輸入homebridge,看看是不是可以運行。如果沒有任何的報錯信息,那么久打開你的iphone,家庭,添加家庭,輸入屏幕上的PIN CODE,看看domoticz里的設備是不是全部出現在了手機上。如果都有,那么恭喜你,我們下面只要將homebridge設置為開機啟動就完事大吉了。這里先ctrl+C退出homebridge,然后大家請參照下文的相關步驟進行操作:
當Homekit遇到小米智能家居從高中的時候就想打造一個智能臥室,如今5年已過才剛剛開始自從Homekit發布,就一直關注,因為一直是個果粉,但是信仰充值實在傷不起,homekit的配件實在是太貴。小米剛出的路由器。在插件里面有homekit的插件,但是價格太高,而且不實用,后期沒法自己加配件,只能用小米的配件。前幾天從威鋒論壇看

Ctrl+F “將homebridge設置成隨系統啟動”開始往下看。
嗯,最后的命令打完,樹莓派就會重啟,等待2分鐘,打開手機上的家庭,如果所有傳感器都工作正常的話,就可以愉快的使用siri了。


本文暫且到這,因為自己對樹莓派和linux完全是小白,所以文中步驟可能有些瑕疵,大家若有發現請在評論指出。謝謝。