物联网实战--平台篇之(一)架构设计

本项目的交流QQ群:701889554

物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html

物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html

一、平台简介

        物联网平台这个概念比较宽,大致可以分为两大类,一类是行业物联网平台,面对的政企客户,定制化程度比较高,例如智慧消防平台,需要跟现有业务做对接;一种是通用物联网平台,就像小米智能家居一样,用户就是普通个人,下载一个APP就能使用设备了。不管是哪种平台,它的核心底层功能都是承载设备的连接、管理和数据存储,是用户与设备的连接纽带。

        所谓平台,其实就是一个或多个运行在服务器的软件了,这个软件涉及的知识点和技术栈会比较多,以下是一个常规的物联网平台的架构图(来自IOT-DC3),仅供参考。

二、平台定位

        这里有一些开源的物联网组件和平台盘点 12 个物联网开源项目,yyds! - 知乎,总的来讲,这些平台的技术栈过多、设计思想类似、体系过于臃肿,看似什么都能干,但在实际项目中却很难达到理想效果,因为中间件过多,有时候一个数据可以延时好几秒,甚至中间件掉链子,无法到达终端,在定位问题时经常是踢皮球,整个开发体系沟通成本过高,这是目前很多物联网公司的通病。

        总的来讲,还是定位和设计思想的问题,很多公司在设计物联网平台时候心都很大,都是要包罗万象的,MQTT、Coap、LORA、OPC、BACNet、modbus什么协议都要支持,电力、消防、水务各个行业都要能应用,地图、3D、BIM、数字孪生哪个高端整哪个,到头来基本上是老板强推、一线骂娘。这一类的物联网平台往往是政策驱动的,而不是市场驱动的。

        在从事物联网行业期间,自己也一直在找有没有简单、实用、高可靠性的物联网平台,只需要基础的设备接入和管理功能,让我可以把心思放在用户需求分析、产品设备的定义和开发上。其实米家生态是一个比较合适的对象,只不过它更倾向于消费级的商业化产品,对接一个产品前后可能要花几千甚至几万的成本,还有很多协议需要遵守。结合学习的需求,最终觉得还是得自己设计一个平台软件,对标的就是米家这种类型的,针对个人用户,用户拿到设备后只需要简单添加就可以使用了。

三、架构设计

        上图是平台架构图,主要由五部分组成:设备端、MQTT服务器、用户端、数据服务器和应用服务器。其中,MQTT服务器是中心,负责数据的路由转发,其它各模块通过话题的定义进行交流。

        在设计目标中,简单和高可靠性是两个比较重要的指标,所以设备端和用户端(主要是手机APP)采用端到端的通讯,中间除了MQTT服务器做数据转发外没有其它中间件,设备发送的数据到手机端直接解析和显示,很大程度上也降低了延时,提升了体验感;另外,即使应用服务器和数据服务器都宕机了,短时间内也不会影响用户对设备的使用和操控。而在传统的物联网平台设计中,数据需要汇集到统一的中心进行处理,然后再转发到用户端,这个过程只要数据处理服务停止运行,用户就收不到数据了,而且在设备数量上升后,对服务器的压力也会变大,意味着需要升级硬件、增加很多的服务器成本。

        应用服务器主要是对账户、应用和设备进行管理,属于常规的、各个平台都会有的内容,其主要还是跟用户端进行交互;数据服务器的作用是存储设备数据,同时实时解析设备的数据包内是否包含紧急的报警信息,这样才能及时通知用户。

        那么,使用这么一个端到端平台对于物联网开发会有什么好处呢?这个话题得回到 “物联网” 三个字本身,首先得要有物,其次才是联网,物也就是产品,跟用户直接接触的东西,大家在买智能家居产品的时候应该都有这么一个感觉--设备才是我自己的,软件和联网等功能是附加体验,决定我买不买的主要因素还是设备本身的价格和功能,平台软件很难成为决定因素。但是,在现有的开发体系中,设备端往往没有很大的话语权,一切都是以平台为中心的,很多协议、功能都只能适应平台,这也导致了很多设备产品的定义和设计只能妥协,用户体验自然就下降了。平台用端到端的设计后,设备端和用户端的定义可以自行决定,平台方无需增加开发,降低了沟通成本,提升了设备端的自主权。这样说可能比较抽象,举个例子,比如一个温度传感器,要设置报警温度阈值,我现在用过的几个产品都是把这个阈值放在平台数据库内,平台根据设备上报的温度数据进行对比,超过阈值就进行报警推送,整体逻辑没什么问题,但是体验感和可靠性上是不太行的,首先设备多久上报一次数据?有的几秒,有的几分钟,如果上报周期太长导致报警延迟,可能会导致严重的后果。比如工厂化鸡舍,如果通风系统或者制冷设备故障,高密度养殖会导致温度迅速上升,如果没有及时预警处理,可能会对用户造成极大的损失。如果把这个阈值设置在设备内部,那温度检测都是毫秒级别的,基本上能在5秒内发出报警信息。这里只是大概举例,核心要说明的问题其实还是设备端跟平台端在协议对接上的交流成本是挺高的,两边的开发人员都是站在自己的角度考虑问题,容易发生矛盾。比如对于平台来讲协议如果用json这样的文本是最好的了,简单明了,但是对于设备端来说资源受限,一般采用二进制形式,而且对于采用4G的设备来说,流量也是个大问题。所以说,这就是采用端到端开发产品的好处了,设备端可以自定义协议内容,减少沟通成本。后面等这个平台软件开发完成后,我们就会不断地用这种模式去开发各式各样的硬件产品,效率极高。

