奧推網

選單
科技

“我把一個已死的物聯網產品,救活了!”

將舊產品”變廢為寶“的過程,總是充滿挑戰與成就感。

原文連結:https://blog。kchung。co/taking-over-a-dead-iot-company/

宣告:本文為 CSDN 翻譯,未經允許,禁止轉載。

作者 | Kevin Chung 譯者 | 彎月 責編 | 鄭麗媛

出品 | CSDN(ID:CSDNnews)

回首 2017 年,NYCTrainSign 是一家制作倒計時器的公司,他們生產的一種顯示牌可以告訴你距離下一班火車還剩多長時間,就好像地鐵站顯示列車時刻表的牌子。

除了掛在車站的屋頂,你還可以把這種倒計時顯示牌放在辦公桌上,當作一種裝飾。

他們的營銷做得很成功。我記得很多 Facebook 和 Instagram 帖子都在宣傳這種倒計時顯示牌在咖啡館和披薩店的使用,客戶看一眼就知道還要多久能拿到自己的咖啡或披薩。

然而,除去 Instagram 廣告的光環,這種倒計時顯示牌本身的做工設計粗糙,而且成本不可持續。2018 年初,該公司就不再維護社交媒體上的帖子,下單的人也收不到貨了。公司甚至對客戶說,想拿回退款可以去告他們。

如今,即使是進入該領域的新公司也會到 NYCTrainSign 留下的爛攤子所影響。

時過境遷,這家公司倒閉已經 5 年了,偶然的機會中我獲得了一個他們的倒計時顯示牌,於是,我決定調查一下他們倒閉的原因。最終,我成功地獲得了顯示牌的完整控制權,並寫了一個 API,可以供那些仍在”服役“的顯示牌使用。

獲得了一個倒計時顯示牌

2021 年的某一天,我發現 Reddit 上有人在賣 NYCTrainSign 的倒計時顯示牌——他們是為數不多的收到了該產品的人,但現在想扔掉了。

不可思議的是,主人保留了原有的包裝。

圖:原包裝盒

圖:倒計時顯示牌

圖:通電後顯示倒計時

拆解

倒計時顯示牌裝在一個手工製作的木箱內,我相信該公司招了一些剛畢業的學生來製作這些箱子。

圖:木箱底部,不清楚這個洞是幹什麼的

我不太懂木工,所以看這個木箱還不錯。雖然角落有一些損壞,但普通家庭使用還是綽綽有餘的。

內部的倒計時器包含以下部件:

2 個 LED 矩陣面板

1 個樹莓派 3

1 張 4GB MicroSD 卡

1 個 Adafruit LED 矩陣 HAT

電源線

LED 矩陣面板的接線

一個小按鈕,連線到樹莓派的 GPIO

圖:倒計時器內部構造。注意隨意張貼的黑膠帶,還有空置的電源線

雖然木箱看著還不錯,但從內部來看,這款倒計時器的做工確實不太行。

樹莓派只用了兩個螺絲草草固定了一下,按鈕(可能是用於重置)甚至都沒有固定,而且不知道什麼原因,木箱底部還鑽了一個大洞。電源線稍微動一下就會斷開。其實在我開啟的時候,電源線就已經脫落了。

物料成本過高

物料清單指的是產品的元件列表。大多數電子專案,尤其是正規的專案,都會有一個詳細的物料清單,列出每項零件的作用及價格。

物料成本通常遠低於零售價,這是因為還需要考慮運輸成本、研發成本、利潤率等因素。物料成本的微小變化都會對商品的最終成本產生很大影響。為了在物料上節省幾分錢,而更換供應商或部件的情況並不少見。

一般,確定最終產品零售價的方法是:物料成本乘以 4。

下面,我們來計算一下這款倒計時器的物料成本:

樹莓派 3:35 美元

Adafruit LED 矩陣 HAT(HAT是可直接插在樹莓派上的外接電路):25 美元

LED 矩陣 * 2:60 美元(每個至少 30 美元)。他們的一條推文特別提到了這款產品使用了比較昂貴的特定 Adafruit 元件。

5V 2A 電源:5 美元。我懷疑這個電量是否足以在全功率消耗下為所有裝置供電,大多數情況下我們會推薦 4A~10A。

