這裡聊聊掃地機的 IOT 開發

2022-09-07 06:03:12

以下內容為本人的著作,如需要轉載,請宣告原文連結 微信公眾號「englyf」https://www.cnblogs.com/englyf/p/16663833.html


消費者使用掃地機通常的方式是通過手機APP去遙控它,比如啟動清掃,劃定清掃區域,設定預約清掃任務,還有啟動回充等等。這些功能的實現,都依賴於掃地機的網路接入。業內把這個網路稱呼為物聯網,目前的接入方式其實都依賴現有的網路基礎設施,比如在公網搭建各種 IOT 雲服務,方便於終端客戶的掃地機裝置和手機APP互聯互通。

為了實現互聯互通,需要和 IOT 雲服務對接,這其中包含了兩部分的開發任務。其一是,機器端的接入開發任務,一般是用無線 wifi 技術連線家庭用的路由器進而存取公網的 IOT 雲服務。其二是,設定雲平臺後臺相關產品的設定。其三是,手機APP端的接入開發任務,通過雲服務商的授權API,APP存取和更新機器上傳到雲伺服器的資料快取,進而和掃地機的使用者互動。

說說機器端的聯網開發


掃地機既然要存取 IOT 雲服務,就必須具有聯網的能力,比如通過上面提到的無線 wifi 技術。那麼掃地機使用這個無線 wifi 技術是不是就像電腦用網路卡上網一樣呢?答案是,肯定的。掃地機屬於嵌入式裝置,使用無線 wifi 技術一般通過在主機板上外接 wifi 模組來實現。

由於嵌入式裝置的使用場景有著很大的差異,比如裝置除了需要存取專門的 IOT 雲服務,有的方案商還會提供一些特殊的內建服務進而需要裝置能存取其它的網路服務(比如讓裝置貼心地播放天氣預報,那麼就需要能存取天氣預報服務以獲取天氣資料。除了這個小功能,你的想象力還惦記著什麼呢?歡迎留言!)。

另外,如果生產商對嵌入式裝置的成本很敏感,那麼在硬體投入上還是省著點吧,畢竟功能的多少還是以硬體為基礎的。除了必要的雲服務(與APP互聯互通的 IOT 雲服務)之外,其它功能也不作硬性要求了,那麼聯網的硬體是不是可以作出一些犧牲,比如專門面向特定的 IOT 雲服務,甚至於只接入某個雲服務商。

基於目前的使用需求,wifi 模組,可以分為普通 wifi 模組和嵌入式 wifi 模組。

普通 wifi 模組的特點是不內建 wifi 協定和驅動,一般通過 USB 或者 SDIO 等介面和裝置主控晶片連線。裝置的主控晶片需要支援 wifi 協定棧和驅動,效能要求比較高,通常選擇通用性 CPU,因而業務開發更靈活,方便於拓展豐富的應用領域。這種設定,你的想象力可大可小,千萬別辜負了。

嵌入式 wifi 模組的特點就是內建了 WiFi 協定和驅動,一般通過專用協定串列埠等介面和裝置主控晶片連線。裝置的主控晶片,效能要求不高,通常選擇 MCU,便於降成本,但是業務場景相對受限。這種設定下,你的裝置能存取什麼服務,完全看 wifi 模組提供商的設定。

並不是所有 IOT 雲服務商都支援上面的兩種 wifi 模組,只有部分 IOT 雲服務商會同時支援。理論上所有的 IOT 雲服務商都支援普通的 wifi 模組連線,而提供了嵌入式 wifi 模組的服務商,已知的有塗鴉和華為 HI-LINK 等。

說說雲平臺的後臺設定


開發掃地機裝置端的聯網任務,除了硬體上的投入之外,還需要做一些和雲平臺後臺有關的事情。

目前國內主流的 IOT 雲服務商有塗鴉智慧雲、阿里生活物聯網、亞馬遜 AWS、華為 HI-LINK 等。這其中接入門檻最低的要數塗鴉智慧雲吧,因為它不僅提供了廉價的雲服務,還有現成的公共APP,所以終端機器運營商如果考慮成本的因素還可以免去開發自己APP,就算初次開發APP也能使用雲服務商提供的 SDK(開發套件)快速推出成品APP。

要宣告的是每個雲服務商的具體開發流程和有關術語會有差異,可以翻照具體的雲平臺提供的開發檔案指引。

這裡介紹一下通用的流程:

1. 選擇 IOT 雲服務平臺

可以針對自己的需求選擇最合適的雲服務供應商,如果你自己是有掃地機裝置開發團隊的,但是APP開發的投入想省掉,那就選塗鴉吧,上文已介紹原因。如果你沒有掃地機裝置開發團隊,掃地機的開發任務是交給方案商去做的話,建議選擇阿里生活物聯網,這個平臺的網際網路基因大家都是知道的,開發偵錯會非常方便(作為曾經在某個方案商呆過,這是真心話。題外話:有沒有人喜歡玩真心話大冒險?)。除了開發的因素,還要考慮成本價格,一般收費的原則是按照單個接入裝置一次性收費。

是的,還有很多平臺可以選擇,各位老闆自己喜歡吧。

2. 註冊開發者賬號

