当前位置: 首页 > article >正文

物联网基础概念

入行物联网两年半,想写点东西记录踩过的坑,能让自己反省的同时,也希望能帮到其他小伙伴。
本人仍是小白,请看客朋友谨慎参考。另,本人主要从事智慧用电和智慧医疗行业,其他行业不一定有参考性
以下所有内容均是从物联网平台设计的角度出发,并非单纯从物联网概念考虑。

一、物联网平台架构

1.1 感知层

  作为物联网的基石,物联网设备是至关重要的,一切数据均来自于此。比如:有一个温湿度设备,可以采集机房温湿度。有一块电表,可以采集电压、电流、用电量等。
  如果按照用途或者行业,设备有不计其数。如果按照采集类型来分,物联网设备可以分为:边缘网关、网关子设备、独立设备

1.1.1 边缘网关

  物联网设备采集数据的方式有很多(有很多种协议),有些协议还是召读式(服务端发送指令,设备回复响应数据),有些设备甚至只能采集数据,不能把数据上传到服务端。非常不方便。
  边缘网关的出现可以完美的解决这个问题,他可以适配很多种常见协议,能简化数据采集和服务端接收的工作量。只需要把各种物联网设备接到边缘网关上,就能实现统一格式(协议)上报数据。

  边缘网关的工作方式,可以理解为一个功能强大的播放器,无论你是mp4、avi、rtsp、rtmp还是别的视频,都能通过播放器播放。我们只需要学会操作播放器,不需要去研究具体的视频方式。

  • 边缘网关的作用远不止采集不同协议这么简单,感兴趣的可以自行百度。不过要根据公司选购的网关设计系统,有些公司采购的网关很便宜,功能也很弱。
  • DTU(数据终端单元)严格意义不算是边缘网关,但是他的作用在很多情况下,可以看作简化版的边缘网关。

1.1.2 网关子设备

  网关子设备就是网关下连接的设备,可能是原始的设备,也可能是原始设备的转换设备,比如DTU。这个其实是不需要专门去了解的,但是系统设计的时候肯定是要录好的,毕竟客户肯定是需要具体知道哪个设备产生了报警。

1.1.3 独立设备

  某些设备具有独立上传数据的功能,比如某些智慧电表可以直接通过某类协议上传。

1.2 网络层

  有道是十鸟在林,不如一鸟在手。再厉害的设备,如果不能把数据传输到服务端,都是没有意义的。对于开发者而言,我们需要不需要关注设备的通讯协议,只需要关注设备的传输协议即可
  按照服务端的技术分类,我一般把传输协议分为:MQTT、TCP、UDP、HTTP

以上分类为个人主观划分,严格意义上MQTT也属于TCP,不过我们一般都是分开处理,所以就分开写了。
另外Modbus、IEC104等主召协议,我们一般都用网关处理,很少单独少传,后面有机会单独介绍。

1.3 数据层

  我们一般把这层称为数据中心,专门负责数据接收、数据处理、数据清洗、数据转换、数据入库等功能。

1.4 业务层

  这个就比较简单了,基本上就是对数据的应用,比如展示设备数据、报警、形成报表等。

二、物联网数据分类

我们公司是做用电起家的,所以我们对数据的分类一般也已用电的方式来的,此概念不具有权威性,但是比较好区分,仅供参考。

2.1 遥测

  这类数据是最常见的,是设备的数值量参数,比如:温度、湿度、电流、电压。

2.2 遥信

  状态信号类参数,比如:开关、烟感、水浸、门禁,只要是存在分合闸、报警不报警这样的状态变化,都属于遥信。

2.3 遥脉

  主要是用来代表累加类参数,比如:用电量、用水量、用气量,这类累加能耗的数据。

三、物联网告警

3.1 通讯告警

  记录设备上线、离线记录。我们一般会分为两种:及时上报上下线信号、设备长时间不上传数据判断离线(设备上传数据为上线)。

3.1.1 设备及时上报上下线信号

  这种非常好理解,无论是MQTT还是通过Netty构建TCP、UDP服务端,当设备上电、断电等情况都会上报信号,只要记录下记录就行。