4GB MicroSD卡:7 美元

木箱:15 美元

雜項 - 接線、按鈕、電纜、螺絲、包裝(標牌上有一些硬紙板、一張紙、一些泡沫包裝):3 美元

合計,這款倒計時顯示牌的物料成本約為 150 美元。那麼,按照我的轉換技巧,建議零售價至少應為 600 美元。

售價

根據存檔的網頁,這款產品的售價為 600 美元,但也有文章提到價格為 300 美元,有些人花了 200 美元,甚至 100 美元就買到了。

圖:考慮到物料成本,售價 299 美元簡直是在搶錢

另外,他們還有每月 30 美元租用產品的計劃。

根據物料成本來計算,很顯然 300 美元的售價太低了,但是 600 美元未免太昂貴了,畢竟這只是一個倒計時顯示牌。

租賃可能是一個有趣的想法,但我認為收回最初的現金投資將非常困難。硬體企業通常需要在初始階段注入大量資金來建立庫存,然後透過銷售產品,儘快收回成本,並賺取利潤。

誰賣了鐵鍬

你聽過淘金時代賣鐵鍬的故事嗎?在 19 世紀的淘金熱潮中,所有人都在挖礦,卻有一批人賣鋤頭和鐵鏟,悶聲發大財。

在我們的故事中,Adafruit 應該就是那個賣鐵鍬的人。由於使用了 Adafruit LED 矩陣 HAT,導致這款倒計時顯示牌的物料成本增加了 25 美元,約為 20%。其實,我們完全可以避免使用如此昂貴的部件。

這是因為:

Adafruit LED 矩陣 HAT 是完全不必要的。這款倒計時顯示牌使用的 rpi-rgb-led-matrix 庫描述瞭如何不使用 HAT 而是直接接線,還給出了無源介面卡板的設計。這些說明和配器板早在 2017 年就出現了。

