WiFi常見干擾

WiFi用無線訊號構築了網路的最後一哩路。

要能檢測現場的WiFi,第一個就是先用肉眼觀察實體的干擾,這類的干擾通常會固定出現於現場。第二個則是使用儀器與軟體去看,這部分需要一些培養,熟能生巧。通常要使用到儀器與軟體的干擾就不是那麼固定,會有時好時壞的狀況,一旦狀況好轉,多半也意味干擾源不見了。

以下為「固定干擾」、「不固定干擾」清單。

固定干擾
嚴重:距離、水泥牆、關上的厚大門、維修孔上天花板(周圍有金屬管道)
普:輕隔間、維修孔上天花板
低:玻璃

不固定干擾
嚴重:同頻道的無線熱點、走動、有線端海量封包、同名SSID且收訊強度相當但兩者不是統一控制系統
普:網路環境不穩、對外頻寬被榨乾
低:AP訊號強度降弱

特別說明的干擾

  • 距離:距離遠會讓訊號不好,室內型一般來說無阻礙十二公尺為建議值。因為距離而訊號不好只有新增無線設備才能解決。
  • 走動:走動會讓訊號強度波動變大,不只是自身的走動,周圍人走動也會。
  • 同頻道的無線熱點:在網路吃到飽普及的時代,開熱點是很常見的,但手機、筆電的選頻道是比較難控制的,它們可能會直接頻道相撞。這樣的干擾源會很靠近Client。
  • 同名SSID且收訊強度相當但兩者不是統一控制系統:在同名的條件下,Client會自動選擇最強的訊號做連結,不過訊號強度用軟體跟儀器看其實是波動的,於是一時東強一時西強,連上的無線設備也波動,但因為不同控制系統,切換連上無線設備時可能會斷斷斷。

固定干擾雖然未必能解決,但可以被掌握。不固定干擾是一個無法管控的不定時炸彈。瞭解干擾也能釐清是到底是無線設備本身的問題還是環境問題,不然一般人很容易都往設備去怪罪。

不過,就算受到干擾,對於無線網路會因為品質不好而重傳變慢,訊號太差會不穩斷線。但「變慢不代表無法上網,品質不佳並非是無線設備故障」,這是很重要的概念。

沒有概念的,會一股腦把問題都怪罪在無線設備上,這就是一般人的直覺。

這裡要提一個概念「Health」,這是Aruba用於衡量client傳輸品質的數字,簡單來說就是「傳輸成功率」,100%就是嘗試數跟成功數相同,而50%就是嘗試數是成功數的兩倍,換句話說,要傳一個封包,需要傳兩次才能成功。

在訊號良好之處,嚴重干擾甚至頻道對撞,對於無線傳輸影響不大。如果health已經沒有百分百,變得六十五十甚至四十時,干擾影響會相當明顯,讓本來不夠好的無線表現雪上加霜,直接死傷慘重。

因此高密度部署能改善干擾,或是使用效能更好的機型,新機型不論抗干擾跟無線訊號強度都有明顯長進。

個人使用的儀器與軟體

筆電:inssider、CommViewForWiFi + 外接網卡

