物联网系列--物联网终台框架搭建

什么是物联网?常见IoT协议最全讲解 物联网通信环境有Wi-Fi、RFID、NFC、Zigbee、6LoWPAN、Bluetooth、GSM、GPRS、GPS、3G、4G等网络,而每一种通信应用协议都有一定适用范围。 阅读详情

(初次设计,如有错误之处,敬请指出,持续更新中)由于工作需要,需要搭建物联网终台,主要框架为:
在这里插入图片描述

1,协议包搭建: 总体使用netty框架。1,设计时确保只有一个程序入口。即:只用一个main函数,程序jar包运行不启动任何端口号,只能通过main函数,启动端口号,并执行协议解析操作。,协议解析时:要校验内容为:帧头:帧尾:数据长度,等信息,校验通过后,确认为一条合法帧,将设备解析后:通过http接口将数据上送到终台,执行相关业务,然后需要将程序的连接信息,存入到系统内存中。相关代码如下
程序入口:

/**
 * 程序入口类
 */
public class StartService {

	public static void main(String[] args) throws Exception {
		List<Integer> ports = Arrays.asList(9999);
		System.out.println("服务开始启动启动");
		StartPlcInstruct.start();
		ChineseProverbServer cps = new ChineseProverbServer();
		cps.run(ports);
	}

}

存入系统内存:

public class VoltmeterControllerPojo {

	

	public static Map<String, DatagramPacket> mapPacket = new HashMap<String, DatagramPacket>();// 存放回复消息变量值
	/**
	 *  存放发送消息时的变量,key为:设备地址a+设备地址b+packet,和 设备地址a+设备地址b+ctx
	 * */
	public static Map<String, ChannelHandlerContext> mapContext = new HashMap<String, ChannelHandlerContext>();

}

VoltmeterControllerPojo.mapPacket.put(hexValue.substring(6, 10)  + "packet", packet);
VoltmeterControllerPojo.mapContext.put(hexValue.substring(6, 10)  + "ctx", ctx);

协议包通过http接口将数据上送到物联网终台:

HttpUtils.sendPost("http://localhost:6606/qsPlc/sendMqtt", "state="+data+"&adress="+adress);

2,物联网终台,新建类与协议包中的接口对应: 物联网终台新建一个类,用来接受设备数据,读取产品管理中设计的物模型,从服务/事件/属性三个维度,封装json,将设备上传数据上传到mqtt中。
相关代码:

/**
	 * 发送mqtt消息
	 *
	 * @param state  设备数据
	 * @param adress 设备地址
	 * @return
	 */
	@PostMapping("/sendMqtt")
	public String sendMsg(String state, String adress) {

		
		JSONObject finalObject = new JSONObject();// 请求参数的最终json数据
		// 定义属性/服务/事件三个集合
		JSONArray jsarray = new JSONArray();
		finalObject.put("properties", jsarray);// 属性
		mqttGateway.sendToMqtt(finalObject.toString(), MqttPlcTopicType.TOPIC);
		return "success";
	}

3,设备命令下发: ,新建类,订阅业务层下发的指令,将信息,存入redis队列中。相关代码

public class ReceiveMessageHandler implements MessageHandler {

	@Override
	public void handleMessage(Message<?> message) throws MessagingException {
		// String topic =
		// message.getHeaders().get("mqtt_receivedTopic").toString();//订阅的主题
		String msg = message.getPayload().toString();
		System.out.println("接受到的消息 " + msg);

		Gson gson = new Gson();
		Map<String, Object> map = new HashMap<String, Object>();
		map = gson.fromJson(msg, map.getClass());
		String dataValue = map.get("dataValue").toString();
		map.put("dataValue", FormatString.getEquimentString(dataValue));
		
		 String str = JSON.toJSONString(map);
		
		// 处理设备控制,将下发的指令,存放到redis中
		 RedisUtil.setListValue(RedisToPic.TOPIC, str);
		
	}

}

