物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品該怎么設(shè)計(jì)?

6 評(píng)論 19751 瀏覽 158 收藏 13 分鐘

在某些B端產(chǎn)品中,會(huì)通過安裝物聯(lián)網(wǎng)設(shè)備來提高工作效率,比如能耗監(jiān)測(cè)、智能抄表、遠(yuǎn)程監(jiān)控等。而如果接入的物聯(lián)網(wǎng)設(shè)備品牌多又不一樣的話,就需要產(chǎn)品層面設(shè)計(jì)一個(gè)物聯(lián)網(wǎng)接入模塊了。本文作者對(duì)物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品的設(shè)計(jì)進(jìn)行了分析,一起來看一下吧。

在某些B 端產(chǎn)品中,會(huì)通過安裝物聯(lián)網(wǎng)設(shè)備來提高工作效率,比如能耗監(jiān)測(cè)、智能抄表、遠(yuǎn)程監(jiān)測(cè)等等。如果接入的物聯(lián)網(wǎng)設(shè)備品牌多、各家協(xié)議、數(shù)據(jù)格式不一致的話,那么就需要產(chǎn)品層面設(shè)計(jì)一個(gè)物聯(lián)網(wǎng)接入模塊,這個(gè)模塊充當(dāng)業(yè)務(wù)層和設(shè)備層的橋梁,使得業(yè)務(wù)層無需關(guān)心具體接入設(shè)備的品牌、協(xié)議和數(shù)據(jù)格式。

有了物聯(lián)網(wǎng)接入模塊后,接入新的設(shè)備時(shí)就不需要更改業(yè)務(wù)層的設(shè)計(jì)了,也就能夠減少業(yè)務(wù)層的開發(fā)工作量,提高整個(gè)團(tuán)隊(duì)的產(chǎn)出效率。

01 一個(gè)反面案例

先給大家看一個(gè)沒有物聯(lián)網(wǎng)設(shè)備接入模塊的反面案例,這樣會(huì)更好理解為什么需要物聯(lián)網(wǎng)接入模塊。本人曾經(jīng)接觸過一個(gè)物聯(lián)網(wǎng)監(jiān)測(cè)項(xiàng)目,他們的產(chǎn)品選用的物聯(lián)網(wǎng)設(shè)備只有一個(gè)廠家,因此產(chǎn)品設(shè)計(jì)沒有多考慮,開發(fā)這邊也是為了盡快上線,于是設(shè)計(jì)了下面這樣的產(chǎn)品架構(gòu)。

物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品該怎么設(shè)計(jì)?

結(jié)構(gòu)很簡單,實(shí)現(xiàn)起來確實(shí)也很快,產(chǎn)品順利上線了。隨著業(yè)務(wù)的發(fā)展,從成本和廠家設(shè)備的質(zhì)量綜合考慮,公司又選了另外一個(gè)廠家的同類設(shè)備,但問題來了,新廠家的數(shù)據(jù)格式和之前的廠家的完全不同,為了接入新設(shè)備,他們的產(chǎn)品架構(gòu)變成了下面的樣子。

物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品該怎么設(shè)計(jì)?

業(yè)務(wù)模塊變“胖”了,需要新的業(yè)務(wù)邏輯來對(duì)接新廠家的數(shù)據(jù) API 接口。更為失誤的是,他們的前端頁面的字段名稱是按照之前的設(shè)備寫死的,這就意味著前端應(yīng)用也需要按不同的廠家類型做適配,如果是廠家1就按廠家1的數(shù)據(jù)格式展示,如果是廠家2就按廠家2的數(shù)據(jù)格式展示。

之后,公司又引入了新的廠家,然后開發(fā)同學(xué)就“炸鍋”了 —— 簡直就是在人工制造“代碼屎山”??!引入一個(gè)新的廠家,一是整個(gè)開發(fā)鏈條從設(shè)備數(shù)據(jù) API對(duì)接,到業(yè)務(wù)邏輯處理再到前端頁面展示全部都需要跟著改動(dòng);二是整個(gè)業(yè)務(wù)的代碼里面堆積了一堆按不同廠家做的條件判斷,越來越臃腫,難以維護(hù)。開發(fā)同學(xué)怨聲載道,對(duì)產(chǎn)品經(jīng)理的配合度自然會(huì)下降很多。

