你好,我叫谭方敏。

我是一名物联网架构师,坐标广州,目前已经工作十四年了,很高兴有机会能跟你分享自己学习《物联网开发实战》这门课程的心得。

为什么要学这门课?

首先我想跟你聊一聊为什么要学这门课,主要有三个方面原因。

第一,完善物联网知识体系。

在游戏行业泡了 10 年之后,因为一个偶然的机会,我进入了物联网行业,到现在差不多 4 年了。转行之后虽然也遇到了不少问题,但我依靠自己的摸索,一路上都有惊无险地解决了。

不过我毕竟是半路出家,底子不够厚,还是希望能全面地了解物联网的知识体系。我觉得一个人的技能应该长成一棵完整的大树,而不是一堆零乱的杂草,这样才拥有核心竞争力。

第二,尝试物联网全生态的落地实践。

知识不用,自然就会荒废。只有在实践中不断地消化和理解知识,才能形成闭环,做到知行合一,真正产生价值。

物联网的整个生态分为设备层、网络层和应用层,而我一直专注于应用层的研发,在工作中很少直接接触设备层和网络层。而在这门课程中,郭老师在实战篇介绍了几个实战小项目,这对我来说是一个很好的机会,让我能够打通全生态,完成整个物联网知识栈的建设。

第三,为创业寻找方向和思路。

2012 年我在游戏行业的创业失败,到现在已经快十年了。我一直认为创业就是一个严谨的科学实验。复盘失败的原因,我发现自己在各个层次上都或多或少缺少某些创业者必备的能力。所以在一顿恶补之后,我也希望能看看还差多少。

另外,物联网相对互联网而言,从发起创业项目到真正落地,并不需要那么多的资源。一个简单的智能家居项目,成本也许可以控制在 1000 元以内,时间也可以控制在一周左右,这就勾起了我的创业兴趣。

最后,疫情这个外部环境深刻地影响着每个人,我们都需要去思考如何面对不确定性。一般来说,创新型创业是一件非常烧钱的事情,而物联网则先可以孵化一些小项目,用极低的成本完成前期的原型验证。

我是怎么学习课程的?

以前看到过一句话,我觉得说得挺好的:学习是个耗能的过程,所以想要效率更高,你就要尽量调用身体各个器官储备的能量一起来完成这件事情,包括五官、大脑和四肢。

记得当年我背英语单词那会儿,条件可比现在艰苦多了,因为音频资料获取途径不多,非常珍贵。我边读边写边思考,才实现了大二就通过大学英语六级的目标。

同样的道理,学习这门课程也得尽量调动身体储备的能量。我觉得学习是一个费力费神的事情,首先就要做好思想准备,否则你就把学习当成 kill time 的方式了。

我学习用的是土方法。因为如果太讲究方法,就会导致操作难度太高,很难长期坚持下去。知识的学习过程是一个“润物细无声”的过程,所以我们还是尽量采用相对自然的方式比较好。

  1. 第一遍对照文字听,熟悉文字内容。
  2. 做笔记,将要点记录下来。
  3. 盲听 3~4 遍,一般是通勤路上,比较方便。
  4. 跟这门课程的同学互动。

在互动的过程中,我会尽量抽空回答同学们的问题,知无不言,言无不尽。这样做会让知识更容易形成闭环,加深我自己对知识理解,并且还有机会意外获得同窗的“革命友谊”。

比如“mosquito”同学曾经提过一个问题:“能否将消息存储在数据库或者 redis 中?”我当时就明确地告诉他,有相关的插件。(不过这样的互动大部分都发生在微信交流群,课程留言区的相对少一点。)

我的一部分学习笔记

学习过程中遇到过什么有趣的经历?

古语云:“读万卷书不如行万里路,行万里路不如阅人无数。”

这个道理也可以用在现代职场。当你学会一些东西的时候,最好去跟面试官“对打”,打得过就赢得了一份工作,打不过也获得了一次深度沟通和交流的机会。毕竟翻到行业大佬牌子的机会不多呀,应该好好珍惜。

前段时间我去面试,发现面试官可能是极客时间铁粉,并且极有可能就是《物联网开发实战》这门课程的同学。他问了好几个问题,都是这门课讲过的。

比如,物联网跟互联网的区别是什么?

物联网 = 互联网 + 物(设备)。这是郭老师在第 1 讲探索物联网定义的时候说明的。

又比如,智能快递柜不能使用发布订阅的原因是什么?

因为关门指令和关门动作是分开的。郭老师在第 3 讲中介绍网络协议的时候解释过。

再比如,批处理跟流处理的区别?

批处理的关键点有离线数据、延迟、以 Mapreduce/Spark 为代表;流处理的关键点有实时数据、低延迟、以 Storm/Flink/Spark Streaming 为代表。这些知识,郭老师在第 11 讲解读数据处理框架的时候都详细说明过。

