当前位置: 首页 > 科技观察

从程序员的角度,来拆解物联网系统中的开发工作

时间:2023-03-20 02:13:14 科技观察

从程序员的角度拆解IoT系统中的开发工作随着5G的快速普及,不知道能否让这个领域重新起死回生。但不管怎么说,很多大学都已经确定了物联网专业。前几天有大一新生朋友私信我:进入物联网专业已经快一年了,但不知道以后要做什么?在这篇文章中,我们将从开发者的角度来简单了解一下物联网。这方面用了哪些技术栈,有哪些开发工作。IoT系统此图从开发人员的角度显示了IoT系统中的各种角色,包括它们之间的通信。如果从软件开发岗位的角度来划分这些模块,本系统主要包括:前后端开发:负责物联网平台和业务应用的开发;嵌入式软件:主要是针对设备端的开发,其中的一部分可以根据所使用的技术(或硬件模块)的不同分为很多不同的子领域;移动端开发:AndroidAPP、iOSAPP、H5小程序,以及目前的鸿蒙系统APP。设备端开发这里描述的设备还是属于比较狭隘的范畴,只包括具有通信功能的物理硬件实体。从广义的物联网来看,任何物品,只要能联网,都可以称为设备,也可以称为物。比如:给一件衣服贴上电子标签,也是物联网的一个小分子。这里,我们还是用传统意义上的设备来解释,比如:智能路灯、智能手表、智能家居中的门磁和报警器等。把设备端的发展归类一下,从中划分更清晰沟通方式的角度。一个设备要想接入网络,就必须具备通信功能,包括:有线通信和无线通信。在一些对通信质量要求较高的传统行业或场景中,部署有线网络是比较常见的,比如一些工业场景。对于一些民用领域,大部分还是以无线通信为主。1、不需要网关的设备使用2G/3G/4G基站进行数据传输。产品形式为:即单片机+通讯模块的方式。通讯模组包括:GPRS模组、4G模组、NB-IoT等。开发这类产品时,单片机负责产品的功能部分;通信模块负责通信部分。单片机与通信模块之间的通信大多是通过硬件上的UART口进行,协议上可以使用AT命令或者其他一些专有协议。近年来,相当流行在传统的消费电子产品中加入通信模块,使产品实现连接互联网的功能。这类产品的软件开发工作与一般单片机的开发无异。无非是通过网络添加一些需要上报的数据,或者接收来自网络的控制指令。只要熟悉使用的通信协议即可。以上产品形态需要重新设计硬件,更适合从零开始的产品开发。那么对于那些已有的产品,如果你想接入物联网平台,又不想重新设计,怎么办呢?有需求就会有供应!比如:一些扫地机、吸尘器的厂家,因为找不到其他可以创新突破的点,所以开始涉足,陆续加入联网功能。他们直接给产品加个ESP8266或者ESP32模块,立马升级为智能产品,太棒了。当然,价格也很高!ESP8266或ESP32与一般的通信模块有点不同:它是一个完整的单片机,??但它们的主要目的是解决通信问题,而不是一般的功能控制。2.需要网关的设备一提到智能家居,大多数人可能会想到ZigBee这个词,它是一种用于局域网的无线通信协议。2005年前后开始出现在智能家居中,与ZigBee类似的无线通信协议有:ZWave、RF433、BLE等,它们的功能相似:都是让多个设备组成一个网络,在一个节点之间传输数据。多跳的方式来达到通信的目的。这些数据最终会聚合到一个叫做网关的设备上,然后与云端的服务器进行通信。此类产品的开发包括:网关开发和设备开发。网关开发稍微复杂一些。从功能上看,网关需要实现:设备管理(与物联网平台的设备管理不是同一个概念);规则引擎(实现断网场景联动等功能);通信协议转换(将物理网络平台的通信协议转换为设备私有协议);有些网关还集成了不同的无线通信协议模块,如:将ZigBee、BLE、红外等功能集成到一个网关中,使不同通信方式的设备可以共存于一个系统中。这时候网关要做更多的工作:上行链路(连接云平台):需要实现统一的协议,也就是说云平台不关心下面是什么无线通信技术,云平台只需要将每个设备以统一的数据格式表示即可;下行(连接到设备):协议转换,将云平台发送的统一数据格式转换成不同无线通信协议特有的数据格式;devicedevelopment工作比较纯粹,只需要和某种无线协议打交道。此类设备的开发一般使用相应的通信模块,并提供底层协议栈。开发者需要做的工作主要是熟悉应用层的通信协议,完成指令的解析和数据的上报。3.WiFi设备该品类中最常见的产品是各种品牌的网络摄像机(IPCamera),如小米、360、萤石等。如果相机作为单品使用,只要将家里的WiFiSSID和密码配置到相机中,就可以使用官方APP远程查看实时图像。如果摄像头集成到智能家居系统中,需要进行二次开发。摄像头厂商一般都会提供SDK。开发者需要做的是:调用SDK中的API函数,获取实时图像,发送命令控制摄像头的旋转。这里有一个底层技术非常有意思:P2P网络穿透。我们在购买网络摄像机的时候,不可能有独立的IP地址。也就是说:其他设备(手机)不能通过IP:PORT编程直接连接到相机。但为了实时图像的传输质量和减轻服务器的转发压力,手机最好直接与摄像头建立TCP通信。这时,P2P网络的渗透为这种需求提供了可能。早期,深圳大量摄像头厂商使用了TUTK公司的P2P网络穿透服务。在P2PMaster(即服务器)的协助下,实现移动端与摄像头之间的网络穿透,直接建立TCP连接。物联网平台开发物联网平台,作为连接业务应用和设备的中间层,屏蔽各种复杂的设备接口,实现设备的快速访问。目前比较大的几家巨头:亚马逊的AWS平台、阿里云、腾讯、华为的IoT平台。上述公司的物联网平台只是其云平台的一部分。他们的目标是提供一个通用的通信标准和SDK,快速接入各种硬件设备,通过连接的设备数量、通信数据的流量、提供各种业务级服务来赚钱。此外,还有一些次级公司专门为物联网领域开发了自己的平台。由于知名度不高,只能以合作开发项目的形式吸引硬件设备的接入。从开发的角度来看,物联网平台的开发技术栈主要是后台开发。由于本人对这部分技术栈不熟悉,就不深入讨论了。物联网平台上最有价值的东西就是数据。如何使用这些数据是业务应用程序的问题。业务应用开发所谓业务应用,简单来说就是通过调用物联网平台提供的API,实现设备管理、数据上报、命令下发等业务场景。设备管理在设备接入的基础上,提供更丰富、更完善的设备管理能力,简化海量设备管理的复杂性,提高管理效率。物联网平台的设备和数据可以衍生出各种业务应用场景,需要根据实际系统功能按需开发。例如:智慧城市、智慧照明、智慧工业、车联网等行业应用。涉及到的技术栈有:前端开发和后端开发。