3.1.2 设备长时间不上传数据判断离线

  希望各位小伙伴在设计物联网系统时,一定要考虑到这种方式,非常实用。举两三个场景例子:①主召类设备没有上下线信号;②某些设备(尤其是MQTT协议的设备)运行长时间,会出现自动重启的情况(会在几秒类重新一次离线和一次上线),系统内就会出现两条报警,没问题,但是客户可能会质疑设备的稳定性;③某些设备长时间运行,会出现卡死情况,比如设备上传了上线信号,但是就是不上报数据,重启后能正常上传。这个时候不通过时间来判断,就不能及时发现设备出现问题。

判断离线的时间最好通过设备上传间隔来定,比如设备每30秒上传一次数据,连续300秒未上传数据,就能判定离线。

3.2 越限告警

  通常我们会为遥测至设置限值,建议最好是设置两级:上上限、上限、下下限、下限
  举例一个实际场景:机房温度一般建议恒温在25-30℃,当室内温度达到55℃左右,就会对机房服务器运行造成影响。那么我们的限值肯定是不能设置到55℃的,这样起不到预警作用。
  所以,如果我们把上限设置到40℃,上上限设置到50℃,当达到40℃时就会报警,提醒注意。到50℃时就是非常危险了。

3.3 变位告警

  变位告警主要是针对遥信数据,比如开关分闸、烟感报警,这些都是非常危险的情况。

相关文章:

物联网基础概念

入行物联网两年半,想写点东西记录踩过的坑,能让自己反省的同时,也希望能帮到其他小伙伴。 本人仍是小白,请看客朋友谨慎参考。另,本人主要从事智慧用电和智慧医疗行业,其他行业不一定有参考性。 以下所有内…...

Linux线程同步实战:多线程程序的同步与调度

个人主页:chian-ocean 文章专栏-Linux Linux线程同步实战:多线程程序的同步与调度 个人主页:chian-ocean文章专栏-Linux 前言:为什么要实现线程同步线程饥饿(Thread Starvation)示例:抢票问题 …...

【MySQL】事务及隔离性

目录 一、什么是事务 (一)概念 (二)事务的四大属性 (三)事务的作用 (四)事务的提交方式 二、事务的启动、回滚与提交 (一)事务的启动、回滚与提交 &am…...

Leetcode 3566. Partition Array into Two Equal Product Subsets

Leetcode 3566. Partition Array into Two Equal Product Subsets 1. 解题思路2. 代码实现 题目链接:3566. Partition Array into Two Equal Product Subsets 1. 解题思路 这一题我的实现还是比较暴力的,首先显而易见的,若要满足题目要求&…...

yolo目标检测助手:具有模型预测、图像标注功能

在人工智能浪潮席卷各行各业的今天,计算机视觉模型(如 YOLO)已成为目标检测领域的标杆。然而,模型的强大能力需要直观的界面和便捷的工具才能充分发挥其演示、验证与迭代优化的价值。为此,我开发了一款基于 WPF 的桌面…...

传统数据表设计与Prompt驱动设计的范式对比:以NBA投篮数据表为例

引言:数据表设计方法的演进 在数据库设计领域,传统的数据表设计方法与新兴的Prompt驱动设计方法代表了两种截然不同的思维方式。本文将以NBA赛季投篮数据表(shots)的设计为例,深入探讨这两种方法的差异、优劣及适用场景。随着AI技术在数据领…...

2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组(国赛)解题报告 | 科学家

前言 题解 2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组&#xff08;国赛&#xff09;。 最后一题还考验能力&#xff0c;需要找到合适的剪枝。 RC-v1 智能管家 分值: 20分 签到题&#xff0c;map的简单实用 #include <bits/stdc.h>using namespace std;int…...

WIN11 Docker Desktop 安装问题解决

windows version 打开windows 命令行&#xff0c;执行 ver显示 Microsoft Windows [版本 10.0.26100.4061]安装docker desktop 后&#xff0c;启动出问题&#xff0c;可以按下面步骤解决 安装 virtual machine plateform 开始 —》 控制面板 ----》程序 ----》启动或关闭w…...

网站服务器出现异常的原因是什么?

网站时企业和个人用户进行提供信息和服务的重要平台&#xff0c;随着时间的推移&#xff0c;网站服务器出现异常情况也是常见的问题之一&#xff0c;这可能会导致网站无法正常访问或者是运行缓慢&#xff0c;会严重影响到用户的体验感&#xff0c;本文就来介绍一下网站服务器出…...

