“我把一个已死的物联网产品,救活了!”

Posted CSDN资讯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“我把一个已死的物联网产品,救活了!”相关的知识,希望对你有一定的参考价值。

将旧产品”变废为宝“的过程,总是充满挑战与成就感。

原文链接: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 等精美大礼等你拿!

☞两万字长文,史上最全 C++ 年度总结!
☞WASM 原生时代已经到来 | 解读 WebAssembly 的 2022
☞“脱离应用开发者的数据库,不会成功”,黄东旭万字长文剖析数据库发展新趋势

以上是关于“我把一个已死的物联网产品,救活了!”的主要内容,如果未能解决你的问题,请参考以下文章

模块化现代木箱包装结构体系建设是今后方向

USACO 2017 December Contest Platinum T2: Push a Box

联赛练习:draw

分层结构协议接口和服务

一道状压板子题题解By 云岁月书 2020/7/16

什么是零售商?零售行业的特点?