物联网通讯协议 iot-modbus V3.2.6 发布


物联网通讯协议 iot-modbus V3.2.6 发布

  • 更新内容

iot-modbus本次发布的V3.2.6版本支持设备上线、掉线、处理业务异常监听处理,请看下面的源码解读。

  • 设备上线监听源码解读

主要是在MiiListenerHandler重写了channelActive方法

@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.ON_LINE.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}}}
  • 设备掉线监听源码解读

要是在MiiListenerHandler写了channelInactive方法。​​​​​​​

@Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.BREAK_OFF.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}}//连接断开后的最后处理ctx.pipeline().remove(this);ctx.deregister();ctx.close();}
  • 处理业务异常监听源码解读

要是增加了MiiExceptionHandler处理器,并在服务端MiiServer和客户端MiiClient初始化initChannel时添加进入。​​​​​​​

package com.takeoff.iot.modbus.netty.handle;
import com.takeoff.iot.modbus.common.entity.ChannelConnectData;import com.takeoff.iot.modbus.common.enums.DeviceConnectEnum;import com.takeoff.iot.modbus.common.utils.JudgeEmptyUtils;import com.takeoff.iot.modbus.common.utils.SpringContextUtil;import org.springframework.context.ApplicationContext;
import io.netty.channel.Channel;import io.netty.channel.ChannelDuplexHandler;import io.netty.channel.ChannelHandlerContext;import lombok.extern.slf4j.Slf4j;
@Slf4jpublic class MiiExceptionHandler extends ChannelDuplexHandler {private ApplicationContext getApplicationContext = SpringContextUtil.applicationContext;public MiiExceptionHandler(){}
@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.ABNORMAL.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}//由Tail节点对异常进行统一处理if(cause instanceof RuntimeException){log.info("处理业务异常:"+channel.remoteAddress());}super.exceptionCaught(ctx, cause);}}}

  • 连接监听器源码解读

主要通过spring的发布时间监听来处理,增加连接监听器ChannelConnectListener。​​​​​​​

package com.takeoff.iot.modbus.test.listener;
import com.takeoff.iot.modbus.common.entity.ChannelConnectData;import com.takeoff.iot.modbus.common.utils.JudgeEmptyUtils;import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
@Slf4j@Componentpublic class ChannelConnectListener {
@EventListenerpublic void handleReceiveDataEvent(ChannelConnectData data) {if(JudgeEmptyUtils.isEmpty(data.getDeviceConnect())){log.info("设备连接状态码:"+data.getDeviceConnect()+" ---> "+data.getConnectMsg());}}}

 


相關推薦

2023-01-11

近日,Shifu物联网开发社区签署openKylin社区CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin开源社区。 Shifu是开源的物联网应用开发及管理平台,Shifu物联网开发社区为用户提供全场景设备托管与一体化软件

2024-03-05

性能通用通讯服务悟空 IM,支持即时通讯,消息推送,物联网通讯,音视频信令,直播弹幕,客服系统,AI 通讯,即时社区等场景。 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议 (支持自定义),

2023-04-24

1、smart-mqtt 简介 smart-mqtt,是smartboot组织下面向物联网的首款解决方案,它使用Java语言开发,提供高效、可靠的MQTT Broker服务。 smart-mqtt的独特优势在于大量设备接入的情况下,仍能保持低延迟和高吞吐量,满足物联网领域严苛

2023-07-18

性能通用通讯服务悟空IM,支持即时通讯,消息推送,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景。 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重

2024-03-27

讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重写G

2022-10-21

与规则引擎脚本,总共五类“拿来主义”的部分,使得物联网项目开发速度,预增10倍。 协议纷繁复杂怎么办? 物联网的协议多大几十种,除了常见的MQTT、Modbus、Lwm2m等之外,还有各种形式多样的国标、企标协议,包括一些

2023-08-31

pi文档工具 t-io订阅树:略 TiOMQ OS:用t-io打造的物联网操作系统 TiOMQ Platform:用t-io打造的物联网开放平台 TiOMQ Client: https://www.oschina.net/news/228272/tiomq-client-1-0-8-released 谭聊:用t-io打造的即时通讯系统,核心功能

2023-09-26

项目背景 随着物联网技术的迅猛发展,越来越多的物联网设备被应用于各个行业和领域。物联网设备的调试和管理是确保设备正常运行和提供稳定服务的关键环节。然而,传统的物联网设备调试方案往往存在一些问题,如复

2023-07-15

ThingsPanel0.5.0的多租户功能满足了设备商和大型客户对物联网SaaS服务的需求。为在线物联网服务提供了快速实现方案。   基于ThingsPanel0.5.0,可以大大加速设备商的硬件产品化进程。   ThingsPanel的多租户功能分为

2023-10-09

、管控 3. 多充值业务整合(直充平台、内充平台) 4. 物联网卡国际化解决方案应用实现 服务能力提升: 1. 一个平台N个能力(多端系统支持、多语言支持) 2. 极高性价比 (小躯壳大能力,低硬件支持 大数据量承载) 3. 降低成

2022-04-01

据外媒 phoronix ,Fedora 37 正在考虑为物联网/边缘设备的零接触载入提供支持。 Fedora IoT 37 正在考虑利用 FIDO 联盟的 FIDO 设备板载 (FDO) 协议作为一种开放标准,以便将设备简单安全地加入云和本地管理平台。FIDO 联盟去年宣布了

2022-09-27

Alliance (CSA 连接标准联盟,原 Zigbee 联盟),他们将为物联网制定新的安全和可靠性标准,并为 Ubuntu Core 提供 Matter 支持。 Canonical 将以参与成员的身份加入该联盟,Canonical 也是第一家提供主要 GNU/Linux 发行版并加入该联盟的

2023-09-12

茶室、酒店、健身房、公寓、出租房等经营性场所进行物联网改造。同时支持多种物联网通信协议,开放智能门锁,智能开关,智能手环的sdk供开发者使用。可免费商用,授权版赠送官网,单商户电商与多商户电商系统。 更新

2023-03-31

ThingsPanel 发布了更新版本 0.4.8,其中主要解决了量产的数据准备和设备预注册的问题。此次更新引入了许多新功能,让设备管理变得更加容易和高效。 首先,新增了创建产品功能。现在用户可以选择设备插件、绑定协议、选择