早在 2017 年就出現了更便宜的 HAT,比如這款(https://www。electrodragon。com/product/rgb-matrix-panel-drive-board-raspberry-pi/),售價僅 3 美元,遠低於 Adafruit 的 25 美元。此外,儘管使用了更為昂貴的 Adafruit HAT,但不知何種原因,顯示牌的閃爍問題仍然沒有得到解決。

大多數時候,我們只用 Adafruit 部件製作原型,實際投入生產時就會換成更為便宜的部件。這可能是 Adafruit 定價方案中的一個因素。

此外,樹莓派可能也有賣鐵鍬的嫌疑,35 美元的成本確實讓人難以承受,而且也是物料清單中最昂貴的一個部件。

考慮過後,雖然我不推薦使用它,但我認為與使用 Arduino 或 ESP32 相比,使用樹莓派並不是一個糟糕的決定。畢竟,使用樹莓派本身就是一種營銷,而且開發也更容易。

在我看來,如果 NYCTrainSign 團隊前期不想在使用像 ESP32 這樣的微控制器上投入大量時間,則可以選擇樹莓派 3,然後釋出時再換成樹莓派 Zero W。

最終,他們應該改用 ESP32 或類似的產品,進一步降低物料成本,但從樹莓派開始下手並不是特別嚴重的錯誤,但仍然需要建立最終取代的長期計劃。

閱讀程式碼

由於該產品是基於樹莓派的,所以備份 MicroSD 卡很簡單,這樣我就可以探索檔案系統,並根據需要進行修改。

這款倒計時顯示牌的程式碼庫由一些自己編寫的 Python 和 NodeJS 程式碼以及一些開源庫組成。

樹莓派上執行的自定義元件主要有兩個:

Python 伺服器(LED 伺服器)

NodeJS 伺服器(配置伺服器)

LED 伺服器

用 Python 編寫的 LED 伺服器負責繪製 LED 矩陣,並透過自家公司的 API 獲取列車時刻表的資料。LED 伺服器需要與配置伺服器通訊確定使用者的設定,然後向遠端伺服器頻繁傳送 HTTP 呼叫,以獲取火車到站時刻和天氣等資料。

接著,LED 伺服器利用獲取的資料在本地生成影象或文字,然後將其渲染到 LED 矩陣上。

配置伺服器

用 NodeJS 編寫的配置伺服器負責將使用者配置儲存在 JSON 檔案中,並接收檢索和更新該檔案的請求。配置伺服器啟動時會從 HTTP 伺服器中提取最新的配置。此外,配置伺服器也會連線到 AWS IoT Core 端點,從 MQTT 伺服器接收實時的配置更新。

其他元件

首次啟動時,WiFi 是透過 raspberry-wifi-conf 配置的,這是一個開源應用程式,利用樹莓派建立無線網路供使用者連線,然後提供實際的 WiFi 連線詳細資訊。

重置按鈕由後臺執行的小型 Python 指令碼控制。當按下按鈕時,指令碼會刪除 WiFi 設定,重置主機名,刪除一些遠端監控功能,並重新啟動伺服器。

該公司似乎可以遠端連線到每個倒計時器的終端。我手中的顯示牌安裝了這個遠端控制軟體(https://www。dataplicity。com/)。

程式碼質量

在檢視程式碼時,我注意到了各種程式碼質量問題:

他們的 transit API 似乎沒有考慮到一個車站同時擁有多條火車線路的情況。同一個車站內的兩條線路會顯示成相同的終點站。

沒有看到韌體更新過程。也許更新需要讓客戶用新的樹莓派映象重新整理 MicroSD 卡。

許多 Python 程式碼僅使用系統呼叫來修改底層系統。

Python LED 伺服器與 NodeJS 配置伺服器通訊,以儲存和檢索配置。我懷疑這樣做是因為團隊認為透過 NodeJS 與 AWS IoT 互動更容易,而透過 Python 程式碼來顯示也更容易。

由於程式碼編輯器配置錯誤,導致製表符和空格經常混用。

整個 git 歷史記錄都儲存在 MicroSD 卡上。

Bash 歷史儲存在 MicroSD 卡上。

重用的程式碼很少。

倒計時器顯示牌起死復生獲取 shell

對於大多數樹莓派來說,獲得 root shell 非常簡單,因為通常 MicroSD 卡上沒有加密。我們只需啟動到單使用者模式,並重置樹莓派使用者的密碼。

雖然這種方法可以獲取 shell,但即便獲取 shell 也沒有用,因為該公司的 API 已經不存在了。在無法訪問網際網路時,該產品會使用硬編碼的本地資料,因此顯示的任何資料都沒有意義。

重建伺服器

當然,我們可以更新裝置通訊的域名,而且很幸運的是,這個域名現在公開出售。於是,我買了下來。

圖:誰能想到入侵這款產品居然如此容易

在獲得了域的完整控制權後,我們就可以根據倒計時器的需要新建 API,並復興該域內所有的倒計時器。我們還可以執行一些更新,將這些倒計時器更新為更現代的軟體。

我重建了列車到站時刻表(紐約市)和天氣資料的端點:

列車到站時刻表的 API:https://wheresthefuckingtrain。com/

天氣資料 OpenMeteo API:https://open-meteo。com/

獲取倒計時器的控制

與大多數物聯網裝置一樣,這款裝置包含大量的系統呼叫,其中一個呼叫直接將裝置 ID 寫到了 shell 命令中。理論上,有了伺服器的控制權,我們就可以直接遠端控制任何一次列車的顯示牌。

圖:物聯網最方便的一點

由於我們控制了域名,理論上,就可以向任意裝置 ID 提供資料,並執行任意命令。然後,我們還可以讓這些設備註冊到我們新建的控制伺服器,然後使用者就可以使用他們的裝置了。

簡單來說,我們獲取倒計時器控制的流程如下:

開啟裝置,它會嘗試檢索配置。這個檢索操作會永無止境地迴圈,直到檢索到配置。

裝置傳送請求獲取 logo 圖片。此請求包含每臺裝置唯一的兩個 ID。我們將這些 ID 儲存起來,然後建立一個訪問裝置的程式。

在裝置下一次請求配置時,我們將訪問程式傳送給裝置。

我們指示使用者重新啟動他們的裝置,並在裝置重啟時執行訪問程式。

這個程式會更新裝置,將它們訪問的主機改為我們的新伺服器。

在獲取遠端提供任意資料的能力之後,我們就算真正復活了倒計時器!

在能夠完全控制域名後,我們就是這些裝置的新主人了。

當時的情況折扣太多

我認為,核心問題是物料成本過高,而且銷售折扣太多。

正如我們之前所討論的,即使是 300 美元出售該產品也太便宜了。這款倒計時顯示牌從一開始就應該以 600 美元的價格出售。

該產品曾嘗試過投放廣告,但 LED 顯示牌不屬於“快速發展”型別的公司。所以虧本出售產品實際上只能起到營銷的作用。

廣告太多

NYCTrainSign 公司曾一度擁有首席營銷官、社交媒體經理和社交媒體助理。

對於一個新興的初創公司來說,這些職位完全是冗餘的。

當時,MTA 經常出現延誤,媒體對此進行了大量報道。這似乎給該公司做了免費的廣告。因此,他們完全沒有必要設定這些職位。

由於公司大力的廣告和營銷宣傳,市場對該產品的需求很大。

沒有足夠的產品

雖然有需求,但他們無法生產相應數量的產品。更不用說,每臺裝置都是在美國手工製造的,加上零售價又很低,這顯然無法長期維持。該團隊手頭也不太可能有足夠的庫存,因此他們可能也受到了採購零件時間的影響。

儘管沒有能力交付訂單,但他們沒有因此停止接收訂單。長此以往,他們需要不斷獲得資金來完成之前打折的訂單,因此這項業務逐漸演變成了一場騙局。

後來,他們告訴客戶,他們將生產轉移到了中國,因此交貨有 6 個月的延遲。不想等待的客戶可以聯絡他們的信用卡公司拒付賬單。但將生產轉移到中國似乎只是白日做夢,從未實現。不久後,該公司就倒閉了,辦公室也關閉了。

太多領導

根據 Linkedin 的資訊,該公司最初有 4 位創始人。隨著時間的推移,增加到了 11 人,而當時公司一共才 15 個人。

即使每個創始人只拿 6 萬美元,每臺裝置的利潤高達 400 美元,每年以全價銷售約 600 臺裝置,才夠支付所有人的工資。

其中一位創始人釋出了他們的銷售活動情況,他們在大約兩個月內達到了 25 萬美元的收入。

然而,我們並不清楚每臺裝置的利潤是多少,因為似乎許多裝置都是以很大的折扣力度售出的。再者,600 美元的零售價似乎過高,200 美元或 300 美元的價位更現實。

在一個大約有 850 萬人口的城市,第一年至少賣出 600 臺裝置應該不會太難。但年復一年,每年都需要賣出這麼多裝置,這還不包括其他員工、承包商等的費用。

在我看來,如果無法降低物料成本,或找到一種能夠更好的獲取經常性收入的策略,公司很快就維持不下去了。最後的結果也確實如此。

優秀的創意、優秀的時機、糟糕的團隊、糟糕的產品

在公司陷入困境後,創始人和員工出於某種原因試圖建立某種諮詢公司。

他們的公司創始人從來沒搞清楚究竟怎麼回事,為什麼交付的產品這麼少,錢都花到哪裡去了。其中一位創始人曾表示,他們從未收到過任何收入,但這些錢一定是花到某個地方去了。

總的來說,優秀的創意、優秀的時機、糟糕的團隊、糟糕的產品。

大多數創始人和整個團隊並沒有任何惡意,但他們沒有建立硬體業務的經驗,而且營銷的成功打了他們個措手不及。

現狀

在最初決定踏上此次冒險之旅時,我曾夢想打造自己的倒計時顯示牌,然後將其作為產品出售。

我使用 ESP32 製作了一個顯示牌的原型。

然而,我反覆思量,覺得自己不是將該產品推向市場的合適人選。我的強項是軟體,而不是電氣工程或木工。

更不用說,如今 LED 顯示牌是一個非常擁擠的市場,擁有大量現成的解決方案。

所以,最終我決定繼續研究我的 ESP32 顯示牌,並將其作為個人的學習專案。

另外,我透過社群開源了 NYCTrainSign 倒計時顯示牌底層的程式碼、重構的 API 伺服器以及訪問現有裝置的程式(https://github。com/ColdHeat/nycts-unit),僅作參考。

《2022-2023 中國開發者大調查》重磅啟動,歡迎掃描下方二維碼,參與問卷調研,更有 iPad 等精美大禮等你拿!