用Wireshark逐帧分析GB28181注册流程
为什么要抓包? GB28181的问题,90%可以通过抓包解决。设备注册不上?抓包看REGISTER发了没,平台回了401没。点播黑屏?抓包看INVITE的SDP协商对不对。云台不响应?抓包看MESSAGE发出去没,设备回了什么。Wireshark是国标调试的必备工具。今天手把手教你看懂GB28181的注册流程。环境准备 安装Wireshark在平台服务器上抓包,或者用镜像端口抓设备侧的包过滤器设置
Go车联网网关:从0到100万连接,我踩过的坑
车联网网关的核心指标只有一个:能扛多少终端连接。一台货车一个终端,一个终端一条TCP长连接。10万台车就是10万连接,100万台车就是100万连接。听起来不多,但每条连接都要处理心跳、位置上报、报警、鉴权、参数下发。写不好,几万连接就把内存打满。我们做JTE的时候,目标很明确:单机100万连接。这篇文章讲清楚我们怎么做到的,以及踩过的坑。第一版:一个连接一个goroutineGo最舒服的地方就是g
PLC程序加密到底有没有用?我试了5种方法,说点真话
PLC程序加密这个话题,工控圈里一直有争议。有人觉得必须加密——“我辛辛苦苦写的程序,凭什么让别人白嫖?”有人觉得加密没用——“真想破解你的人,你怎么加密都没用。”我自己经历过被抄袭,也帮客户处理过程序丢失的问题。说点真话。先说一个让我心疼的事。2019年,我帮一个做包装机的客户开发了一套控制系统。设备出口到东南亚,客户要求“程序加密,防止当地仿制”。我用了当时最常用的方法——在PLC程序里加了一
为什么我不用AI做服务器自愈——一个反面案例的思考
前言 2026年,AI运维(AIOps)是个热词。大模型能写代码、能分析日志、能做决策。很多人问我:ServerGuard为什么不用AI?今天不绕弯子,直接回答:我用过,然后我放弃了。先说一个真实的反面案例 去年我尝试把GPT接进告警处理流程。思路很直接:告警触发时,把系统指标、日志、进程列表打包发给模型,让它判断“该不该自动修复”。第一周,效果很好。磁盘告警,模型说“清理/tmp目录下的临时文件
工作流引擎-节点执行类型-五种执行者-节点的执行方式
一个属性,五种执行者:CCBPM 节点的执行方式节点的执行方式 是驰骋 BPM(CCBPM / CCFlow)节点上的核心属性。它不是简单的「自动 / 人工」开关,而是把人、机器、混合、流水线、过程五种执行模型,收敛到同一个枚举字段里:设计期配置一次,运行期由引擎自动调度,界面上还能看见过程。本文依据引擎实现(BP.WF)、实体映射框架(BP.En30)以及过程执行页(ProNodes.vue)整
驰骋BPM低代码-组织结构-设计
1. 定义组织结构是指系统运行所依赖的人员、部门、角色,以及它们之间的对应关系。CCBPM 将这些数据持久化在 Port_* 系列数据表中(实体类位于 BP.Port 命名空间)。核心五表(视图/接口集成时通常需要映射这五张表):表名实体类说明Port_EmpEmp人员(用户)。主键 No;FK_Dept 为主部门;含姓名、手机、邮箱、状态等。SAAS 模式下另有 UserID 字段,账号 No
YonOnto 企业本体平台,让企业被AI真正理解
YonOnto 企业本体平台,让企业被AI真正理解 当AI从“回答问题”走向“执行任务”,企业需要的不只是一个更聪明的大模型,还需要一套让AI真正读懂业务的语言体系。9月22日,「YonOnto企业本体平台」线上新品体验会成功举办。YonOnto面向企业级AI应用,将业务对象、属性、关系、逻辑与动作统一转化为可计算、可推理、可执行、可追溯的企业本体,为智能问数、经营分析、智能决策和穿透式
【Go】开源hertz-admin:面向信创与内网交付的 Go 后端脚手架
项目已开源:下载地址Go 后端项目从零起步,真正花时间的从来不是业务代码。分层怎么划、错误码从哪个号段开始、权限在哪一层拦、日志怎么切分、配置从哪里读、版本号怎么注入、镜像怎么打小——这些决定项目长期可维护性的决定,每个新项目都要重做一遍,而且每个项目做得都不一样。做的时候不觉得,半年后回头看,自己都嫌乱。信创和内网交付又会额外压上三件事:服务器不出外网,go mod download 直接卡死;
为什么我放弃了自研JT808网关,改用开源底座
做了三年车联网,我做过一个决定:放弃自研JT808网关。这个决定不容易。团队花了半年写的代码,说扔就扔。但后来证明,这个决定是对的。自研网关的三年我们的JT808网关,最开始是2019年写的。当时的需求很简单:接收终端位置上报,存到MySQL,提供查询API。第一版很快上线,跑了几百台车,没问题。然后问题来了。2020年,接了某厂商的终端,发现附加信息ID编码不一致。 标准里附加信息ID是1字节,
我抓了3天包,最后发现是DeviceID大小写
摘要 一个县级平台项目,12 台摄像头,注册全通,目录只显示 3 台。厂家互相甩锅,我抓了 3 天包,最后发现问题藏在一个字母的大小写里。这篇文章复盘全过程,以及我现在怎么用工具 3 分钟定位同类问题。正文 第一天:所有人都说不是自己的问题 项目现场,12 台摄像头,品牌混装:海康 6 台、大华 4 台、宇视 2 台。平台是县里统一采购的国标平台。设备注册全部成功,平台能看到 12 台设备在线。但
工业数据质量——传感器漂移和异常值处理实战
做数据采集的人都知道一句话:“Garbage in, garbage out.” 数据质量不行,后面做什么分析、什么AI、什么优化,全是白搭。一个让我印象深刻的数据质量事故。一个化工厂的反应釜温度监测项目。反应釜里有强放热反应,温度必须控制在150±5℃。超过160℃就要紧急冷却,超过170℃就要紧急泄压。系统上线三个月,一直没有问题。温度稳定在150℃左右。然后有一天,温度突然从150℃涨到了1
纯Python vs C库性能对比实测
为什么做这个测试? 上篇聊了纯Python SIP协议栈的实现,评论区最集中的质疑是:Python做信令,性能能跟C库比吗?我做了一组对比测试。测试对象:PyGBSentry:纯Python实现的SIP协议栈PJSIP:业界广泛使用的C语言SIP协议栈Sofia-SIP:另一款主流C语言SIP协议栈测试环境:8核16G云服务器,Ubuntu 22.04,Docker部署。测试项目 测试1:单条SI
JT808分包处理:那些标准没说清楚的事
JT808 协议里关于分包的定义,只有短短几句话:当消息体属性中的长度大于 1024 字节时,终端应分包发送。分包消息的消息体前 4 字节为消息包总数和包序号。标准没说清楚的事太多了。问题一:分包大小是多少?标准说“大于 1024 字节时分包”,但没说分包的单位是多少。我一开始以为是按 1024 字节分包,后来发现不同终端厂商的实现不一样。有的按 1024 字节,有的按 512 字节,有的按 25
OPC UA信息模型到底怎么设计?我踩过的坑
OPC UA是工业通讯的未来——这句话我信。但OPC UA的“信息模型”这个事,我踩了两年坑才搞明白。先说一个让我头疼的项目。一个水处理厂的项目,要上一套OPC UA服务器,把全厂的设备数据统一暴露给上层系统(MES、SCADA、云端)。设备有:6台PLC(西门子、三菱、汇川都有)、12台仪表(流量计、pH计、浊度仪)、4台变频器、2台软启动器。我搭了一个OPC UA服务器,把所有的数据点都配了上
分段推进诊断:如何自动定位 GB28181 断点
摘要 GB28181 接入是链式流程:注册→保活→目录→点播→媒体流。任何一环断裂,后面都无法进行。GBDoctor 用分段推进引擎,自动定位断点。本文解析其状态机设计与实现。链式依赖注册成功 → 才能发保活 保活稳定 → 才能查目录 目录完整 → 才能点播 点播成功 → 才能收 RTP 如果注
规则引擎的存储过程迁移成功率只有 3.8%,问题出在哪?
一、一个反直觉的数据 数据库迁移中,DML 查询的自动转换成功率接近 100%。但存储过程、函数、触发器等过程性对象的自动转换成功率,规则引擎只能做到 3.8% 到 31.2%-1。同一个工具,同样的语法解析引擎,为什么差距这么大?二、语法树能解析的,和业务逻辑能理解的,是两回事 存储过程的核心问题在于:它不只是语法,它是业务逻辑的容器。一个 500 行的 PL/SQL 存储过程里,可能包含:嵌套
海康、大华、宇视GB28181兼容性踩坑全记录
背景 做国标GB28181项目,最让人头疼的不是协议本身,而是各家设备的“方言”。协议文档写得清清楚楚,但到了实际对接,海康、大华、宇视各有各的实现方式。同一套平台代码,海康能注册,大华注册不上;大华能点播,宇视点播黑屏。我前后对接过几十款设备,踩了不少坑,今天把常见的兼容性问题整理出来,附排查方法和调试技巧。坑1:海康设备注册不上——网关配置的隐藏陷阱 场景:一台海康IPC,GB28181配置反
工业AI落地,为什么90%的项目都死在“数据”上?
这两年工业AI很火。预测性维护、质量检测、能耗优化——每个方向都有公司在做。但真正落地的项目,不到10%。剩下的90%死在什么地方?死在数据上。一个真实的预测性维护项目,做了半年,失败了。客户是一个注塑厂,想用AI做注塑机的预测性维护——通过分析注塑机的压力、温度、速度曲线,预测模具什么时候会出问题。想法很好。注塑机的PLC里有完整的工艺参数——注射压力、保压压力、熔胶温度、模具温度、注射速度、保
JT808转义处理的一个致命Bug,让我排查了三天
JT808协议里有一条规则,写在标准文档最不起眼的位置:消息体中如果出现0x7e,需要转义为0x7d 0x02;出现0x7d,转义为0x7d 0x01。看起来很简单。我第一次实现的时候,也是这么想的。Bug是怎么出现的去年做一个运输车辆平台,JT808解析跑了一段时间都正常。直到接了某厂商的一批终端,问题来了:大约5%的位置上报消息解析失败,校验码不匹配。抓包看原始数据,帧头和帧尾的0x7e都在,
企业数据防泄漏实战:数据加密软件的选型逻辑与落地思考
数据资产的保护,从来不是一个"要不要做"的问题,而是"什么时候开始做"的问题。 而数据加密软件,是企业数据防泄漏(DLP)体系里最基础、也最容易踩坑的一环。