从零开始搭建物联网系统极客先锋

在一个平常的不能再平常的周末下午,几个小伙伴聚在了一起,一起畅想“万物互联”的物联网未来。小伙伴中有硬件开发者、嵌入式开发者、软件开发者;有互联网公司的全栈工程师、也有核电厂的工控系统维护者、还有路由器厂商的wifi协议开发者。我们发现,世面上没有开源且可商用的物联网平台或系统。这里的可商用,不是搭建几个demo把硬件连上网、app操作两下这么简单!

有以下几点都是必须着重考虑的:

必须有完备的硬件、嵌入式、云端一体的协议及架构设计

能够实现真正的硬件智能化,能够基于数据学习并自主工作

必须有很高的性能、稳定性及扩展性

必须能够适应成千上万种不同资源的硬件设备,从PC到手机、从计算资源极其有限的单片机到网络带宽极其有限的控制器

必须能适应不同的网络场景,包括有线、wifi、3g/4g、gprs等

必须有很可靠的安全性

需要尽可能降低研发和生产成本

在媒体和科技工作者都抱着物联网是未来的观点并翘首观望时,我们决定做点什么,而不是当看客!这个平常的不能再平常的周末下午,也许对我们不太平凡。

我们决定启动全套可商用物联网系统的设计和研发,并在不久的将来,全部开源。

整体设计

一个物联网系统涉及硬件、软件、云端、app各个环节,必须从整体进行顶层设计,只倚重某个单一的环节进行设计的系统都不具备良好的适用性和扩展性。我们在设计时为了避免这种情况,使系统能够适应最广泛的物联网场景(甚至包括工业场景),每次的架构设计讨论都是所有团队成员参与。大体的系统架构如下:

协议

在一个物联网系统中,协议是串通上下层的关键纽带。在物联网系统中,我们将协议分为两大层:通信层和业务层。

通信层基本上是传统互联网的网络基础设施,负责将数据在物联网系统节点中的传输

业务层分为两层,底层是负责物联网场景下数据交换格式的规范,上层是物联网场景需要具体传输的业务数据规范。

文中总结如下:

互联网中使用较多的HTTP、websocket以及XMPP等协议,在设计时都是根据互联网应用场景设计的,虽然很多厂商把他们应用在物联网系统中,但是必然会水土不服,这些协议的通病就是根本无法适用物联网设备的多样性,无法适用很多物联网设备对低功耗、低成本的需求,难以在极低资源的物联网设备中运用。

COAP协议针对资源受限的嵌入式设备设计,但由于很多物联网设备隐藏在局域网内部,COAP设备作为服务器无法被外部设备寻址,在ipv6没有普及之前,coap只能适用于局域网内部(如wifi)通信,这也很大限制了它的适用范围。

MQTT在协议设计时就考虑到不同设备的计算性能的差异,所以所有的协议都是采用二进制格式编解码,并且编解码格式都非常易于开发和实现。最小的数据包只有2个字节,对于低功耗低速网络也有很好的适应性。有非常完善的QOS机制,根据业务场景可以选择最多一次、至少一次、刚好一次三种消息送达模式。运行在TCP协议之上,同时支持TLS(TCP+SSL)协议,并且由于所有数据通信都经过云端,安全性得到了较好地保障。

在业务层的上层(business层),目前的物联网系统都是各自针对自己的业务场景设计协议规范。有没有可能根据物联网场景统一业务数据的规范呢?我们认为是可行的,并且也是必要的。如果把通信协议比作声音,光有通信协议,任何人之间还是无法交流。只有统一语言,大家才能顺畅沟通。所以我们抽象出物联网节点中传感器和执行器的业务场景,并设计出含有物联网业务数据语义的业务层协议。目前已经将业务层协议开源,希望对广大爱好者和从业者带来一定参考价值。

云端平台

互联网时代的用户上网终端主要是PC和手机等设备,可以想象,物联网时代,上网终端会呈多样化、海量化趋势。保守估计每人拥有数十套联网设备,数据规模必然也是几何倍增长。所以物联网云端平台注定是一个大规模的海量分布式系统。

目前很多爱好者或者厂商通过搭建简单的web系统(如php、nodejs、python实现的web接口)可以实现设备的联网,但是可以想象,在真正的商用场景中,稳定性、性能、扩展性都必然遭受冲击,无法应对。

在进行技术选型和架构设计时,我们也综合考虑以上因素进行设计和实现:

