來源 | HaaS技術社群不看這幾篇好文,就别說自己了解物聯網
1. home assistant簡介
1.1 概述

home assistant是一個基于python的家庭智能化平台,可運作于本地伺服器,或者樹莓派上。利用該平台,可以統一控制家庭中所有的智能裝置。
home assistant內建了小米、博聯等公司的通信協定,可以直接發現并控制這些公司的智能裝置,也可以通過mqtt協定連接配接其它裝置。同時可以通過插件擴充與蘋果的Apple HomeKit互動,使用Siri語音控制其它智能裝置。
同時他也內建了一些第三方智能語音平台,友善使用語音控制家中的智能裝置。home assistant同時還內建了一些如天氣、匯率、線上音樂等雲端服務。
他的控制頁面可以通過網頁顯示,也可以通過手機APP(支援安卓及iOS)展示。
1.2 GitHub資料統計
目前,github上搜尋iot,star數排名第二的項目是
home-assistant/core,目前star數42.2k,fork數13.9k,貢獻者2429個,釋出release版本752個,最新版本2021.4.6(2021/5/4日資料)。
1.3 示例
下圖是
https://demo.home-assistant.io/在電腦浏覽器展示的其中一個示例:
上圖展示了下列内容:
- 展示了燈的開關狀态,并可以通過頁面按鈕控制燈的開關。
- 展示了門鈴目前的狀态及統計資料。
- 展示了目前溫度,并可控制空調的溫度及開關。
- 顯示了電視目前的視訊的内容,視訊輸出接口,音量,觀看時長等資料。
- 房間的全景圖,顯示每個房間溫度、是否有人、燈是否亮
- 客廳音響正在播放的音樂,并可以切換音樂。
- 上下班
- 安全警戒,入侵告警
手機APP顯示的頁面如下圖:
2. home assistant系統組成
2.1 home assistant核心
負責啟動應用,管理狀态,處理事件,接入服務,元件間功能互動等通用的功能。
2.2 home assistant元件
元件負責對外互動,包括與智能裝置互動,與雲服務互動、與浏覽器互動等,目前home assistant支援多達上百種裝置互動協定、雲服務等,詳見
https://github.com/home-assistant/core/tree/dev/homeassistant/components。
下面是一些接入的常用及主要功能元件:
- accuweather
ACCU天氣服務
- Amazon Alexa
亞馬遜Alexa智能語音服務,用于語音控制智能裝置。
- ecobee
加拿大智能溫控公司Ecobee的産品發現及接入。
- ESPHome
樂鑫的智能家居系統,支援ESP8266/ESP32及常用傳感器,支援接入home assistant、HomeKit等。
- Google Assistant
谷歌智能助理,用于移動裝置及智能家居裝置。
- Google Cast
谷歌投屏服務,類似于蘋果的AirPlay。
- IKEA TRADFRI
宜家智能照明系統。
- MQTT
MQTT是物聯網通用的通信協定,通過該協定,可以連接配接所有自定義裝置。
- Philips Hue
飛利浦個人智能照明系統。
- Plex Media Server
Plex多媒體伺服器,可以在手機、平闆、電視、電腦上通過該服務播放NAS上的多媒體檔案。
- SmartThings
SmartThings智能家居公司,目前已被三星收購。
- Sonos
家庭智能音箱系統。
- Z-Wave
智能家居無線組網标準。
- Zigbee
短距離低功耗無線通信技術。
- KNX
住宅及樓宇控制标準。
- xiaomi/xiaomi_aqara/xiaomi_miio/xiaomi_tv
小米路由器、電鍋、掃地機、電視、網關等裝置發現及接入
對于home assistant還沒有支援的協定或者廠家裝置,可以自己增加元件的方式增加對應的支援。
2.3 配置檔案configuration.yaml
在該配置檔案種配置接入裝置的資訊、網絡協定、雲服務、安全授權及其它定制項,檔案為yaml格式,遵循yaml文法,可以包含子yaml配置檔案。
詳細規則見
https://www.home-assistant.io/docs/configuration/yaml/下面是一個開關的配置示例:
- switch:
- - platform: mqtt
- unique_id: haas600_switch
- name: "HaaS600 Switch"
- state_topic: "/publish/amp-hello/home/bedroom/switch1"
- command_topic: "/publish/amp-hello/home/bedroom/switch1/set"
- availability:
- - topic: "/publish/amp-hello/home/bedroom/switch1/available"
- payload_on: "ON"
- payload_off: "OFF"
- state_on: "ON"
- state_off: "OFF"
- optimistic: false
- qos: 0
- retain: true
2.4 其它配套
對于大量的非品牌,非标準協定智能裝置,home assistant可以通過MQTT協定與之互動。
home assistant自帶了MQTT伺服器功能,也可以使用自己安裝的MQTT伺服器,或者使用第三方MQTT伺服器,比如阿裡雲的MQTT服務。
- HomeBridge
HomeBridge用于支援與蘋果的HomeKit對接,以支援使用siri語音控制智能裝置。
備注:最新的home assistant已經預設支援HomeKit,不再需要該元件。HomeBridge本身可以單獨使用,以對接HomeKit。
- NodeRed
是IBM推出的開源物聯網項目,可以通過WEB流式程式設計來快速連接配接物聯網裝置與雲端服務。
可以使用NodeRed對home assistant管理的裝置的業務邏輯進行更加複雜的配置,以實作更加進階、更加個性化的控制,包括多裝置間關聯,與雲端服務互動等。
3. home assistant安裝及運作簡介
3.1 home assistant安裝
基于python3.5以上版本pip安裝homeassistant,指令如下:
- pip install homeassistant
- pip install sqlalchemy
安裝homeassistant過程中,可能會出現解除安裝ruame. yaml失敗的提示,可以在python的site_packages目錄,手工删除ruame. yaml
- 啟動homeassistant,指令如下:
hass --open-ui
這一步時間比較長(5到10分鐘左右),需要耐心等待。中途windows系統上會彈出防火牆政策,需要選擇允許通路網絡。執行完後,會自動打開浏覽器,出現如下頁面:
在上一步出現的網頁上,輸入自定義的姓名,使用者名,密碼等,建立賬戶。然後依次點選下一步,完成配置。
配置完成後的界面如下:
3.2 MQTT安裝與配置
區域網路中,可以使用内置的MQTT服務,或者自己安裝MQTT伺服器,以實作更加進階的MQTT功能。如果要連接配接公網上的裝置,則需要使用公網的MQTT服務,比如阿裡雲IOT的MQTT服務。
使用内置MQTT,直接參考home assistant幫助使用。
自己安裝MQTT伺服器,推薦安裝EclipseMosquitto,下載下傳位址
https://mosquitto.org/download/使用阿裡雲的MQTT服務,可以參考阿裡雲幫助文檔
https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11174283.6.614.4e611668aOJWtg3.3 HomeBridge安裝與配置
HomeBridge的項目位址
https://github.com/homebridge/homebridge,安裝參考章節Installation章節介紹。
要配置home assistant使用,還需要安裝一個homebridge-homeassistant插件,位址在
https://github.com/home-assistant/homebridge-homeassistant說明:最新的home assistant已經内置支援HomeKit,不需要安裝HomeBridge。
4. 總結
本文主要帶讀者了解了下github上熱門的物聯網項目 - home assistant。并動手動手安裝後檢視了他的效果。
有興趣的讀者可以在自己的裝置上将此項目跑起來試試。
更多精品好文
如何從零設計一種物聯網組網協定 如何用幾行Python代碼在物聯網裝置上實作語音AI自動識别? 物聯網需要什麼樣的UI互動方式? 如何分析物聯網裝置問題,看懂這篇文章就夠了 透過ALSA這層迷霧剖析AliOS Things音頻架構設計 漫談農業物聯網與網際網路技術的結合 傳感器,物聯網時代的智能硬體數字化入口 如何快速搭建一個像“天貓精靈”的智能語音助手? 物聯網之IP Camera解決方案簡介 從語音互動曆史淺看它是否會是物聯網行業的一個爆點? 帶你走進多媒體世界:視訊檔案是怎麼播放出來的 物聯網雲端一體AI方案的探索 物聯網裝置連接配接的下一個引爆點:4G Cat.1 物聯網教育現狀和前景 一文看懂藍牙在物聯網中的應用場景 下一個智能硬體爆品是什麼? 華為、阿裡、小米都在用的全屋智能技術 為什麼物聯網領域使用Rust的項目越來越多? 物聯網中也能使用區塊鍊技術?面向IoT的區塊鍊基礎架構IoTeX 開源硬體的前世今生 物聯網碎片化的一些思考 邊緣計算在物聯網行業的應用 物聯網太難 ? 不妨試試用Python來開發 5G會給物聯網行業帶來哪些變化? 必須要了解的物聯網安全知識 ARMv9能給ARM帶來新一輪騰飛嗎?(安全篇) ARMv9能給ARM帶來新一輪騰飛嗎?(人工智能篇) 國産物聯網作業系統的出路在哪裡? RISC-V架構能否引領物聯網時代? 物聯網到底為什麼這麼火? 誰才是物聯網連接配接技術中的王者? 物聯網平台大量出現能否将行業帶入爆發式發展 腳本語言适合物聯網開發嗎 從“嵌入式”到“物聯網”的四大轉變 物聯網發展新趨勢</div>