四、开发规划

        依据上面的架构图,我们主要的工作量还是在应用服务器和用户端的对接开发,包含了帐号注册、登录,密码修改,子账户管理,应用管理,分组管理,设备管理,手机验证码,扫码添加,报警消息通知等等。对于APP的设计,我们还是参考米家APP,UI设计是技术人员的短板,还是直接模仿比较快,当然了,很多冗余的东西也会删除,毕竟人家是商业性的APP了,我们这个主要还是为了学习用的,下面放一张APP截图作为参考。

        在开发技术上,我们全部使用Qt进行开发,包括服务器相关的程序和手机APP,当然了只要你理解了技术原理和设计思想,那么你用Java和安卓开发都是可以的,不限具体的技术形式。

        接下来,每一篇文章都会对新的功能模块进行开发,开发完后上传,一步一步完成,沉浸式体验整个过程,让大家在学习过程中理解物联网整个体系的设计原理和开发思维,同时掌握实战性的开发技巧。

        最后,回答一个经常有人问的问题,很多物联网专业的同学看到自己要学的内容那么多、那么杂,瞬间失去了兴趣和方向,不自觉地灵魂拷问:物联网的出路在哪里?我个人的观点是三个方向:

1、纯粹做技术,那你把物联网各个环节中的某一个环节学精来就行了,比如嵌入式、硬件设计、后台开发、前端开发等等,选一个自己感兴趣的深入学习,然后早点去找个公司实习,积累经验,这样未来找工作的时候简历就很丰富了,竞争力也就强了;

2、市场销售,物联网销售还是需要有点技术底子的,至少表面功夫得学一学,跟客户交流这是基本功了,还要有比较好的新知识的吸收能力,比如让你去给客户推销NB烟感,客户问你电池多大容量的,一天发送几次,大概能用几年,电信和移动的啥区别,用的谁家模组,报警声音几分贝,这些问题常规的销售应该是搞不定的,更何况还有更深入的问题,比如电池仓库放太久没安装,钝化了怎么办?物联网设备的销售主要还是以量取胜,谈一单往往出货量是比较可观的,够你吃一阵子了。

3、市场发掘,这个要求你是复合型人才,创业型选手,既要懂技术,又要懂产业,深入了解某个产业中的痛点和刚需,并分析出产品如何设计才能更好地适应当前产业,让用户乐意买单,这里面产业、技术、需求、成本、管理、产品各个环节缺一不可,这也是未来物联网发展的一个新契机。就目前来讲,物联网有点不温不火,风头早已经不能跟人工智能和机器人相提并论了,甚至很多物联网企业都快倒闭了,不过这在起初就可以预知的,2018年后的那几年,虽然概念火热,但是参与其中会发现物联网技术并未解决太多生活中的刚需问题,更多的是为了KPI而推行的项目。所以,要想让物联网真正改变生活,还是很需要这样的复合型人才来填补产业与技术之间的鸿沟,让物联网真正的成为一个市场驱动型的产业,这样整个行业才有未来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络攻击日益猖獗,安全防护刻不容缓

“正在排队登录”、“账号登录异常”、“断线重连”......伴随着社交软件用户的一声声抱怨,某知名社交软件的服务器在更新上线2小时后,遭遇DDoS攻击,导致用户无法正常登录。在紧急维护几小时后,这款软件才恢复正常登录的情况。 这…

有哪些好用电脑端时间定时软件?桌面日程安排软件推荐 桌面备忘录

随着现代生活节奏的加快,人们对于时间管理和任务提醒的需求越来越大。为了满足这一需求,市场上涌现出了众多桌面便签备忘录软件,它们不仅可以帮助我们记录待办事项,还能定时提醒我们完成任务。在这篇文章中,我将为大家…

WebGIS面试题(第六期)-GeoServer

WebGIS面试题(第六期) 以下题目仅为部分题目,全部题目在公众号 {GISer世界} ,答案仅供参考!!! 因为本人之前做过相关项目用到了GeoServer,因此在简历上写了熟悉GeoServer。所以在相关面试中都有问到,所以我…

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

Root Motion动画与普通动画的区别 普通动画:动画文件里记录的是物体的绝对坐标和方向,在播放动画时,Unity会根据Animation中记录的值,直接修改游戏对象的坐标和方向,每一帧的坐标和方向都是通过插值计算得出来的&…

Int4:Lucene 中的更多标量量化

