2019/03/27


最近這陣子, 萊恩大兵都泡在物聯網領域裡. 做了很多的嚐試, 學到不少的經驗. 有個好東西要介紹給大家~ Home Assistant.

在前兩篇文章中, 萊恩大兵介紹了 HA (Home Assistant) 的系統安裝與簡單上手, 並加裝了小米開關與設置條件式自動化. 請參考: 
- Home Assistant, (1) 系統安裝與簡單上手
Home Assistant, (2) 遙控小米開關與條件式自動化

在這篇文章中, 萊恩大兵要在 HA 加裝 InfluxDB 與 Grafana 套件, 來記錄小米開關與感測器的數據, 並能方便快速地產出數據圖表.


接下來進入主題.

[在 HA 安裝 InfluxDB 套件]


簡單介紹一下 InfluxDB: 
InfluxDB 是一個由 InfluxData 開發的開源時序型資料庫 (Open-Source Time Series Database). 它由Go寫成, 著力於高性能地查詢與存儲時序型數據. InfluxDB 被廣泛應用於存儲系統的監控數據, IoT行業的實時數據等場景. (本段文字擷取自維基百科

首先, 在 HA 的 ADD-ON STORE 分頁, 找到 InfluxDB. 


點按 InfluxDB, 進入到 InfluxDB 頁面.
詳細的功能說明, 可以點按 InfluxDB page 跳轉, 這邊就直接點按 INSTALL 做安裝. 


安裝完後, 若直接按 START 啟動, 會發生啟動失敗的狀況. 


這是因為 InfluxDB 預設開啟 SSL 功能, 卻沒有找到相對應的憑證和金鑰. 這邊萊恩大兵會把 SSL 關掉, 等以後有機會再來補充這部份的設定.


把 SSL 關掉, 需要把底下 Config 裡面的 "ssl" 改為 false , 再按 SAVE 儲存. 再按 START 啟動, 這次 InfluxDB 服務就會順利啟動了.



InfluxDB 服務啟動後, 按 OPEN WEB UI, 開啟 InfluxDB 的設定頁面.


[設定 InfluxDB]


登入 InfluxDB 的帳密同登入 HA 的帳密.



初次登入 InfluxDB, 需要建立資料庫與帳號. 
HA 有預設固定的資料庫名稱和帳號來連接 InfluxDB, 所以就依 HA 的要求來設定:

* 建立 home_assistant 資料庫

點按左邊皇冠的圖示, 切換到 InfluxDB Admin 分頁.


在 InfluxDB Admin 分頁,
選擇 "Databases", 並點按右邊的 "+ Create Database".
輸入 "home_assistant", 再按右邊綠色勾勾確認.

home_assistant 資料庫已建立完成. 

* 建立 InfluxDB 用戶帳號

在 InfluxDB Admin 分頁,
選擇 "Users", 並點按右邊的 "+ Create User".
輸入 User 為 "homeassistant", 密碼自訂, 再按右邊綠色勾勾確認.


homeassistant 用戶帳號建立後, 還需要將權限改為 "ALL", 再按 Apply 生效. 


至此才算完成 homeassistant 用戶帳號的建立.

* 在 HA 加入 InfluxDB 的接取設定.

打開 HA 的 configuration.yaml, 找個適當的位置, 填入 

influxdb:
  host: 127.0.0.1
  port: 8086
  username: homeassistant
  password: (your password)

等資訊並儲存.

再重新啟動 HA.

重啟 HA 之後, 小米開關與感測器的狀態與數據, 均會自動儲存在 InfluxDB 裡面了.

接下來就要靠 Grafana 來做數據圖表呈現了.


[在 HA 安裝 Grafana 套件]


簡單介紹一下 Grafana:
Grafana 是一套開源的監控及分析平台軟體, 可支援許多不同的資料來源為其一大特點, 從常用的 CloudWatch \ Elasticsearch \ Graphite \ influxDB 到 OpenStack 的 Gnocchi 或 Google Calendar 等, 範圍十分的廣泛, 管理者不會因為受限於不同的資料來源而必需使用不同的監控軟體. (本段文字擷取自 inwinSTACK)

首先, 在 HA 的 ADD-ON STORE 分頁, 找到 Grafana. 


點按 Grafana, 進入到 Grafana 頁面.
詳細的功能說明, 可以點按 Grafana page 跳轉, 這邊直接點按 INSTALL 做安裝.

安裝完後, 一樣是把底下 Config 裡面的 "ssl" 改為 false, 再按 SAVE 儲存後, 才去按 START 啟動.





Grafana 服務啟動後, 按 OPEN WEB UI, 開啟 Grafana 設定頁面.


[設定 Grafana]


初次登入 Grafana 的帳密是 admin/hassio. (參考說明頁)

首先, 需要建立數據資料的來源.

* 建立 Data Source (InfluxDB)

點按 "Add data source".


在 "Data Sources" 分頁, 選擇資料來源種類為 InfluxDB.

接下來需要填不少東西~
Name: Home Assistant (可隨意取名)
URL: http://(your-HA-ip):8086
Database: home_assistant (同在 InfluxDB 建立的資料庫名稱)
User: homeassistant (同在 InfluxDB 建立的用戶帳號)
Password: (your-influxDB-user-pwd) (同在 InfluxDB 建立的用戶帳號)

全部輸入後, 按最底下綠色按鈕 "Save & Test", 並確認有產生 "Data source is working" 的訊息後, 即可按 Back 離開.


建立好的 Data Source 會顯示在設定頁面上.

接下來, 萊恩大兵要撈出藍牙溫度計的數據資料, 並用折線圖呈現出來.

* 建立 Grafana 數據圖表


點按 "New dashboard".

Grafana 支援數種不同的數據圖表格式, 這邊萊恩大兵點選 "Graph" 來產出折線圖數據圖表.

點按 "Graph" 之後, Grafana 會產出一個空的圖表.
點按 "Panel Title" 叫出選單.
選擇 "Edit".


撈資料之前, 這邊先簡單對比關聯式資料庫與 InfluxDB 差異, 詳細請參考: InfluxDB compared to SQL databases.

常見的關聯式資料庫, 資料會整理成由直欄與橫列構成的表格.

表格的每一直欄儲存特定類型 (屬性) 的資料, 而每個欄位儲存某個屬性的實際數值.
表格中的每一橫列代表一個物件或是一組相關數據.
表格中的每一橫列可以用主鍵 (primary key) 加以區别.

下圖即為一個名稱叫做 foodships 的關聯式資料庫表格 (table).

同樣的資料集合, 在 InfluxDB 裡面, 是被整理成如下圖的結構:
Measurement (類同於關聯式資料庫的 table): foodship.
Tags (類同於關聯式資料庫的 index): park_id 與 planet.
每一筆時序記錄類似關聯式資料庫表格每一列.

接下來要設定資料來源與撈資料的條件.


Data Source: 選 "Home Assistant"


點按 FROM 旁邊的 "select measurement": 選 "°C".  
(InfluxDB 會把溫度相關的數據收在叫做 "°C" 的 measurement中.)

點按 WHERE 旁邊的 '+' 號.
自選單中, 點選 "entity_id".
再點按 '=' 旁邊的選單, 裡面只有一個項目, 即為藍牙溫度計的 entity_id.


點按 SELECT 旁邊的 "mean()", 再點按選單中的 "Remove", 把它移除.
再點按旁邊的 '+' 號, 選 "Selector" -> "last"


再把 GROUP BY 旁邊的 "fill (null)" 改成 "fill (none)".

到此, 原本空的圖表中, 即有產出一條的藍牙溫度計的折線了.

點按右上角的時鐘, 可以調整數據的區間.


最後, 將 dashboard 存檔.

這個 "藍牙溫度計" 的折線圖就會一直持續的更新數據與呈現出來.

今回就講到這邊, 下回來安裝 Mosquitto, 透過 MQTT 做更多的應用.


[萊恩大兵的其它文章]

自製大四軸

CC2540 Bluetooth Low Energy

OpenCV 學習路徑

小惡魔 無線溫度感測器



Next
This is the most recent post.
Previous
較舊的文章

0 意見:

張貼留言