Home Assistant的Kiosk Mode

目錄
⦿ Kiosk Mode是什麼?
⦿ 加入新使用者
⦿ 新增助手
⦿ 新增主面板
⦿ Frontend 新增Mushroom Chips Card
⦿ Frontend 新增Kiosk Mode
⦿ 按鈕加入 選單開關
⦿ 按鈕加入 Kiosk Mode開關
⦿ 面板加入程式碼
⦿ 頁面操作邏輯

Kiosk Mode 是什麼?

如果我們把 Kiosk Mode 的 Kiosk 拿去 Google,會搜尋到超商的互動式資訊服務站的圖片,像是 7–11 的 ibon、全家的 FamiPort。

Kiosk 是原波斯(今伊朗)的一種古老建築,幾根柱子加上屋頂相當簡易的結構,像我們今天的涼亭。Kiosk 就是亭子,也指路邊賣報章雜誌的小攤,去到今天就是人們說的資訊服務站多媒體事務機

圖片取自維基百科

互動式資訊服務站或我們熟知 POS 機裡的底層系統,也許是安卓,也許是 Windows,無論如何,使用者並不能直接操作它,比方說,使用者無法更改登入權限,只能做相當有限的操作,或說機器提供給你的服務。

所以,Kiosk Mode 意謂系統在管理者、使用者之間,切換使用權限的一種模式,讓使用者不能更改內部設定,如隱藏工具列,只能使用桌面提供給你的應用程式。

在維基百科裡有這麼一段:

The system replaces the look and feel of the system it runs over, allowing for customization and limited offering of ad-hoc services.

系統改變介面外觀,來提供客製化的特定服務,這便是 Kiosk Mode 的目的。

圖片取自維基百科

接下來,讓我們看看在 Home Assistant 裡,要如何加入 Kiosk Mode 吧!

繼續閱讀|回目錄

加入新使用者

首先,在 Home Assistant 裡,我們從 設定 => 人員 => 切換頁籤使用者,右下角新增使用者

接著,設定顯示名稱,注意這邊的顯示名稱並非你登入的 ID,如果不特別與登入 ID 區別的話,我們設定一樣就好了。

新增一個 test 的使用者,密碼就用 12345678 來做測試,測試完後就刪除,而下面的開關都不要打開,這時候就會看到使用者多了一個 test。

親愛的用戶是顯示名稱非你登入的ID

前面文章有提到,剛裝完的 Home Assistant 側邊列項目非常少,事實上,新加入的使用者 test,他的側邊列目會比擁有者 charlescheng 更少,幾乎是只能看而不能操作,那麼,我們更進一步想讓這個使用者的側邊列關起來,就必須要借助 Kiosk Mode 了。

看到這邊也許大家會有疑惑,點進左邊使用者欄位就可以更改了,不是嗎?

這個隱藏開關其實只是把它縮小,並且下次登入時側邊列還是會彈出來。但我們最終希望如下的結果:

左邊是擁有者權限,右邊是使用者權限,看出有什麼不同了嗎?

接下來,我們還需要四個前置作業,分別是新增助手新增主面板Mushroom Chips CardKiosk Mode

繼續閱讀|回目錄

新增助手

前面左圖 𝌞 ↕ 就是加上了側邊列開關,下面我們先新增助手

設定 => 裝置與服務 => 切換頁籤助手,點選右下角新增助手,選擇開關,因為我們希望將 Kiosk Mode 設定為開關,可讓擁有者選擇開或關。

於是就多了一個助手。

新增主面板

此外,為了避免更改程式碼時造成不可挽回的結果,像 Kiosk Mode 開啟後無法關閉,這時你什麼都不能操作,所以在測試面板或模式時,會新增一個主面板來更動它。

我們從 設定 => 主面板 => 右下角新增主面板,給它一個標題圖示,URL 讓 HA 自己產生就可以了。

於是側邊列就會多一個項目,即是剛新增的面板。

繼續閱讀|回目錄

Frontend 新增 Mushroom Chips Card