Python实例题:Python3实现图片转彩色字符

目录 Python实例题 题目 代码实现 实现原理 图像预处理&#xff1a; 灰度值计算&#xff1a; 字符映射&#xff1a; 彩色输出&#xff1a; 关键代码解析 1. 字符映射和灰度计算 2. 图像模式输出 3. 命令行参数处理 使用说明 基本用法&#xff08;终端输出&#x…...

同一机器下通过HTTP域名访问其他服务器进程返回504问题记录

我这边项目的服务器有好几个类型节点&#xff0c;每个节点为一个进程&#xff0c;不同节点间通过HTTP来通讯&#xff0c;当前这几个类型的节点都部署在同一台机器上&#xff0c;然后我再测试某个节点到另一个节点的http通讯时&#xff0c;发现一个奇怪的现象&#xff1a; 1. 我…...

基于物联网(IoT)的电动汽车(EVs)智能诊断

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 做到欲望极简&#xff0c;了解自己的真实欲望&#xff0c;不受外在潮流的影响&#xff0c;不盲从&#x…...

JDBC+HTML+AJAX实现登陆和单表的CRUD

JDBCHTMLAJAX实现登陆和单表的CRUD 导入maven依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio…...

Leetcode 3568. Minimum Moves to Clean the Classroom

Leetcode 3568. Minimum Moves to Clean the Classroom 1. 解题思路2. 代码实现 题目链接&#xff1a;3568. Minimum Moves to Clean the Classroom 1. 解题思路 这一题我的核心思路就是广度优先遍历遍历剪枝。 显然&#xff0c;我们可以给出一个广度优先遍历来给出所有可能…...

Kafka多线程Consumer

Apache Kafka作为一款分布式流处理平台&#xff0c;以其高吞吐量和可扩展性在大数据处理领域占据了重要地位。在实际应用中&#xff0c;为了提升数据处理的效率和灵活性&#xff0c;我们常常需要采用多线程的方式来消费Kafka中的数据。本文将通过一个案例分析&#xff0c;详细探…...

从零开始的git学习

基本概念&#xff1a;修改记录 1、每个修改记录都有对应的id 2、当发现修改有问题时&#xff0c;可以进行回滚操作。 3、回滚的本质是一次新的更新以复原修改。但是如果不是针对最新记录进行回滚&#xff0c;会出现冲突。 这里需要举例说明 基本概念&#xff1a;分支 1、分支…...

【C++】位图详解(一文彻底搞懂位图的使用方法与底层原理)

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 天高地阔&#xff0c;欲往观之。 目录 1.位图的概念 2.位图的使用方法 定义与创建 设置和清除 位访问和检查 转换为其他格式 3.位图的使用场景 1.快速…...

Spring Boot 整合 JdbcTemplate,JdbcTemplate 与 MyBatis 的区别

DAY29.1 Java核心基础 Spring Boot 整合 JdbcTemplate JdbcTemplate是一个轻量级JDBC封装的组件 JdbcTemplate 是 Spring 自带的JDBC的封装&#xff0c;和Mybatis类似&#xff0c;需要自己封装sql语句 JdbcTemplate 帮助我们来连接数据库&#xff0c;SQL的执行&#xff0c;…...

sass基础语法

Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种 CSS 预处理器&#xff0c;提供了比原生 CSS 更强大、更灵活的语法功能。它有两种语法格式&#xff1a; Sass&#xff08;缩进语法&#xff0c;.sass 文件&#xff09;SCSS&#xff08;CSS-like 语法&am…...

【EF Core】 EF Core 批量操作的进化之路——从传统变更跟踪到无跟踪更新

文章目录 前言一、批量操作&#xff08;Rang&#xff09;1.1 AddRange()1.2 UpdateRange()1.3 AttachRange()1.4 RemoveRange() 二、Range操作的底层优化2.1 EF Core 7 前举步维艰2.2 EF Core 7后焕然一新 三、无跟踪的批量更新与删除3.1 ExecuteUpdate3.2 ExecuteDelete3.3 状…...

