“我把一个已死的物联网产品,救活了!”
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
☞“脱离应用开发者的数据库,不会成功”,黄东旭万字长文剖析数据库发展新趋势
以上是关于“我把一个已死的物联网产品,救活了!”的主要内容,如果未能解决你的问题,请参考以下文章