Android手機,WiFi分析儀
※Android10以後需要在開發人員選項中解鎖WiFi掃描的限制。(個人有遇到這個問題

延伸閱讀

智能家庭中樞實評-檢驗ap傳輸效能,實測抗干擾能

无线干扰的20种错误说法: 纠正错误说法以实现稳定高效
的无线网络

Aruba IAP 在apboot模式下轉換成Thin AP

條件:Aruba IAP、AP Console線、Aruba Controller環境

原理:Aruba AP會存兩個OS版本,位置分別是0和1。開機是由變數「os_partition」去決定要讀取0或1位置的OS。所以,只要讓AP從Controller下載AP的OS,並指定開這位置的OS,就能變相讓IAP在ap_boot模式就切換到Thin AP。

操作:

  1. 進入apboot模式:接上Console,開啟連線,再接上電源。AP開機後,待提示出現,按Enter以進入apboot模式。
  2. osinfo:輸入該指令,查看目前os的位置0與1的版本資訊。
  3. bootfile:輸入「printenv」,會有一行bootfile=ipqxxxx.ari(※依AP系列有差異,5xx系列為ipq807x.ari),此為AP從Controller更新OS下載的檔案名稱。
  4. set serverip <Controller IP>:指定AP要從Controller更新OS。
  5. set master <Controller IP>:指定AP要去向Controller報到。
  6. upgrade os <bootfile>:AP更新OS,如果是AP 5xx系列,指令為「upgrade os ipq807x.ari」
  7. osinfo:查看剛剛更新的OS在位置0或1,若更新OS時未指定位置,則為0。
  8. set os_partition 0:指定AP從OS位置0載入OS並開機。
  9. save:儲存變數
  10. boot:開機

指令模板:

#檢查os位置0和1的版本,留意是否皆為IAP版本
osinfo 
#取得bootfile的名稱
printenv
#變數設定
setenv os_partition 0
setenv master <Controller IP>
setenv serverip <Controller IP>
save
# 取得os,AP使用DHCP取得IP
upgrade os <bootfile>
boot

額外補充:

  1. 如果要轉換成Remote AP,在apboot模式設定變數時,加入「set remote_ap 1」。

結語:

Aruba AP 3xx系列的IAP不會自動轉換,所以一般流程都是等AP拿到IP後開完機,然後輸入帳密,從WebUI去轉換成由控制器管理的Campus AP。

Aruba AP 5xx系列的UAP會自動轉換,個人對於5xx系列的轉換機制與時間還不太熟。基本流程也可以照著3xx系列的IAP操作。

不過,除了是早期建置,中後期的追加數目都不會太多,中後期還會面臨到增加的網路安全措施,白話就是AP報到的環境就可能不如手冊上的理想。

因此,為了避免節外生枝,也減少作業時間,在中後期追加時,建議用本文的方式,用Console線去做AP設定,可以讓整體報到流程縮減成兩次開機:第一次照本文設定,然後AP取得Controller上的設定後重開機。第二次開機完,即正常運作。

Aruba Airwave 8.2.7 升級到 8.2.1x 版

這是我第一次升級Airwave,這篇會把需要的步驟給寫詳細。

升級最重要的目的是「把設定一路帶到最新的版本」,因為Airwave無法直接匯入設定,所以只能慢慢升。升級很花時間,不過只要把設定帶到最新版的話,可以Backup帶回去,然後自己起Airwave再Restore設定,然後在自家一路升到最新,再Backup。最後讓客戶起一台最新版的Airwave,再把最新的Backup以及既有License灌回去。

參考資料:Upgrade airwave from 8.2.7 to 8.2.10Upgrading Airwave to 8.2.7

準備:

  1. 待升級Airwave
  2. 備份現有Airwave的License
  3. Airwave 8.2.10.1 install ova
  4. 新安裝的Airwave 8.2.10.1
  5. SFTP(WinSCP)
  6. Airwave 8.2.9.0 upgrade package
  7. Airwave 8.2.10.1 upgrade package
  8. Airwave 8.2.1x upgrade package

檔案很大,下載需要時間,升級過程也很漫長。

概念是
8.2.7 => 8.2.9
8.2.9 = > 8.2.10
8.2.10(CentOS6) = > 8.2.10 (CentOS7)
8.2.10 (CentOS7) = > 8.2.1x

8.2.9到8.2.10有OS升級,所以無法讓8.2.7直接升到8.2.1x,得先升到8.2.8或8.2.9才能升到8.2.10。而8.2.7最高只有支援到AP 3xx系列,但現在已經不少使用AP 5xx系列,所以一定得升級Airwave才能。

特別留意!每次升級都要做備份!也要注意資源是否足夠,以免資源不足讓升級發生狀況。(個人在筆電上練習,就直接記憶體用滿當兩次。)

首先要以Airwave的升級方法為主,先登入Airwave, 進入選單,8.2.9版本在Advanced 、8.2.10版本在Users,進入,然後添加AAA File Transfer User,這樣才能用WinSCP以SFTP的方式把檔案傳入或取出Airwave。

而8.2.9版本前後上傳檔案的地方有落差:
8.2.9前:「/user」、8.2.9後:「/var/ampcli/user」
如果升級到8.2.9版之後,沒有找到Folder,請按下重新整理。

步驟:

  1. !用Web GUI登入,備份現有License資訊!
  2. 登入待升級Airwave(8.2.7)
  3. 新增AAA File Transfer User。
  4. 備份Airwave(8.2.7)
  5. 用SFTP,取出Airwave(8.2.7)備份檔
  6. 用SFTP,傳入Airwave(8.2.9.0) Upgrade Package
  7. 升級到Airwave(8.2.9.0)
  8. 備份Airwave(8.2.9.0)
  9. 用SFTP,取出Airwave(8.2.9.0)備份檔。
  10. 用SFTP,傳入Airwave(8.2.10.1) Upgrade Package
  11. 升級到Airwave(8.2.10.1, CentOS6)
  12. 備份Airwave(8.2.10.1, CentOS6)
  13. 用SFTP,取出Airwave(8.2.10.1, CentOS6)備份檔
  14. !關閉舊Airwave!用ova install安裝新的Airwave(8.2.10.1, CentOS7)※注意記憶體資源
  15. Airwave(8.2.10.1, CentOS7)的IP、Gateway、DNS、SSL等皆比照舊Airwave設定
  16. 新增AAA File Transfer User。
  17. 用SFTP,傳入Airwave(8.2.10.1, CentOS6)備份檔
  18. Restore Airwave(8.2.10.1, CentOS6)備份檔
  19. Restart System
  20. 備份Airwave(8.2.10.1, CentOS7)
  21. 用SFTP,取出Airwave(8.2.10.1, CentOS7)備份檔
  22. 用SFTP,傳入Airwave(8.2.1x) Upgrade Package
  23. 升級到Airwave(8.2.1x)
  24. 備份Airwave(8.2.1x)
  25. 用SFTP,取出Airwave(8.2.1x)備份檔
  26. 「可選」刪除舊Airwave。

步驟繁瑣反覆,過程等待時間很長,也蠻可能出意外,所以備份檔要勤備份。

Homeassitant HACS使用客製庫(Custom repositories)安裝流程

有些客製庫是在HACS內搜尋不到,這時就需要手動安裝。

如 Line_Notify:https://github.com/maxmacstn/HA-Line-Notify

點選 Integrations
點選右上方三點,選擇 Custom repositories

輸入 客庫製的URL,並且選取分類。

以 Line Notify為例,就直接把github的網址貼上,並且選取 Integration。

按下 ADD 就完成了。

添加之後需要重新啟用HA伺服器

Homeassistant用Line Notify發布訊息

需要HACS

參考資料: Dcard 教學 打造你的智慧家庭吧! HA 串接 Line 推播通知

參考的那篇已經寫得詳盡,但這篇會重新寫過,並且附上好用的python幫助取得Access Token。

要讓HA可以透過Line Notify發訊息,主要可以分成三步驟:

  1. 申請Line Notify服務
  2. 在 HACS 安裝 Line_Notify
  3. 修改Configuration.yaml

申請Line Notify服務

進入 Line Notify 的網頁,按右上方登入,然後右上方點擊<使用者名稱>,展開選單並點選「管理登錄服務」。

按下登錄服務

服務名稱會變成在 Line Notify 傳送訊息的前綴,傳出的訊息會變成:「JN溫馨提醒:」

同意並前往下一步,跳轉到確認頁面後,按登錄。

前往信箱收信,會看到一封主旨為「LINE Notify註冊用網址通知」,點選信中的「LINE Notify註冊用網址」,就能完成服務登錄。

點擊信中網址後,彈出網頁會顯示電子郵件認證完成,之後在前往服務一覽。

在管理登錄服務一頁,可以看到剛剛新增的服務,然後點進去。

接下來把「Client ID」、「Client Secret」跟「Redirect_URL」準備好,這裡有個我做的線上python:GetLineNotifyToken,可以幫助你快速進行。
(這線上Python執行起來比起參考文章說用postman需要安裝等等的操作起來簡單許多。

按綠色三角形執行
稍等片刻,就會跳出 ClientID:

請用「左鍵連點兩下」選取 Client ID 跟 Client Secret等,避免選到不必要且看不見的字符,然後用 Ctrl + Shift + V 貼上到 Console 視窗。

會自動生成連結,請點擊連結。

可能會需要登入LINE帳號,如果已經登錄了,會看到下方的樣子,選擇一對一的聊天室,然後點選同意並連動。

點選同意並連動
會收到通知

接著頁面會跳轉到 Redirect_URL,從上方網址取出 Code。

如圖例,Code為「FDYeqCLk0WSSQd0DjsydOL」。
※每個 Code 只能產生一次的 Access Token

如果有順利取得,會出現Access Token,用「左鍵連點兩下」選取,用「滑鼠右鍵叫出選單並按複製」。

如圖例,Access Token為「zey…….v7I」。

在 HACS 安裝 Line_Notify

Line_Notify:https://github.com/maxmacstn/HA-Line-Notify

在HACS使用客製庫(Custom repositories)輸入上方網址,然後安裝。
HACS使用客製庫(Custom repositories)安裝流程

然後重新啟動HA伺服器。

修改Configuration.yaml

在Configuration.yaml加入下方設定

notify:
  - platform: notify_line
    name: jn_is_so_sweet # id
    access_token: <Access Token>

保存,然後重啟HA伺服器。

接著從開發工具,找到 notify.jn_is_so_sweet ,輸入 Message,按下 執行服務。

LINE跳出通知,收到剛剛從HA發出的訊息。

Message該值可以使用 template ,傳遞實體的訊息。

Line Notify也可傳遞圖片,像是把圖片傳到HA上面,或是擷取carama的圖片,再透過Line Notify發送。

Homeassitant的Text-to-Speech(TTS)服務

這篇要介紹一些HA上面的TTS服務,如果搭配可以投放(Cast)的音箱,就能做到客製化的語音提醒。

內建:Google Translate Text-to-Speech

要如何使用?直接在 configuration.yaml 中加入下方官方範例的設定。HA伺服器重啟之後,就能在服務中找到一個 tts.google_say,就能輸入語言與投放的設定,按下執行服務就能將文字轉語音播放出來。

# Example configuration.yaml entry for Google Translate TTS service
tts:
  - platform: google_translate
    cache: true
    cache_dir: /tmp/tts
    time_memory: 300
    language: 'zh-tw'  # Default Language
    base_url: http://<Your HA IP address>:8123
    service_name: google_say
media_player.jn_room 是 google mini nest 2

然後發現語音會以外國腔唸出來,這裡要轉成中文腔調,就需要做 Language 的設定。勾選並設定為「zh-CN」,就會是熟悉的Google小姐語音。

zh-CN這值是從 google翻譯 抓出來,繁體中文的語音是 zh-TW。

注意網址的部分,左邊是sl=zh-CN,右邊是tl=zh-TW
上方圖片顯示的清單是HA實際能用的Language

更改預設語言,之後就不需要每次執行服務都指定 Language 為 zh-tw。

# Example configuration.yaml entry for Google Translate TTS service
tts:
  - platform: google_translate
    cache: true
    cache_dir: /tmp/tts
    time_memory: 300
    language: 'zh-tw'  # Default Language
    base_url: http://<Your HA IP address>:8123
    service_name: google_say

HACS:ReversoTTS

從HACS安裝該整合,重啟之後,在 configuration.yaml 加入下方設定,就能使用其中文TTS。

tts:
  - platform: reversotts
    language: 'Lulu-Mandarin-Chinese' #有哪些語言可從官方連結看到清單
    pitch: "100"
    bitrate: "320k"  
    service_name: reversotts_say

由於 Language 已經在 configuration.yaml 中設定好了,在 服務 這裡就不需要再設定 Language 也能講中文。

The language to use. Supported languages are in this table , please use only the name from LangCode column:

LangCode Voice Gender Language
Leila-Arabic Leila22k Female Arabic
Mehdi-Arabic Mehdi22k Male Arabic
Nizar-Arabic Nizar22k Male Arabic
Salma-Arabic Salma22k Female Arabic
Lisa-Australian-English Lisa22k Female Australian English
Tyler-Australian-English Tyler22k Male Australian English
Jeroen-Belgian-Dutch Jeroen22k Male Belgian Dutch
Sofie-Belgian-Dutch Sofie22k Female Belgian Dutch
Zoe-Belgian-Dutch Zoe22k Female Belgian Dutch
Alice-BE-Belgian-French Alice-BE22k Female Belgian French
Anais-BE-Belgian-French Anais-BE22k Female Belgian French
Antoine-BE-Belgian-French Antoine-BE22k Male Belgian French
Bruno-BE-Belgian-French Bruno-BE22k Male Belgian French
Claire-BE-Belgian-French Claire-BE22k Female Belgian French
Julie-BE-Belgian-French Julie-BE22k Female Belgian French
Justine-Belgian-French Justine22k Female Belgian French
Manon-BE-Belgian-French Manon-BE22k Female Belgian French
Margaux-BE-Belgian-French Margaux-BE22k Female Belgian French
Marcia-Brazilian Marcia22k Female Brazilian
Graham-British Graham22k Male British
Lucy-British Lucy22k Female British
Peter-British Peter22k Male British
QueenElizabeth-British QueenElizabeth22k Female British
Rachel-British Rachel22k Female British
Louise-Canadian-French Louise22k Female Canadian French
Laia-Catalan Laia22k Female Catalan
Eliska-Czech Eliska22k Female Czech
Mette-Danish Mette22k Female Danish
Rasmus-Danish Rasmus22k Male Danish
Daan-Dutch Daan22k Male Dutch
Femke-Dutch Femke22k Female Dutch
Jasmijn-Dutch Jasmijn22k Female Dutch
Max-Dutch Max22k Male Dutch
Samuel-Finland-Swedish Samuel22k Male Finland Swedish
Sanna-Finnish Sanna22k Female Finnish
Alice-French Alice22k Female French
Anais-French Anais22k Female French
Antoine-French Antoine22k Male French
Bruno-French Bruno22k Male French
Claire-French Claire22k Female French
Julie-French Julie22k Female French
Manon-French Manon22k Female French
Margaux-French Margaux22k Female French
Andreas-German Andreas22k Male German
Claudia-German Claudia22k Female German
Julia-German Julia22k Female German
Klaus-German Klaus22k Male German
Sarah-German Sarah22k Female German
Kal-Gothenburg-Swedish Kal22k Male Gothenburg Swedish
Dimitris-Greek Dimitris22k Male Greek
he-IL-Asaf-Hebrew he-IL-Asaf Male Hebrew
Deepa-Indian-English Deepa22k Female Indian English
Chiara-Italian Chiara22k Female Italian
Fabiana-Italian Fabiana22k Female Italian
Vittorio-Italian Vittorio22k Male Italian
Sakura-Japanese Sakura22k Female Japanese
Minji-Korean Minji22k Female Korean
Lulu-Mandarin-Chinese Lulu22k Female Mandarin Chinese
Bente-Norwegian Bente22k Female Norwegian
Kari-Norwegian Kari22k Female Norwegian
Olav-Norwegian Olav22k Male Norwegian
Ania-Polish Ania22k Female Polish
Monika-Polish Monika22k Female Polish
Celia-Portuguese Celia22k Female Portuguese
ro-RO-Andrei-Romanian ro-RO-Andrei Male Romanian
Alyona-Russian Alyona22k Female Russian
Mia-Scanian Mia22k Female Scanian
Antonio-Spanish Antonio22k Male Spanish
Ines-Spanish Ines22k Female Spanish
Maria-Spanish Maria22k Female Spanish
Elin-Swedish Elin22k Female Swedish
Emil-Swedish Emil22k Male Swedish
Emma-Swedish Emma22k Female Swedish
Erik-Swedish Erik22k Male Swedish
Ipek-Turkish Ipek22k Female Turkish
Heather-US-English Heather22k Female US English
Karen-US-English Karen22k Female US English
Kenny-US-English Kenny22k Male US English
Laura-US-English Laura22k Female US English
Micah-US-English Micah22k Male US English
Nelly-US-English Nelly22k Female US English
Rod-US-English Rod22k Male US English
Ryan-US-English Ryan22k Male US English
Saul-US-English Saul22k Male US English
Sharon-US-English Sharon22k Female US English
Tracy-US-English Tracy22k Female US English
Will-US-English Will22k Male US English
Rodrigo-US-Spanish Rodrigo22k Male US Spanish
Rosa-US-Spanish Rosa22k Female US Spanish
以上是 ReversoTTS 可用的語言表

如何使用 Pixel 5 天文縮時綠影

聽說有這項功能,但身為擁有 Pixel 5 的使用者,卻無法正確地使用它。

上網搜尋只有一些新聞稿,但寫得不清不楚,這邊就簡單地教學如何使用。

首先,打開相機,切換到「夜視」模式。

在低光源的情境下,放到穩定的位置,幾秒之後就會自動切換成天文模式。

按下拍攝,等待時間超過兩分半鐘的天文攝影,就會自動產生天文縮時綠影。
(※如果沒有超過2.5分鐘,就不會產生天文縮時綠影!)

如果夜拍光源量多到天文攝影無法超過兩分半鐘,請搭配 減光鏡 使用。

相機內建說明

如果上述條件齊,相機版本也支援,但仍舊無法看到天文縮時錄影的影片,以下是確認天文縮時綠影的選項有沒有打開。

打開相機 > 點上方 V 字展開選單 > 選齒輪(設定)
點選進階
確定「啟用天文攝影縮時錄影模式」是啟用的

Aruba Controller SSID 走特定外線上網

有時候會有臨時的網路需求,會配給Controller一條外線,起一個SSID,讓貴賓連上SSID就能透過外線上網,並且新外線與內網彼此獨立出來。

以下為 ArubaOS 8.8 版的操作

為了要達到這點,就需要達到以下幾點。

  1. Controller Public IP
  2. 外線Gateway IP
  3. Controller 外線VLAN
  4. Controller Guest VLAN
  5. Controller Guest VLAN DHCP Server
  6. Controller Guest VLAN NAT Enable(NAT Inside)
  7. Controller Guest Next-hop list
  8. Controller Policy-Based Routing
  9. Controller Guest VLAN ACL 套 Policy-based Route
  10. 新增SSID套上Guest VLAN

步驟1、步驟2都是詢問客戶得知。

步驟3:取得外線VLAN,在 [MD] > Configuration > Interfaces > Ports 把接外線的Port其Access VLAN改成外線VLAN。

步驟4: 詢問客戶得知,或是自行規劃 VLAN 要設定的ID。

步驟5:DHCP Server的設定也是詢問客戶得知,或是自行規劃。DNS Server要留意得從外部查詢DNS,像是 168.95.1.1 或是 8.8.8.8,因為新線不通內網,所以要小心不要用到內部的DNS Server。

最簡便的做法

步驟6:Configuration > Interfaces > VLANs > VLAN IDs > [Guest VLAN] > IPv4 > Other Options > NAT inside,勾選。

步驟7:Configuration > Services > WAN > NextHop Configuration ※因版本不同可能位置有異,若找不到請上對應的WebHelp,去找該版本所在的位置。

Priority要從1開始

步驟8: Configuration > Services > WAN > NextHop Configuration

步驟9:Configuration > Interfaces > VLANs > VLAN IDs > [Guest VLAN] > IPv4 > Other Options > ACL,選取剛剛新增的 Policy-based Routing。

步驟10:這時可以新增SSID,VLAN選取Guest VLAN,至於其他的詳細設定像是認證有無及方式等,請詢問客戶規劃。

記得Pending Changes要送出

追蹤設備是否在家(以nmap追蹤IP)

追蹤設備是否在家,如果人總是攜帶此設備,像是手機,就可以想像成人是否在家。

一旦狀態改變,從偵測不到變成偵測到,就是一個回家的情境。

有一些偵測法,如藍牙掃描、人體感應器、IP掃描或是門窗感應器等等,都是可以當成回家的指標,而藍牙與IP掃描是可以區分是誰的設備,能做到對應不同人回家的指令。

在 Homeassistant ,有一個專門用來追蹤設備內建整合:Device Tracker。而這次要用的nmap也在其中,而這個內建整合也可使用藍牙掃描。

回到正題,IP掃描是一個區域網路內的掃描,而於WiFI訊號比藍牙更強更穩定,所以一旦在家,就不容易失聯而造成誤判情形。

設備的IP需要是固定的

要固定設備IP有兩種方式,一種是DHCP Server去用MAC綁定IP,第二種是設備設定靜態IP。如果使用DHCP Server,建議把MAC隨機化關掉,以免5GHz跟2.4GHz有不同的Name,到時產生兩組隨機MAC,然後就被當成兩種裝置。

以下要簡單的指令,使用nmap去做到追蹤個人設備是否在家。

/config/configuration.yaml

device_tracker: !include device_tracker.yaml #新增此行

/config/device_tracker.yaml #第一次需要手動新增該檔案

- platform: nmap_tracker
  hosts: [DeviceIPaddress]    
  interval_seconds: 15 # seconds
  consider_home: 210 # seconds
  home_interval: 1 # minutes

/config/known_devices.yaml #第一次需要手動新增該檔案

[DeviceName]:
  name: [DeviceName]
  mac: [DeviceMACaddress]
  track: true

nmap是一個網路檢測工具,預設指令是會去檢測該IP位置最常用的100個Port是否開放,如果有一個Port開放,就會判定在家。可以想像成一旦設備離家,這是nmap去測試設備IP那100個Port就會全數不通。

以上設定完後,重新啟動HA伺服器,就能看到一個實體名稱為 device_tracker.[DeviceName] 的設備,狀態只有兩種:「home」跟「not_home」。如果是回家,狀態就會從 not_home 變成 home 。

以下是「回家」自動化的觸發條件寫法:

platform: state
entity_id: device_tracker.[DeviceName]
to: home
from: not_home

不過這樣的寫法會有一點狀況,因為無線訊號可以傳出家門,所以,你在家門外時,還沒打開門,就已經連入家中Wi-Fi,然後nmap就已經偵測到了。

對於進門才能觸發的事件,像是用語音表達進門歡迎,就會特別吃重時機。總得要打開門,人進來才能播放語音吧。

這情境可以使用 timer ,打門時啟動一個,人回家時啟動一個,一旦兩個同時開啟,舊式人回家又打門的情境。

讓HA連接台灣米家雲端

需要HACS!

這是最簡單的方式讓HA可以快速取得家中所有的小米智慧家庭設備的資訊。

在HACS安裝「Xiaomi Miot Auto」,安裝完成後要求重啟HA,重啟它。

安裝完後使用 Add-ons 的 File editor 進入到下方檔案中。

/config/custom_components/xiaomi_miot/config_flow.py

會找到一段

CLOUD_SERVERS = {
    'cn': 'China',
    'de': 'Europe',
    'i2': 'India',
    'ru': 'Russia',
    'sg': 'Singapore',
    'us': 'United States',
}

新增一行「’tw’: ‘Taiwan’,」,變成如下。

CLOUD_SERVERS = {
    'cn': 'China',
    'de': 'Europe',
    'i2': 'India',
    'ru': 'Russia',
    'sg': 'Singapore',
    'tw': 'Taiwan',
    'us': 'United States',
}

記得 Ctrl+S 儲存!

重啟HA伺服器!

回到 設定 > 整合 > 新增整合 > Xiaomi Miot Auto,點擊 Xiaomi Miot Auto 。

選擇cloud,然後可以看到 Server location 下拉選單有 Taiwan,選取它。

資料填好後按設 傳送 ,等一會,就能看到台灣米家的設備被加HA進來。

Homeassistant(樹莓派)指南

本指南皆在環境 Raspberry Pi 4b + Home Assistant Operating System(HAOS) 下進行。

以下是我覺得需要優先完成的

  1. 定時備份到Google雲端硬碟:三不五時壞,唯有經常備份,才不用重來!很重要!
  2. 設定Home Assistant Community Store(HACS)

以下為選配:

如何查詢設備在臺灣所支援的wifi頻道

考資料

由於部分apple產品對於5GHz的頻道並非全部支援,因此可能發生連不上的議題。

不同地區有不同的能使用的wifi頻道,射頻產品也需經過認證准許使用,通過使用准許並不代表能支援該地區全部的wifi頻道,因此同一張網卡,即便能支援36~48頻道,在台灣也准許36~48頻道,但該網卡在美國是可以使用36~48,而在台灣卻無法使用!

到底該設備在臺灣能支援甚麼頻道?請上NCC查詢。

以下以apple產品為例,這個頁面是apple通過NCC的相關資訊。

MacBook Pro (13 吋,M1 晶片,2020 年) 為例, NCC 型式認證號碼:CCAI20LP2710T6

接著來到NCC, 左側選單 > 資料查詢 > 型式認證資訊查詢。輸入相關資料後按查詢。

然後會搜尋到一筆紀錄,點選檢視。

往下滑,在備註或是審驗合格證明圖檔裡面會有通過的工作頻率。

從維基百科:WLAN信道列表,把頻率轉換成頻道。就能查出「MacBook Pro (13 吋,M1 晶片,2020 年) 在臺灣可以用的wifi頻道。

頻道(Channel) 工作頻率 是否能使用
1-11 2412~2472
36~48 5180~5240
52~64 5260~5320
100~144 5500~5720
149~165 5745~5825
Aruba Radio 5GHz Channels

經過對照之後,MacBook Pro (13 吋,M1 晶片,2020 年)全部頻道都支援,無須調整。

支援部分的頻道的產品

以MacBook (Retina, 12 英吋, 2015年初), 型式認證號碼: CCAI15LP0760T3

可以發現MacBook( 2015 )從工作頻率從5280開始,在此頻率前的頻道36~52就無法使用。

無法使用,有兩種情況:一種是無法看到,一種是可看到但無法順利連上。