[Go] Option选项设计模式 — — 编程方式基础入门

[Go] Option选项设计模式 — — 编程方式基础入门 全部代码地址&#xff0c;欢迎⭐️ Github&#xff1a;https://github.com/ziyifast/ziyifast-code_instruction/tree/main/go-demo/go-option 1 介绍 在 Go 开发中&#xff0c;我们经常遇到需要处理多参数配置的场景。传统方…...

Vue 项目命名规范指南

&#x1f4da; Vue 项目命名规范指南&#xff08;适用于 Vue 3 Pinia Vue Router&#xff09; 目的&#xff1a;统一命名风格&#xff0c;提升可读性、可维护性和团队协作效率。 一、通用原则 类型命名风格示例变量camelCaseuserName, isLoading常量UPPER_SNAKE_CASEMAX_RET…...

【笔记】开源通用人工智能代理 Suna 部署全流程准备清单(Windows 系统)

#工作记录 一、基础工具与环境 开发工具 Git 或 GitHub Desktop&#xff08;代码管理&#xff09;Docker Desktop&#xff08;需启用 WSL2&#xff0c;容器化部署&#xff09;Python 3.11&#xff08;推荐版本&#xff0c;需添加到系统环境变量&#xff09;Node.js LTS&#xf…...

海康工业相机SDK二次开发(VS+QT+海康SDK+C++)

前言 工业相机在现代制造和工业自动化中扮演了至关重要的角色&#xff0c;尤其是在高精度、高速度检测中。海康威视工业相机以其性能稳定、图像质量高、兼容性强而受到广泛青睐。特别是搞机器视觉的小伙伴们跟海康打交道肯定不在少数&#xff0c;笔者在平常项目中跟海康相关人…...

前端面试准备-5

1.Node.js中的process.nectTick()有什么作用 将一个回调函数插入到当前执行栈的尾部&#xff0c;在下一次事件轮询之前调用这个回调函数 2.什么是Node.js中的事件发射器&#xff0c;作用是什么&#xff0c;如何使用 提供一种机制&#xff0c;可以创建、触发和监听自定义事件…...

Spring Boot 启动流程深度解析:从源码到实践

Spring Boot 启动流程深度解析&#xff1a;从源码到实践 Spring Boot 作为 Java 开发的主流框架&#xff0c;其 “约定大于配置” 的理念极大提升了开发效率。本文将从源码层面深入解析 Spring Boot 的启动流程&#xff0c;并通过代码示例展示其工作机制。 一、Spring Boot 启…...

深度学习|pytorch基本运算-乘除法和幂运算

【1】引言 前序学习进程中&#xff0c;已经对pytorch张量数据的生成和广播做了详细探究&#xff0c;文章链接为&#xff1a; 深度学习|pytorch基本运算-CSDN博客 深度学习|pytorch基本运算-广播失效-CSDN博客 上述探索的内容还止步于张量的加减法&#xff0c;在此基础上&am…...

嵌入式通用集成电路卡市场潜力报告:物联网浪潮下的机遇与挑战剖析

一、嵌入式通用集成电路卡概述​ 嵌入式通用集成电路卡&#xff08;Embedded Universal Integrated Circuit Card&#xff0c;简称 eUICC&#xff09;&#xff0c;是一种将传统 SIM 卡功能直接嵌入到设备主板上的芯片解决方案 。与传统可插拔式 SIM 卡不同&#xff0c;eUICC 采…...

4.2.4 Spark SQL 数据写入模式

在本节实战中&#xff0c;我们详细探讨了Spark SQL中数据写入的四种模式&#xff1a;ErrorIfExists、Append、Overwrite和Ignore。通过具体案例&#xff0c;我们演示了如何使用mode()方法结合SaveMode枚举类来控制数据写入行为。我们首先读取了一个JSON文件生成DataFrame&#…...

论文笔记: Urban Region Embedding via Multi-View Contrastive Prediction

AAAI 2024 1 INTRO 之前基于多视图的region embedding工作大多遵循相同的模式 单独的单视图表示多视图融合 但这种方法存在明显的局限性&#xff1a;忽略了不同视图之间的信息一致性 一个区域的多个视图所携带的信息是高度相关的&#xff0c;因此它们的表示应该是一致的如果能…...