因為要調整面板,我們先從 HACS => Frontend => 搜尋列鍵入 “ Mushroom ”,找到這個廣受 HA 玩家歡迎的面板卡,下載它後再 reload。

如果沒找到,就點選右下角的 EXPLORE & DOWNLOAD REPOSITORIES

面板卡,從Frontend下載

Frontend 新增 Kiosk Mode

接著,我們還需在 Frontend 裡下載 Kiosk Mode

呼——!前置作業終於完成了,下面開始實作。

繼續閱讀|回目錄

按鈕加入選單開關

接下來是重頭戲了!我們到剛才新增的面板,右上角三個點選擇編輯主面板,右下角新增面板,在搜尋列鍵入 “ chip ” 找到 Mushroom Chips Card。

刪除第一個實體,從新增 chip 裡找到選單,新增這個按鈕。

當我們按下這個選單按鈕,就會出現如下的結果:

選單按鈕其實就是前面說的側邊列的開關

按鈕加入 Kiosk Mode開關

我們編輯剛剛的 Mushroom Chips Card,再加入一個 chip,選擇動作,點選鉛筆編輯細項,設定想要的圖示與顏色,選擇執行服務,再找到開關框 input_boolean.toogle。

就會出現如下:

接著選擇實體,從中找到我們剛剛新增的助手 Kiosk Mode:

意思是按下這個按鈕,打開 Kiosk Mode 或關閉 Kiosk Mode。

繼續閱讀|回目錄

面板加入程式碼

最後在面板編輯模式下,還需從右上角三個點選擇文字模式編輯器,最上方貼上下面的程式碼:

kiosk_mode:
non_admin_settings:
kiosk: true
ignore_entity_settings: false (應該非必要)
entity_settings:
- entity:
input_boolean.kiosk_mode: 'on'
hide_header: true
- entity:
input_boolean.kiosk_mode: 'off'
hide_header: false

按下右邊的儲存,再按下左邊的 ❌,就完成了!

我們先來解釋程式碼,kiosk_mode 下的 non_admin_settings 表示非擁有者登入時,其中的 kiosk: true 表示 Kiosk Mode 打開,這時候的使用者沒有側邊列,也沒有 header,如下:

但這不是我們要的,我們希望使用者有 header 可以用,不要只有單一面板可以操作。

我們希望的是使用者有 header,但沒有側邊列,所以 kiosk_mode 下的 entity_settings 讓這個開關去觸發 hide_header。當它打開時,header 就隱藏,當它關閉時,header 就出現。

所以在擁有者權限下,打開跟關閉會呈現如下:

頁面操作邏輯

最後的最後,我們再來說明一下頁面操作邏輯。

在輸入程式碼的時候,Home Assistant 與許多 IDE 一樣有自動完成,若你必須要自己動手寫的話,可像下面這樣操作:

這個實體就是剛才我們新增的助手,新增助手後,我們又要讓 UI 能夠成為這個助手的開關,所以在前面會這樣操作,接著除了安裝 Kiosk Mode 這個 Frontend,面板的程式碼還需對上 Kiosk Mode 的開啟或關閉。

在導入 Kiosk Mode 後,使用者的側邊列與 header 都隱藏起來,但我們希望側邊列隱藏即可,所以在 Kiosk Mode 常駐下,擁有者需要有打開或關閉 header 的按鈕,所以在選單按鈕旁,我們增加另一個開關,去操作助手

另外,如果你不小心設定錯誤,側邊列、header 都隱藏起來而無法操作時,在頁面網址後方加上 ?disable_km,能讓你暫時關閉 Kiosk Mode 直到下次登入時,如下:

左邊設定錯誤但無法再更改程式碼,於是像右方這樣操作。

最終,我們希望使用者在 Kiosk Mode 常駐下,HA 的側邊列隱藏,而 header 完好如初

文章完畢,感謝您的閱讀。

繼續閱讀|回目錄

以下 Reference:

--

--

Chun-Li 春麗
彼得潘的 Swift iOS / Flutter App 開發教室

Do not go gentle into that good night, Old age should burn and rave at close of day; Rage, rage, against the dying of the light.