采用go语言作为主要开发语言。go语言有着简洁的语法,并且能够很方便地进行高并发程序的开发,在高性能云计算系统的开发中有着得天独厚的优势。

采用microservice分布式架构。microservice架构能够构建出更稳定、扩展性更好的分布式系统,也是目前分布式系统中最流行的架构方式。

使用docker降低运维成本。docker能够方便地对系统就行升级和出错回滚,保证了系统发布时的稳定性。

对外接口采用REST风格进行设计。REST风格的接口便于升级和兼容,并拥有非常易于理解的语义,降低开发者的学习门槛。

多副本部署。任何服务模块我们都保证同时至少有两个运行实例,并根据服务发现机制自动进行负载和调度,以增加系统可用性。

大体的云端架构如下图

目前我们的系统已经发布到0.8.0版本,后续会在安装和运维的便捷性上进行优化,并计划在1.0版本时开源发布。

嵌入式

物联网硬件的嵌入式软件除了传统部分,必须加入联网逻辑以及传感器、控制器的管理。为了提高开发效率、方便复用,我们设计并开发了轻量级的物联网嵌入式开发框架,并对物联网业务进行了抽象,以便移植到不同的硬件平台。我们希望做到的是,在不需要更改任何业务层代码的情况下,一个物联网嵌入式应用可以在不同的硬件平台运行。

当前很多大企业(华为、惠普、google等)都纷纷推出了物联网操作系统,后续物联网领域会出现多种操作系统共存的局面。不同的操作系统能运行的最低系统资源以及具体应用场景都不尽相同,但我们相信,物联网的上层业务是通用的,这也是我们设计物联网嵌入式开发框架的原因。

安全

近些日子,各种厂商的物联网设备纷纷传出被黑的消息。从TCL到特斯拉,黑客都成功实现破解和随意操控。和互联网时代一样,安全在物联网目前的早期阶段注定是容易被忽略的问题。为此我们也在设计系统时也没有掉以轻心:

所有接入层通信都采用tls进行加密,包括对app、业务服务器的开放接口。

用户、设备关键信息进行加密保存

针对设备有完善的用户鉴权机制

针对互联网安全场景的其他安全措施

安全不是一朝一夕的事情,需要从系统开始构建时就考虑,并不断完善安全手段和规则。

开发板

为什么推出开发板?我们认为这是一种互相学习、交流及沉淀技术的工具,希望更多的爱好者能一起做出好产品。

以开源之名

光阴荏苒,白驹过隙。一路走来,我们执着地将所有设计慢慢付诸实现,为未来的物联网技术贡献自己的力量。物联网技术涉及的方向众多,我们的力量毕竟是有限的,这也是我们从一开始就以开源形式开发项目的原因。