02 問題在哪?

出了問題,自然要看看怎么“甩鍋”。那么這里到底是產(chǎn)品同學(xué)的問題還是開發(fā)同學(xué)的問題呢?個(gè)人覺得都有問題,但是產(chǎn)品是源頭,責(zé)任更大一些。作為產(chǎn)品經(jīng)理,應(yīng)該要具備業(yè)務(wù)前瞻性。以這個(gè)案例來說,物聯(lián)網(wǎng)設(shè)備屬于硬件設(shè)備,作為公司運(yùn)營肯定會(huì)考慮硬件采購的成本,產(chǎn)品的質(zhì)量、穩(wěn)定性。因此,很大可能會(huì)使用其他廠家的設(shè)備替換。

而且,物聯(lián)網(wǎng)設(shè)備有一個(gè)很大的特點(diǎn)就是,設(shè)備已經(jīng)部署后,可能分布在全國各個(gè)地方,根本不太可能用一個(gè)新廠家的設(shè)備完全替換已有的設(shè)備。這就意味著,產(chǎn)品設(shè)計(jì)上需要考慮不同廠家設(shè)備的共存情況 —— 也就是要能夠支持多個(gè)廠家的物聯(lián)網(wǎng)設(shè)備接入。

物聯(lián)網(wǎng)設(shè)備接入需要考慮不同廠家的兼容性,需要能夠同時(shí)接入不同廠家的同類功能設(shè)備。

03 如何解決問題?

先講我們生活中的一個(gè)例子。我們知道不同國家的交流電的電壓是不同的,有220伏 ,也有110V的。如果直接接入電器設(shè)備,電器設(shè)備會(huì)因?yàn)楣ぷ麟妷撼龇秶鴮?dǎo)致燒毀。

這個(gè)問題是怎么解決呢?通過電源適配器來解決,比如下圖是一個(gè)筆記本的電源適配器,標(biāo)明了工作輸入電壓范圍是100-240伏,雖然輸入電壓波動(dòng)范圍很大,但是輸出一直穩(wěn)定在筆記本需要的電壓范圍內(nèi)(下圖是19.5伏)。

物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品該怎么設(shè)計(jì)?

適配器就是解決不同的輸入源不影響輸出的一個(gè)中間設(shè)備。受到適配器的啟發(fā),軟件設(shè)計(jì)領(lǐng)域就產(chǎn)生了一個(gè)“適配器”模式。適配器模式就是將不同的輸入轉(zhuǎn)換為相同的輸出,從而避免業(yè)務(wù)層和輸入直接產(chǎn)生關(guān)系。這樣,輸入源的改變處理全部由適配器來完成,業(yè)務(wù)層則無需關(guān)心輸入源的變動(dòng)。

對(duì)于物聯(lián)網(wǎng)設(shè)備接入,我們會(huì)發(fā)現(xiàn)和適配器要解決的問題是一樣的。因此,對(duì)于物聯(lián)網(wǎng)設(shè)備接入,我們應(yīng)該設(shè)計(jì)一個(gè)適配層,作為廠家數(shù)據(jù) API 和業(yè)務(wù)層的橋梁。這個(gè)適配層的職責(zé)就是接入不同廠家的物聯(lián)網(wǎng)設(shè)備數(shù)據(jù) API,然后轉(zhuǎn)換為業(yè)務(wù)層需要的標(biāo)準(zhǔn)格式數(shù)據(jù)。

這樣,即便是換廠家、換設(shè)備,都只需要更改適配層,業(yè)務(wù)層和前端都不需要做任何改動(dòng)。有了適配層之后,我們的產(chǎn)品架構(gòu)就演變成下面的樣子。這種架構(gòu)下,不管接入多少個(gè)廠家、多少種設(shè)備,都只需要在適配層進(jìn)行調(diào)整,業(yè)務(wù)模塊和前端無需做任何修改。