登入 IOT 雲服務平臺的網站,用公司的名義註冊個主體賬號。如果你需要授權該賬號的許可權給開發人員或者方案商,可以檢視一下該平臺是否支援產品開發的許可權授權。

3. 建立產品

各平臺都提供了建立產品的模板,選擇一個型別和掃地機業務類似或者匹配的模板。這一步會自動生成一個 product_id,後邊有提到。

4. 設定功能

IOT 雲平臺設定功能都是通過 物模型 清單來實現。為了直觀說明,下面展示塗鴉平臺的一個掃地機物模型例子給大家看看:

DP ID 功能點名稱 識別符號 資料傳輸型別 資料型別 功能點屬性
1 電源開關 power 可下發可上報(rw) bool
2 清掃開關 switch_go 可下發可上報(rw) bool
3 清掃模式 mode 可下發可上報(rw) enum 列舉值: standby, random, smart, wall_follow, mop, spiral, left_spiral, right_spiral, right_bow, left_bow, partial_bow, chargego
5 工作狀態 status 只上報(ro) enum 列舉值: standby, smart_clean, wall_clean, spot_clean, mop_clean, goto_charge, charging, charge_done, paused, cleaning, sleep
13 尋找機器 seek 可下發可上報(rw) bool
101 清掃 clean_switch 可下發可上報(rw) bool
102 暫停 pause_switch 可下發可上報(rw) bool
103 回充 charge_switch 可下發可上報(rw) bool
104 清掃模式: clean_mode 可下發可上報(rw) enum 列舉值: smart, pose, zone, backcharge, curpointing, selectroom, null
105 當前狀態: robot_state 可下發可上報(rw) enum 列舉值: idle, pointing, areaing, totaling, sweep, mop, fault, pause, chargring, tocharge, fullcharge, remotectl, dormant, curpointing, selectroom, chargingwash, dusting, selfclean
106 剩餘電量 battery 可下發可上報(rw) value "數值範圍: 0-100, 間距: 1, 倍數: 0, 單位: %"
107 清掃時間 cur_clean_time 可下發可上報(rw) value "數值範圍: 0-2147483647, 間距: 1, 倍數: 0, 單位: 秒"
108 清掃面積 cur_clean_area 可下發可上報(rw) value "數值範圍: 0-2147483647, 間距: 1, 倍數: 0, 單位: "
109 吸力 fan_mode 可下發可上報(rw) enum 列舉值: quiet, auto, strong, max
110 水量設定 water_mode 可下發可上報(rw) enum 列舉值: low, mid, high

可以看到首先需要建立一個 DP 點(對應著一個功能),然後命名功能點對應的名稱,並且有對應的功能識別符號,定義可讀可寫的資料傳輸型別(對於雲端而言),定義當前功能的資料型別,以及具體的列舉值或者數值範圍等。

5. 購買聯網許可

掃地機在聯網時,需要憑證雲平臺提供的 liscense 才可以順利使用該平臺的資訊互動服務。用賬號登入平臺就可以申購對應裝置數量的 liscense,然後在生產的時候把 liscense 燒錄進機器。使用者把掃地機帶回家裡後,在使用APP成功控制機器之前,需要按照使用說明書的指引觸發掃地機進入配網模式,然後按照APP的配網流程把機器繫結到雲平臺。機器能否成功繫結,首先是掃地機需要通過藍芽或者wifi的AP熱點模式直連手機從APP獲取到家庭的路由器 wifi 名和密碼,然後通過家庭網路把機器內部存下來的 liscense 發給雲平臺校驗並獲取授權通過。

在開發階段,一般平臺會提供一定數量的免費 liscense 用於偵錯裝置,需要在平臺上面申請。這個 liscense 在有的平臺也會稱呼為三元組,一般包含有代表產品的 product_id,代表裝置唯一識別碼的 UUID 或者 MAC,和代表裝置授權的鍵值 author_key。product_id 在前面的建立產品時就已生成,後邊的兩項資訊只會在購買 liscense 成功後才可以看到。

6. 偵錯功能

有的雲平臺為了方便開發者偵錯裝置功能點,提供了比較詳細的偵錯功能,比如裝置線上狀態,實時檢視平臺針對裝置收發的資料紀錄檔等。

7. 釋出產品

關於產品的各項準備工作完成後,需要讓該產品在雲端進入釋出狀態,這樣該產品下的裝置才能被雲平臺提供資料處理服務。

8. 上傳 OTA 升級包和多語言套件

產品上市後,是有極大可能需要在客戶手中更新機器韌體的,比如大量客戶發現了機器工作異常。這樣就需要通過雲服務給裝置遠端更新韌體,一般通過在APP頁面預置升級按鈕,當用戶點選 升級 按鈕後,雲平臺就會把提前上傳到後臺的韌體升級包下發給機器,機器接收完整升級包後自動執行後續所有操作,這個過程就是 OTA(over the air update)。

有些產品提供多語言的功能,只要使用者在APP頁面點選切換對應的語言套件,雲平臺就會把提前上傳到後臺的對應語言套件下發給機器,機器接收完整語言套件後自動執行後續所有操作。

關於APP端的開發這裡略過。。。

好了,簡單介紹到這裡,下次見。