THE END
1.物联网系统的设计.pdf物联网系统的设计.pdf,3.2 系统的体系结构分析 3.2.1 体系结构框架设计 调度控制中心 业务应用层 数据存储中心 数据分析中心 防火墙 专家系统 监控终端 光纤 环网交换机 环网交换机 矿用网络交换机 矿用网络交换机 矿用网络交换机 Femtocell 基站 网络通讯层 Femtocell 基站https://max.book118.com/html/2024/0129/5003110041011101.shtm
2.物联网系统综合设计(实践).docx该【物联网系统综合设计(实践) 】是由【世界末末日】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【物联网系统综合设计(实践) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印...https://www.taodocs.com/p-848903221.html
3.嵌入式物联网设计水稻田智能灌溉系统实现当前设计了一款基于STM32的水稻田智能灌溉系统。该系统能够通过水位传感器和温度传感器实时监测稻田的水位和水温,并根据设定的阈值自动控制水泵的开关,实现自动灌溉。同时,通过NBIOT模块将实时数据上传到华为云物联网云平台,用户可以通过手机APP远程监控和控制设备的运行,实现远程管理。相当于直接将水稻田搬到了云端,后期还...https://developer.aliyun.com/article/1451315
4.《物联网系统架构设计与边缘计算(原书第2版)》([美]佩里·利...当当网图书频道在线销售正版《物联网系统架构设计与边缘计算(原书第2版)》,作者:[美]佩里·利(Perry Lea),出版社:机械工业出版社。最新《物联网系统架构设计与边缘计算(原书第2版)》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购《物联网系统架http://product.dangdang.com/29272571.html
1.物联网工程专业介绍广东科技学院(2)能运用信息获取、处理的基本理论和方法,解决工业领域物联网系统设计、集成、应用及物联网系统的计算机模拟。 (3)能运用物联网基本技术和自学能力,解决物联网领域所需要的电路原理图设计、分析、运算、PCB设计、现代数字系统设计、系统和设备的实验、测试、表达等问题。 https://www.gdust.edu.cn/jsjx/jsjx/20170515/73.html
2.系统物联网的方案及功能设计物联网系统设计1.3.4 自适应天气运行的设计方案 1.4.5 代码实现 1、使用心知天气数据服务的准备工作 2、ESP8266获取并解析心知天气数据 3、自适应天气运行+远程监控代码 物联网是通过ESP8266nodeMCU来实现WiFi联网的,本系统是采用Arduino IDE来对ESP8266进行开发,因此本章的代码仅适用于Arduino IDE上。 https://blog.csdn.net/Dkkkkk20/article/details/132452233
3.物联网平台系统的设计与实现【摘要】:目前,随着物联网领域技术的快速发展,不同需求的物联网平台应运而生,物联网技术对人类的生产及生活方法的影响越来越大,使得物联网平台的建设逐渐成为当前热点课题。因此本课题通过设计了一套农业物联网平台,实现农业物联网的远程采集、远程控制、数据可视化、智能化处理等功能。同时,本文所搭建的多功能一...https://cdmd.cnki.com.cn/Article/CDMD-10590-1020659963.htm
4.智慧消防系统消防物联网系统智慧消防物联网监管平台所以建立消防物联网管理系统,对于加大、加强消防管理手段和力度,提高各城市火灾预防能力,争取宝贵时间迅速出警,最大限度的保障生命财产的安全具有十分重要和现实的意义。 一、系统设计依据 《物联网技术框架与标准体系》(国家标准工作组2010); 《信息系统工程造价指导书》2008版;城市消防远程监控系统技术规范(GB50440-...http://119.gdliontech.cn/news/268.html
5.开源IOT物联网系统设计方案及源码漫云科技所属分类:中国商务服务网/APP开发 开源IOT-物联网系统设计方案及源码-漫云科技-开发公司成品开发现成案例的文档下载:PDFDOCTXT 关于河南漫云科技有限公司商铺首页|更多产品|联系方式|黄页介绍 成立日期2019年07月08日 法定代表人张磊 注册资本1000 主营产品元宇宙系统开发、元宇宙源码、NFT数字藏品软件开发,nft智能合约...https://product.11467.com/info/17449283.htm
6.传感器在物联网嵌入式系统设计中的作用为设计找到正确的传感器并不容易。但,这是普通系统与顶级系统之间的区别。通过智能传感器的选择和集成,确实具有挑战性。在本文将能了解工业物联网战略的传感器类型、好处、挑战以及未来趋势。 在设计高效、有效的嵌入式物联网系统时,许多人都摸不着头脑。传感器在物联网嵌入式系统设计中是一个至关重要的方面,但往往...https://www.51cto.com/article/763795.html
7.共享单车IOT物联网系统是怎么设计的?腾讯云开发者社区共享单车IOT物联网系统是怎么设计的? 前言 物联网(IOT)的概念很早就有了,只是在共享单车普及之前物联网并不被多数人所熟知,因此听起来很神秘。今天文章的主题就和大家一起聊一聊关于物联网(IOT)相关的话题,并从技术的角度解析下大家每天会使用到的共享单车在系统技术层面的运行原理,希望能够给大家的生活带来点...https://cloud.tencent.com/developer/article/1478103
8.物联网技术体系(精选十篇)物联网体系结构主要研究其组成部件以及这些部件之间的关系,按研究者关心的角度不同,可以划分不同类型的体系结构。目前,物联网还没有一个广泛认同的体系结构,最具代表性的是欧美支持的EPCGIobal“物联网”体系架构日本的Ubiquitous ID(UID)物联网系统,IBM提出了8层物联网技术支持开放架构,如图1所示。物联网基本应...https://www.360wenmi.com/f/cnkey9tajehx.html
9.小型物联网系统——家居网关设计电路方案深圳市智物通讯科技有限公司 255 09/20 09:27方案 物联网毕设-智能药箱(STM32+APP+语音播报) 星之援工作室 751 09/18 08:54方案 基于STM32的温室大棚环境检测及自动浇灌系统设计 Svan. 2328 09/04 08:48方案 基于Arduino Uno R3的带APP小型智慧家居 ...https://www.cirmall.com/circuit/6124/