圖中繪制的箭頭是單向的,實(shí)際上換成雙向箭頭也是沒問題的。如果業(yè)務(wù)模塊需要下發(fā)指令到物聯(lián)網(wǎng)設(shè)備,同樣也可以通過適配層將標(biāo)準(zhǔn)指令轉(zhuǎn)換為不同廠家設(shè)備能夠接收的相應(yīng)指令,接入新廠家設(shè)備同樣也不需要更改業(yè)務(wù)模塊。

物聯(lián)網(wǎng)設(shè)備接入產(chǎn)品該怎么設(shè)計(jì)?

04 經(jīng)驗(yàn)分享

其實(shí)上面說的反面案例類似的情況十分常見,出現(xiàn)這樣的問題很大程度上是沒有類似的產(chǎn)品設(shè)計(jì)經(jīng)驗(yàn)。本人曾經(jīng)負(fù)責(zé)過一個(gè)智能電表抄表模塊的產(chǎn)品設(shè)計(jì),這里面就涉及到抄表、計(jì)費(fèi)、欠費(fèi)拉閘斷電、充值恢復(fù)通電、手動(dòng)通斷電等等業(yè)務(wù)。

在產(chǎn)品設(shè)計(jì)時(shí),由于有適配器這樣的概念(實(shí)際經(jīng)驗(yàn)來自做軟件開發(fā)時(shí)的設(shè)計(jì)模式),所以提前考慮了做適配層。并且,明確和開發(fā)同學(xué)交待要考慮未來新的廠商設(shè)備接入。到后面,確實(shí)也因?yàn)椴少彸杀驹?,采購了另一個(gè)廠家的設(shè)備。由于有適配層的存在,新廠家的智能電表非??炀徒尤氲疆a(chǎn)品中,而業(yè)務(wù)層并沒有做任何改動(dòng)。要知道,如果要更改業(yè)務(wù)層的抄表、計(jì)費(fèi)、通斷電指令那開發(fā)的工作量就非常多,而且還容易出現(xiàn)紕漏導(dǎo)致 bug。

對(duì)于物聯(lián)網(wǎng)設(shè)備適配層,通常來說需要下面幾個(gè)模塊:

1)設(shè)備檔案

設(shè)備檔案主要維護(hù)設(shè)備的基礎(chǔ)信息,其中關(guān)鍵的一個(gè)信息就是與廠家平臺(tái)對(duì)接的唯一標(biāo)識(shí),通常會(huì)是設(shè)備編號(hào)或 IMEI。在產(chǎn)品設(shè)計(jì)的時(shí)候,需要考慮支持移動(dòng)端登記設(shè)備檔案以及批量導(dǎo)入。移動(dòng)端登記是方便設(shè)備安裝的時(shí)候邊安裝邊登記;批量導(dǎo)入是應(yīng)對(duì)大量設(shè)備的批量錄入,提高效率。

2)接口管理

與不同廠家的對(duì)接接口管理,這里有兩種處理方式,一是開發(fā)直接在代碼層面完成,二是通過頁面配置完成。第二種會(huì)更復(fù)雜一些,但是通用性更強(qiáng)。

3)數(shù)據(jù)格式配置

將廠家的設(shè)備數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)模塊的標(biāo)準(zhǔn)格式數(shù)據(jù),和接口管理一樣,一種方式是開發(fā)在代碼里完成,另一種方式是通過配置完成。通常,如果是配置會(huì)和接口配置一起完成,將廠家的設(shè)備數(shù)據(jù)字段映射到業(yè)務(wù)模塊相應(yīng)的字段。

異常監(jiān)控:異常監(jiān)控包括兩種類型,一個(gè)是廠家的服務(wù)可用性監(jiān)控,另一個(gè)是業(yè)務(wù)數(shù)據(jù)層的監(jiān)控。可用性是防止廠家的服務(wù)不可用導(dǎo)致自有業(yè)務(wù)的不可用;業(yè)務(wù)數(shù)據(jù)層的監(jiān)控是監(jiān)測(cè)異常數(shù)據(jù),方便及時(shí)發(fā)現(xiàn)業(yè)務(wù)層面的問題。比如我們的智能電表就遇到過一個(gè)極端的案例,由于線路故障導(dǎo)致抄表數(shù)據(jù)異常。