我发现面试官居然在帮我复习这门课程的知识,感觉特别亲切。虽然最后没有一起合作,但是这种经历还是蛮有趣的。传统意义上,面试只是为了找工作,而今天,它更像是一个跟行业专家深度交流与沟通的机会。

学习课程有什么收获?

我觉得到目前为止,自己学习这门课程的收获主要分为两个方面。

第一个方面是刷新概念

在学习课程之前,我就看过《图解物联网》这本书,对物联网建立了基本的整体认识。比如整个物联网可以分为 5 个环节,分别是设备、传感器、网络、物联网服务和数据分析。我觉得这种分法挺好的。

不过在这门课程中,郭老师把物联网的知识体系简化为三层,分别是设备层(传感器 + 网络),网络层(网络),应用层(物联网服务 + 数据分析),这样界定业务边界的时候就更方便了。

我原来以为,把物联网服务处理好就相当于把应用层搞定了。学习课程之后才发现,应用层边界可不只是物联网服务(准确地说,这个算物联网接入层 + 部分业务逻辑),还包括数据分析这块。意识到这一点之后,我大吃一惊,马上就去强迫自己更新数据分析的技能树了。

另外,我以前对物联网数据的理解也不够深刻。我会把数据分为三个阶段,分别是数据采集(数字化)、数据传输(网络化)和数据分析应用(智能化)。

而在这门课程中,郭老师分成了五个阶段,分别是数据源数据采集、数据传输、数据存储、数据处理和数据分析应用,其中数据分析应用还进一步细化成三个部分,数据存储,数据处理和数据应用。这样学习和实践的时候,就更能做到有的放矢了。

业内实践派也有一些更加接地气的分法,比如比较常见的“云端数”。所谓的云是物联网云(类似于阿里飞燕平台);端主要是设备端,有一些还会包括业务端;数则是指数据平台(大数据)。

这个分法则在更大尺度上界定了物联网各个部分的边界,也从一定程度上提炼了物联网生态最有价值的关键元素,数的提出更明确地确定了大数据在物联网生态的重要性,以及数据分析作为物联网全流程中必不可少的一环。在智慧系列项目里面,这种提法还是比较多的。

第二个方面是获得新知

我在原来的公司主要负责物联网平台这一块,所以对配网方面的知识不够了解。而在这门课程的第 2 讲中,郭老师把设备配网解释得很清楚,Wi-Fi 设备配网需要解决两个问题。

  1. 连上路由器(Wi-Fi 或 AP),实现数据上传和远程控制,也就是说,设备要获取到 Wi-Fi 热点的名称(SSID)和密码。
  2. 获取 Wi-Fi 设备的 MAC 地址,或者生产时预存的信息,并与用户账号一起上传服务器,完成绑定。

具体来说,有两种实现方式,一种是 smart config,另一种是设备热点。

我在负责物联网平台的应用和开发的时候,为了更好地辅助运营小伙伴决策以及我们研发人员对业务做监控,在日常开发当中,我们会采用埋点打日志的方式。

我们注意到,很多智能设备一旦下线,就长期处于失联状态。将智能设备连接上物联网云各个环节拆解后,我们发现配网过程的成功率非常低,甚至有些设备除了第一次是成功的,之后的配网就再也没有成功过。

在学习郭老师的课程后,我们知道了,除了 smart config 之外,还有设备热点配网和手机热点配网等方式。于是我们把配网方式从一开始选择的 smart config,换成了设备热点配网,从而在一定程度上改善了配网成功率。最终,我们在公司范围内推广了这个思路。

总结

从社会发展趋势来看,现在我们正处于互联网和物联网的过渡阶段,物联网很有可能会进一步成为新的网络基础设施,所以这门课程让我觉得非常有价值。

我在写这篇文章的时候,课程已经更新到第 22 讲,接近尾声,实战部分的内容悉数登场。目前,我已经完成了第一个产品场景,可以手机控制的智能电灯,并且接入了自己的物联网平台,真正实现了云端数一体化的目标。

当初我从做了 10 年的游戏行业转战物联网,就曾下定决心要“Make myself distinctive”,如今已经在物联网行业,自当努力奋斗。我相信天道酬勤,所有的付出都是值得的,不管是学知识,还是知识以外的其他内容。

在个人成长过程中,除了纵向地学习,建立自己的知识体系技能树之外,还需要横向地向同行学习,以技会友,相互切磋,补足或者加深自己在不同场景下的理解。即便同样是智能家居范畴,扫地机器人跟家用照明系统就完全不一样,技术不仅仅需要结合业务,更需要结合场景以形成深度认知。

最后,我想再分享孟子的一句话:“天降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。”

与诸君共勉!