设备控制命令下发: 在协议jar包处,启动定时任务,定时扫描redis队列,如果获取到redis存在待发送的指令,则取出消费,对设备下发控制指令。主要代码:

public class StartPlcInstruct {

	public static void start() {
		System.out.println("线程开始启动:定时查询需要下发的命令");
		/**
		 * Runnable:实现了Runnable接口,jdk就知道这个类是一个线程
		 */
		Runnable runnable = new Runnable() {
			// 创建 run 方法
			public void run() {
				Jedis consumer = RedisUtil.getJedis();

				String value = consumer.lpop("QS_PLC");
				if (value != null) {
					// 有数据则继续消费
					Gson gson = new Gson();
					Map<String, Object> map = new HashMap<String, Object>();
					map = gson.fromJson(value, map.getClass());
					try {
						PlcController.voltmeterController("03", map.get("dataValue").toString(),
								map.get("adress").toString());
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		};

		// 做为并发工具类被引进的,这是最理想的定时任务实现方式。
		ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
		service.scheduleAtFixedRate(runnable, 10, 3, TimeUnit.SECONDS);
	}
}

至此:设备的注册、上报、控制,整体框架已经搭建完毕。整体目录结构如下:
在这里插入图片描述
这样搭建仍然有一些问题如下:诸位如果有解决方案,可私聊:
一:会存在命令失效的情况;
使用场景:1,设备在物联网终台已经注册过数据,此时关闭或者重启协议包:qs_iot_plc
原因:由于将设备的连接session存放在内存中,重启或者关闭协议包,导致内存重新加载将之间的连接信息清空。此时发送指令,由于获取不到连接信息,导致命令失效
二:存在命令未发送,或者命令发送失败,命令在redis中消失的情况
使用场景:在步骤一的基础上操作
原因:物联网终台:qs_iot,接受到业务层下发的指令,将信息存放到redis缓存中,协议包:qs_iot_plc,启动定时任务取消费指令队列,由于已经消费过指令队列中的数据,即使发送失败,数据也将不存在。

摸索中前行,欢迎广大同行,前来一起探讨

IoT:物联网芯片 ESP32系列 ESP32系列产品解析:ESP32系列是高性能低功耗物联网芯片,涵盖多种型号如ESP32(双核Wi-Fi 4/BT 4.2)、ESP32-S3(AI加速)、ESP32-C6(Wi-Fi 6/PSA安全认证)等,适用于智能家居、工业控制等场景。开发支持ESP-IDF、Arduino等框架,AI边缘化与RISC-V架构是未来趋势。选型需考虑AI需求、无线协议及成本,其中ESP32-C6以安全性和多协议并发成为标杆。 阅读详情

相关推荐

什么是物联网?常见 IoT 物联网协议最全讲解

什么是物联网?常见IoT 物联网协议最全讲解 一、什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生。物联网的概念最早于1999年被提出来,曾被称为继计算机、互联网之后,世界信息产业发展的第三次浪潮,到现在已经发展了20余年。如今,在日常生活中,我们已经可以接触到非常多的物联网产品,例如各种智能家电、智能门锁等,这些都是物联网技术比较成熟的应用。 物联网最早的定义是:把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理。当然,物联网发展到今天,

数据库技术 2982

【物联网】物联网时代25大开源IoT框架(一)

DeviceHIve作为一个免费使用和更改的平台以及Apache2.0下的许可,提供了深入探索该云平台的机会,它还支持包括Android和IoS在内的各种库。今天,我们将讨论各种物联网框架 —— 现在,我们正在进入一个基于互联网技术的新世界,该世界不仅连接人,而且还连接事物。KAA IoT是一个功能丰富的开源物联网平台,可以解决在使用物联网生态系统时面临的困难,非常适合放在物联网框架生态系统的顶部。物联网开源框架是基本的基础架构,其中包含对云的支持以及并增强物联网收集、存储和分发信息的过程的关键要素。

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 1911

物联网低功耗广域网NB-IoT开发(上)

NB-IOT---窄带物联网一种低功耗广域(LPWA)网络技术标准,基于蜂窝技术,用于连接使用无线蜂窝网络的各种智能传感器和设备。用于低功耗广覆盖(LPWA)物联网(IoT)市场。NB-IoT 技术可以理解为是 LTE 技术的“简化版”,NB-IoT 网络是基于现有 LTE 网络进行改造得来的。LTE 网络为“人”服务,为手机服务,为消费互联网服务;而 NB-IoT 网络为“物”服务,为物联网终端服务,为产业互联网(物联网)服务。Lierda:主要特征:主要特征频段封装LCC管脚数量42。

m0_74124932的博客 2134

物联网平台建设方案

构建物联网全域支撑服务能力,为实现学院涵盖物联网设备的全面感知、全域互联、全程智控、全域数字基底、全过程统筹管理奠定基础,为打造智能化提供坚实后台基石。物联网平台向下接入各种传感器、终端和网关,向上通过开放的实施分析、实施服务各种能力,快速集成融合数据。平台解决工业现场的各类型物联网数据的适配接入、智能分析、实时服务、以及物联网数据呈现的问题。本项目针对现有设备设施情况,梳理设备物模型,为物联网数据接入提供支撑;构建智能分析机制,为设备健康检测、故障预警提供支撑;

Y15117544759的博客 1841

HCIA-IoT V2.5 华为物联网认证笔记

文章目录1 华为物联网解决方案1.1 1个OS、2类接入、1个平台(1+2+1)1.2 华为云物联网平台架构1.3 NB-IoT端到端解决方案1.4 终端网关1.5 物联网操作系统 Huawei LiteOS1.6 物联网安全2 物联网通信技术2.1 有线RS-232与RS-485Meter-Bus有线通信技术简要对比2.2 无线短距无线蜂窝通信LPWA(Low Power Wide Area)无线通信技术对比2.3 NB-IoT技术及解决方案(重点)2.3.1 NB-IOT商用情况2.3.2 NB-IoT

weixin_57901967的博客 7661

【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析

电信物联网开放平台对接流程如下图所示: 1、创建 APP 应用 登录中国电信物联网开放平台对接测试环境SP Portal(https://180.101.147.135:8843),初次登录需要修改初始密码。 选择【应用管理】-&gt;【应用】点击右上角“+创建应用”。 典型的 NB-IoT 应用的参数设置可参考如下设置: 所属行业: 公用事业(NB-IoT) 关联API包: ...

产品线负责人 5万+

美畅物联丨构建卓越智慧物联中台的三大核心要素

在当今数字化高速发展的时代,智慧物联中台的构建至关重要。一套完备的智慧物联中台并非单一产品的简单呈现,而是由多个模块与产品巧妙组合、层层堆叠而成。每个模块与产品都致力于解决特定的问题,它们既可以独立发挥作用,又能在组合之后成为一套强大的工具。今天美畅物联老张就和大家谈一谈构建卓越智慧物联中台的三大核心要素。

changlian24hlink的博客 1245

时间序列分析:ARCH、GARCH、TGARCH与DCC-GARCH波动率模型(含代码)

关注TGARCH模型和DCC-GARCH的应用,通过在沪深300和中证500指数上应用TGARCH和DCC-GARCH模型,揭示这两个指数之间的条件异方差及动态相关性的变化规律。

celiaweiwei的博客 1万+

这么通俗易懂的“中台”解读,我还是第一次见

现在阿里的钉钉就把用户,服务提供商,经销商都拉到了一个平台上了。通过阿里平台的能力,将钉钉打造成企业服务的中台,让多方从中受益。▲ 业务方面:通过满足市场需求,提高专业化程度,打造平台战略,逐步升级。

modi000的博客 1万+

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1571

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 243

DTIOT物联网中台

将可视化和IOT(物联网)智能感知技术与一站式运维管理理念相结合,以可视化平台为核心,将企业空间管理、设备设施和管线全生命周期管理、环境监测管理、安防/消防、等通过“可视化、集成化、智能化”的技术手段建立一站式智慧运维平台,实现以“安全、高效、节能、便利”为目标。首先大家可以通过中台的架构发现,它对下连接各种智能硬件产品通讯;对上为每个应用场景提供设备应用服务;中台又对设备相关数据进行分类整理、数据安全保障、提供设备控制服务和联动。真正实现“万物皆可连,万物皆可控。

DTCloud 698

PyTorch实战:A2C算法在Pendulum环境中的调参技巧与收敛优化

本文详细介绍了使用PyTorch实现A2C算法在Pendulum环境中的调参技巧与收敛优化方法。通过分析Pendulum环境特性、设计高效的网络架构、优化超参数设置以及提升训练稳定性,帮助开发者掌握强化学习中的policy-based方法。文章特别强调了奖励工程、优势估计改进和梯度裁剪等关键优化策略,为连续控制任务提供了实用解决方案。

rum55的博客 213

IOT | 物联网入门

俊超说 | IOT-物联网入门 思考: 1.你理解的物联网是什么? 2.如果让你来设计物联网,你会考虑几个问题? 3.你能想到几个相关的概念? 4.你的实现思想和步骤? 5.还有哪些需要考虑的问题?比如安全,网络并发访问等等… 分享: 1.物联网是什么? 物联网( IoT ,Internet of things )即“万物相连的互联网”,是互联网基础上的延伸和扩展的网络,将各种信息传感设备与互...

IT乌托邦官方博客 1万+

uniapp - 强力解决H5网页浏览器跨域问题,如何解决uniapp请求接口在浏览器跨域问题,UniApp H5 跨域代理配置详细教程完美解决所有uniapp跨域(调用第三方接口或服务器api跨域)

uni-app 跨域,uniApp解决h5跨域问题,解决uni-app请求接口在浏览器跨域问题,uni.request请求跨域问题解决方案,uni-app-跨域解决方法,彻底解决uniapp发布为H5的跨域问题,uniapp H5页面设置跨域请求_uniapp h5跨域配置,uniapp开发 H5 解决跨域问题,uniApp请求解决跨域问题,uniapp request如何实现前端请求跨域,解决uniapp调试过程中的请求跨域和环境配置,Uniapp调用外部api接口跨域请求,uni-app发布H5页面跨域

🏆 前端领域优质创作者 5354

21天教你学会PCIe专栏(17)--多功能设备

1.1 定义多功能PCIe设备:多功能PCIe设备是指在一个物理设备中集成了多种功能的设备。这些功能可以通过不同的PCIe功能(Function)来实现,每个功能可以独立配置和管理。1.2 优点资源利用率:通过集成多种功能,减少物理设备的数量,提高资源利用率。成本效益:减少硬件成本和功耗,提高系统的经济性。灵活性:用户可以根据需要启用或禁用不同的功能,提高系统的灵活性。可扩展性:通过增加新的功能,扩展设备的功能,提高系统的可扩展性。1.3 应用场景网络设备。

xiaoheshang_123的博客 531

9个顶级开发IoT项目的开源物联网平台

物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术。 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目。物联网平台是帮助设置和管理互联网连接设备的组件套件。 一个人可以从一个系统远程收集数据,监控和管理所有连接互联网的设备。 物联网平台上有很多可用的在线平台,但为公司构建物联网解决方案都依赖于物联网平台主机和支持质量。在这里,我们编译了一些最好的和着名的开源...

shnbiot的博客 18万+

RK3566-预装APP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_24093081的博客 701

物联网(IoT)详解

首先第一个问题,什么是物联网(IoT)?物联网(英文:Internet of Things,缩写:IoT) 起源于传媒领域,是信息科技产业的第三次革命。物联网是指通过信息传感设备,按约定的协议,将任何物体与网络相连接,物体通过信息传播媒介进行信息交换和通信,以实现智能化识别、定位、跟踪、监管等功能。物联网(Internet of Things,简称 IoT) 是指通过互联网连接和通信的物理设备和对象的网络。

靖节先生的博客 3万+

Linux系统故障排查思路实践教程(上)

本文主要介绍了Linux系统日志分析与常见故障排查的实用方法。首先从系统日志的分类及其涉及的日志文件进行说明;其次详细讲解了忘记用户密码的解决方案;接着对系统无法启动问题,提供了异常断电后修复文件系统、/etc/fstab文件丢失恢复等常见故障的处理方案。最后介绍了文件系统只读错误的排查思路和修复方法,包括磁盘空间检查、文件系统修复等实用技巧。全文提供了大量具体命令和操作流程,为Linux系统维护人员提供了实用的故障处理指南。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 328

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基于 Arduino 和 IoT 云平台搭建物联网系统

原文:Building an IoT System Using Arduino and IoT Cloud Platform 责编:屠敏,关注物联网、移动开发领域,寻求报道或投稿请发邮件tumin@youkuaiyun.com。 在这篇文章中,我们将介绍如何搭建一款监测土壤水分的物联网系统,用于在土壤干燥时发出警报,提醒用户。本项目使用了 IoT 云平台来管理警报系统,同时存储来自传感器的数据。众...

csdnvr的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

阿里云物联网IOT平台使用案例教程(模拟智能设备)

我将介绍如何通过MQTT、阿里IOT SDK完成设备与云平台对接​。

yundashi168.com 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

什么是物联网(IoT)?

IoT(即物联网)一词是指互联设备的集合网络,以及促进设备与云之间以及设备自身之间通信的技术。由于价格低廉的计算机芯片和高带宽电信的出现,我们现在已有数十亿台设备连接到互联网。也就是说,牙刷、吸尘器、汽车、机器等日常设备可以利用传感器收集数据,智能地为用户服务。 物联网将日常“事物”与互联网相结合。90 年代以来,计算机工程师一直在为日常用品添加传感器和处理器。但是,这项工作最初进展十分缓慢,因为芯片又大又笨重。名为 RFID 标签的低功耗计算机芯片是首个用于跟踪昂贵设备的芯片。随着计算设备尺寸不断缩小,

南北极之间 1万+

【物联网】NB-IoT和LoRa技术简介

一、前言 物联网必定是一个社会发展趋势,但是地球资源有限,资源的可重复利用不重视起来,再过几十年,就没有资源可用了......物联网是比较新兴的方向,我之前了解的最出名的、使用最多的就是ZigBee网络,好几年没有关注物联网行业了,也不知道什么时候出来了很多新技术,最突出的就是NB-IoT和Lora了, 二、NB-IoT简介 引用百度百科的专业介绍 -- “窄带物联网(Narrow Band...

欢迎光临 2万+

物联网时代25大开源IoT框架

物联网开源框架是基本的基础架构,其中包含对云的支持以及并增强物联网收集、存储和分发信息的过程的关键要素。一些最流行的物联网框架包括KAA-IoT、ZETTA和各种其他框架。我们将在下面继续讨论。物联网框架的五个关键要素包括:硬件设备、软件应用程序、云和通信平台、云应用程序。这五个元素结合在一起形成了一个高性能的物联网框架开源媒介。

a1058926697的博客 4363

物联网IoT系列之MQTT协议基础知识

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布订阅模式的网络传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境,在物联网环境应用广泛,能够实现传感器、执行器和其它设备之间的高效通信。

Nicky's blog 1980
上一篇: 物联网系列--整体框架搭建
下一篇: CentOS8设置静态ip及无法连接外网
只会debug
博客等级 码龄9年 69粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值