另外,如果你的產(chǎn)品是 SaaS 平臺(tái),那么建議是按照“開箱即用”的理念來設(shè)計(jì)物聯(lián)網(wǎng)設(shè)備接入模塊。什么是“開箱即用”?那就是臟活累活由平臺(tái)運(yùn)營來做,客戶在業(yè)務(wù)系統(tǒng)中只需要關(guān)注業(yè)務(wù)模塊即可。

以我們的抄表為例,我們把設(shè)備檔案這個(gè)最繁雜的工作留給了平臺(tái)運(yùn)營層面完成。我們會(huì)在平臺(tái)層面完成設(shè)備檔案的錄入,然后將設(shè)備分配給客戶的對(duì)應(yīng)的業(yè)務(wù)單元。到了客戶這邊,只需要完成業(yè)務(wù)層面的計(jì)費(fèi)、通斷電規(guī)則就可以像使用非智能表一樣使用我們的智能抄表功能。

05 總結(jié)

本篇以實(shí)例的方式介紹了物聯(lián)網(wǎng)設(shè)備接入的產(chǎn)品設(shè)計(jì)??梢钥吹?,通過引入適配層可以有效實(shí)現(xiàn)多廠家設(shè)備快捷接入而不影響業(yè)務(wù)層。

對(duì)于產(chǎn)品經(jīng)理而言,在做物聯(lián)網(wǎng)設(shè)備接入或者類似的功能模塊時(shí),應(yīng)當(dāng)具備業(yè)務(wù)前瞻視野,提前預(yù)判可能的變化,在產(chǎn)品設(shè)計(jì)上引入應(yīng)對(duì)變化的適配層,從而提高產(chǎn)品迭代的速度、減少開發(fā)工作量的同時(shí)提高產(chǎn)品的穩(wěn)定性。

作者:產(chǎn)品海豚灣;公眾號(hào):產(chǎn)品海豚灣(ID:pm-dophin-bay)

本文由@產(chǎn)品海豚灣 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 你說的這個(gè)適配層,是不是用一個(gè)物聯(lián)網(wǎng)網(wǎng)關(guān)就能解決

    來自北京 回復(fù)
    1. 他是跟物聯(lián)網(wǎng)平臺(tái)鏈接數(shù)據(jù),不是直連設(shè)備,直連設(shè)備,可以配置網(wǎng)關(guān)

      來自福建 回復(fù)
  2. 請(qǐng)問“與不同廠家的對(duì)接接口管理,這里有兩種處理方式,一是開發(fā)直接在代碼層面完成,二是通過頁面配置完成?!钡诙N頁面配置如何設(shè)計(jì)實(shí)現(xiàn)?

    來自江蘇 回復(fù)
  3. 能加個(gè)好友交流下么

    來自重慶 回復(fù)
  4. 感謝大佬分享,詳讀后收獲巨大,之前的一些困惑也理清了
    已關(guān)注大佬,期望能再寫些物聯(lián)設(shè)備相關(guān)的文章
    再次感謝

    來自廣東 回復(fù)
  5. 數(shù)據(jù)倉庫可以解決這個(gè)問題

    來自河北 回復(fù)
专题
31214人已学习16篇文章
在线教育的现状、趋势和未来。
专题
69661人已学习13篇文章
想要做款好产品,这些规范你得知道。
专题
13556人已学习13篇文章
本专题的文章分享了如何打造用户“上瘾”的产品。
专题
16837人已学习12篇文章
如何搞懂财务和业务之间的关系,并推进业务系统财务模块的建设呢?本专题的文章分享了财务系统的设计指南。
专题
18815人已学习13篇文章
本专题的文章分享了社区运营的正确姿势。
专题
34889人已学习13篇文章
为了给用户提供更好的体验,你需要一套合理的推送策略。