作者:来自 Elastic Benjamin Trent, Thomas Veasey 在 Lucene 中引入 Int4 量化 在之前的博客中,我们全面介绍了 Lucene 中标量量化的实现。 我们还探索了两种具体的量化优化。 现在我们遇到了一个问题:int4 量化在 Lucene 中是如何工作的以…

微服务之并行与分布式计算

一、概述 1.1集中式系统vs分布式系统 集中式系统 集中式系统完全依赖于一台大型的中心计算机的处理能力,这台中心计算机称为主机(Host 或 mainframe ),与中心计算机相连的终端设备具有各不相同非常低的计算能力。实际上大多数终…

【ARM 裸机】BSP 工程管理

回顾一下上一节:【ARM 裸机】NXP 官方 SDK 使用,我们发现工程文件夹里面各种文件非常凌乱; 那么为了模块化整理代码,使得同一个属性的文件存放在同一个目录里面,所以学习 BSP 工程管理非常有必要。 1、准备工作 新建…

校车车载4G视频智能监控系统方案

一、项目背景 随着社会的快速发展,校车安全问题日益受到人们的关注。为了提高校车运营的安全性,保障学生的生命安全,我们提出了一套校车车载4G视频智能监控系统方案。该系统能够实时监控校车内部和外部环境,及时发现并处理潜在的…

selenium 自动化测试课上实操指南1——百度搜索

1.环境准备 下面的所有资源可以从超星班级资料中下载,机房的同学在收到的文件夹中可以找到文件 非本校同学,免费加入学银在线课程,就可以在资料 根目录 > 02 课件新 > week09 web自动化测试02 里下载本次实操资料 1)安…

【打工日常】云原生之搭建私有化web在线聊天软件LumenIM

一、LumenIM介绍 1.LumenIM简介 Lumen IM 是一个网页版在线聊天项目,前端使用 Naive UI Vue3,后端采用 GO 开发。 2.LumenIM功能 基于 WebSocket 服务做消息即时推送 支持私聊及群聊 支持多种聊天消息类型 例如:文本、代码块、图片及其它类型文件&…

15.接口自动化学习-Mock(挡板/测试桩)

场景: 新需求还未开发时,使用mock提早介入测试,等后边开发后,进行调试 三方接口返回效率低,使用mock技术走通流程 1.mock方式 (1)如果会写django或flask,可以写简单对应的代码 (…

Mysql--基础知识点--0.1--脏读、不可重复读、幻读

1 脏读、不可重复读、幻读 1.1 脏读 如果一个事务读到了另一个事务已修改且未提交的数据,则发生了脏读现象。 1.2 不可重复读 在一个事务里面多次读取同一个数据,若前后两次读到的数据不一致,则发生不可重复读现象。 1.3 幻读 在一个…

redis7 for windows的安装教程

本篇博客主要介绍redis7的windows版本下的安装教程 1.redis介绍 Redis(Remote Dictionary Server)是一个开源的,基于内存的数据结构存储系统,可用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希表、列…

【软考高项】二十六、范围管理基础内容

一、管理基础 产品范围和项目范围 产品范围强调结果,项目范围强调结果 管理的新实践 :需求一直是项目管理的关注重点,需求管理过程结束于需求关闭,即把产品、服务或成果移交给接收方,以便长期测量、监控、实现并维持收…

three.js 学习笔记 | 光线投射技术 - 包围盒(碰撞检测)

文章目录 three.js 学习笔记光线投射技术实现3D场景交互事件 THREE.Raycaster坐标系的转换案例:选中的模型变为红色 包围盒Box3 - 碰撞检测AABB包围盒辅助器Box3Helper案例1:创建AABB包围盒/包围球computeBoundingBox与boundingBox 搭配使用,…

vivado Aurora 8B/10B IP核(1)

Aurora 8B/10B IP 支持 Kintex -7, Virtex -7 FPGA GTP 和 GTH 收发器,Artix -7 FPGA GTP 收发器, Zynq -7000 GTP and GTP 收发器。Aurora 8B/10B IP core 可以工作于单工或者全双工模式。IP CODE的使用也非常简单,支持 AMBA总线的 AXI4-Stream 协议。…

字符串函数及其模拟实现

目录 strlen函数介绍模拟实现 strcpy函数介绍模拟实现 strcat函数介绍模拟实现 strcmp函数介绍模拟实现 strncpy函数介绍模拟实现 strncat函数介绍模拟实现 strncmp函数介绍模拟实现 strtokstrstr函数介绍模拟实现 strerrorperror strlen 函数介绍 函数介绍: 字符串…

Leetcode 17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出:[“a…

React真的好难用

我发现React就像个宗教一样,网络上总有一群信徒。信徒:React天下第一,谁也不能说他不好。 网络上大佬对React的评价一般有几类: React跟Vue比就是手动档和自动档的区别,高手都开手动档。—— 就一个破打工的&#xf…

cJSON的使用

文章目录 一、CJSON初识二、CJSON解析器基础三、CJSON解析数据JSON解析基础CJSON解析数组数据CJSON解析嵌套数据 五、创建JSON数据 一、CJSON初识 JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在网络之间传输数据。它是一种文本格式&#…