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

使用IOT-Tree Server制作一个边缘计算设备(Arm Linux)

最近实现了一个小项目,现场有多个不同厂家的设备,用户需要对此进行简单的整合,并实现一些联动控制。

我使用了IOT-Tree Server这个软件轻松实现了,不外乎有如下过程:

1)使用Modbus协议对接现有设备,一些设备由于是模拟量信号,通过AD模块做转换,然后也输出Modbus RTU的协议数据。所有设备通过串口服务器模块转换成了以太网接口。最终整合到一个总的控制设备——这个设备就是IOT-Tree Server运行的边缘设备。

2)本项目使用了一个巴掌大小的嵌入式Arm Linux模块,这个模块使用RK3568主控芯片,主频达2GHz,内存容量有2G/4G大小,Linux是Debian版本。可以轻松跑起IOT-Tree Server使用的Java运行环境。

上面对接设备过程本文就不细讲了,你如果不了解可以参考本系列文章中的以下文章,里面包含项目完成整个过程:

机房自动化监控手把手分享给你 - 10 项目完成总结

这篇文章讲的非常详细,基本上你是0基础都可以通过这个文章慢慢掌握整个过程。

本文想给你分享的是,我如何安装配置这个Linux设备的,并且是如何实现现场多个设备联动的

1 Arm Linux设备及安装配置

我使用的Arm Linux设备是正点原子AtomPi-CA1卡片电脑,主要这个带有一个小外壳,很方便现场安装。这板子长成这样,竟然有两个网口,特别方便现场使用——两个网口一个可以对接现场设备,另一个可以接入用户办公环境,不仅可以实现现场控制,也方便办公人员查看设备监控画面,还保证了设备网络和办公网络的隔离。

相关资料可以到正点原子网站上去查看。

注意,此板子没有时钟保持功能,感觉限制了很多功能,特别是做数据记录的时候。你如果现场需要的功能比较复杂,不建议你使用这个板子。我使用这个做现场实时调度,不需要精确记录时间。

1.1 IOT-Tree的安装配置

由于GitHub上面提供下载release版本,自带的java环境版本都是windows,因此我下载的是iot-tree-xxx.zip文件。文件内部没有对应的java环境,需要自己下载安装。

我使用的是oracle官方网站提供的Linux Arm64对应的压缩包

当前用户登录之后,直接通过ftp把iot-tree和jdk都解压放到了当前用户目录下,如下图:

进入iot-tree目录,修改文件iot-tree.sh。只需要修改一行,设置JAVA_HOME为你解压之后的对应jdk目录。

然后运行命令,使这个文件可运行

chmod +x iot-tree.sh

 然后,你就可以直接通过 ./iot-tree.sh命令启动IOT-Tree Server了。但是,我的应用要求设备通电启动之后,IOT-Tree能够自动运行。因此,使用su账号,新增了如下文件:

/usr/lib/systemd/system/iot-tree.service

文件内容如下:

[Unit]
Description=IOT-Tree Server
After=network.target[Service]
ExecStart=/home/atom/iot-tree/iot-tree.sh linux_nohup
WorkingDirectory=/home/atom/iot-tree
Restart=always
StandardOutput=append:/home/atom/iot-tree/log/syslog.log
StandardError=append:/home/atom/iot-tree/log/syslog.log
SyslogIdentifier=iot-tree[Install]
WantedBy=multi-user.target

这样,IOT-Tree Server就被配置成了Linux后台运行的服务 。你可以使用如下命令进行服务的管理;

重载系统服务:systemctl daemon-reload设置开机启动:systemctl enable iot-tree启动服务:systemctl start iot-tree停止服务:systemctl stop iot-tree重启服务:systemctl restart iot-tree

通过以上配置,IOT-Tree在ARM Linux环境就可以随着设备的启动而自动启动了。

2 设备接入配置和监控画面制作

这个还是参考我的系列文章吧。相关内容都类似,我在这里再写都没有下面这些文章详细了。

机房自动化监控手把手分享给你 - 7 监控画面制作

3 使用消息流实现现场设备联动控制

本项目的联动控制非常简单,通过一个Modbus通道,获取厂家1提供的设备数据,根据一定的规则,对厂家2提供的设备做控制输出,以达到节能降耗的目的。

我使用了IOT-Tree的消息流控制机制实现,感觉这个具体控制过程还不如IOT-Tree提供的demo例程,还是参考这个吧:使用消息流程实现控制逻辑

4 总结

现在的Arm Linux系统,配置稍微高一些就可以运行java虚拟机,那么也就可以运行IOT-Tree Server。一旦你的设备安装并运行了IOT-Tree Server,设备就可以有IOT-Tree的大部分能力,你的设备会成为一个功能强大的边缘处理中心。

你如果给设备配置一个HDMI屏+键盘+鼠标,甚至可以直接替代中控室的PC。

相关文章:

使用IOT-Tree Server制作一个边缘计算设备(Arm Linux)

最近实现了一个小项目,现场有多个不同厂家的设备,用户需要对此进行简单的整合,并实现一些联动控制。 我使用了IOT-Tree Server这个软件轻松实现了,不外乎有如下过程: 1)使用Modbus协议对接现有设备&#…...

(JAVA)B树和B+树的实现原理阐述

1. B 树 2-3树中,一个节点最多能有两个key,它的实现红黑树中适用对链接染色的方式去表达这两个key。下面将学习另一种树形结构B树,这种数据结构中,一个节点允许多余两个key的存在。 B树是一种树状数据结构,它能够存储…...

JC系列CAN通信说明

目录 一、CAN协议二、指令格式三、通信接线3.1、一对一通信3.2、组网通信 四、寄存器定义五、指令说明4、读取电源电压5、读取母线电流6、读取实时速度8、读取实时位置10、读取驱动器温度11、读取电机温度12、读取错误信息32、设定电流33、设定速度35、设定绝对位置37、设定相对…...

Ubuntu22——安装并配置局域网文件共享系统Samba

我们将共享目录设置为 /home/takway/share。以下是基于这个新目录的详细步骤: 在Ubuntu上安装并配置Samba 更新系统包列表 打开终端,执行以下命令来确保你的包列表是最新的: sudo apt update安装Samba 安装Samba及其相关工具: sud…...

HTML CSS 基础

HTML & CSS 基础 HTML一、HTML简介1、网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成1.4总结 2、web标准2.1 为什么需要web标准2.2 Web 标准的构成 二、HTML 标签1、HTML 语法规范1.1基本语法概述1.2 标签关系 2、 HTML 基本结构标签2.1 第一个 HTML 网页2.2 基本结构标签…...

Nginx 使用 GeoIP 模块阻止特定国家 IP 地址的最佳实践

一、概述 为什么要阻止特定国家的 IP 地址? 在全球化的互联网上,网站和服务器可能会面对来自不同国家和地区的用户流量。虽然大多数情况下,我们希望网站能为全球用户提供服务,但在某些特定场景下,阻止来自特定国家的…...

vue3 + vite + cesium项目

GitHub - tingyuxuan2302/cesium-vue3-vite: 项目基于 vue3 vite cesium,已实现常见三维动画场,欢迎有兴趣的同学加入共建,官网服务器相对拉胯,请耐心等候...https://github.com/tingyuxuan2302/cesium-vue3-vite/tree/github...

DR模式 LVS负载均衡群集

DR模式 LVS负载均衡群集 部署共享存储关闭防火墙和核心防护下载,开启nfs服务创建共享文件夹和测试用的静态网页文件编辑nfs配置文件发布共享查看共享 配置 tomcat 服务器关闭防火墙和核心防护安装tomcat配置 tomcat 多实例 配置 nginx 服务器关闭防火墙和核心防护配…...

mysql复制表结构和数据

1.实例 #复制一张和test 一摸一样的表结构 CREATE TABLE test_one like test#往复制的表结构中复制数据 INSERT INTO test_one SELECT * FROM test#两者一起使用相当于 cv大法2.总结 完全实现了表结构和数据的复制,但是两条sql 得分两步执行 2.1 复制表结构 #复制…...

MFC扩展库BCGControlBar Pro v35.1新版亮点:改进网格控件性能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.1已全新发布了,这个版本改进网格控件的性能、增强工具栏编辑器功能等。 …...

Python列表操作详解

1 列表的基本概念 在Python中,列表是一种非常常用的数据结构,它可以存储任意类型的元素,并且支持多种操作。下面将详细介绍Python列表的各种操作。 2列表的操作方法 2.1创建列表 Python可以直接使用方括号[]来创建一个空列表。 示例&am…...

畅捷通T+对接聚水潭成功实施案例

在当今竞争激烈的商业环境中,企业数字化转型已成为提升竞争力的关键。广东某实业有限公司的数字化规划,目前财务系统使用的畅捷通T,电商系统使用的聚水潭。目前两个系统数据割裂导致各个部门的协同效率低下。通过借助轻易云数据集成平台&…...

leetcode-312. 戳气球

题目描述 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代…...

程序设计基础I-实验7 函数(编程题)

7-1 sdut- C语言实验—计算表达式 计算下列表达式值: 输入格式: 输入x和n的值,其中x为非负实数,n为正整数。 输出格式: 输出f(x,n),保留2位小数。 输入样例: 3 2输出样例: 在这里给出相应的输出。例如: 2.00 …...

使用3080ti配置安装blip2

使用3080ti运行blip2的案例 本机环境(大家主要看GPU,ubuntu版本和cuda版本即可):安装流程我最后安装的所有包的信息(python 3.9 )以供参考(environment.yml): 本机环境&a…...

vue3组件通信之defineEmits

一、defineEmits是什么&#xff1f; defineEmits 是vue3提供的方法&#xff0c;又称为自定义事件&#xff0c;不需要引入可以直接使用&#xff0c;用于子组件与父组件通信。 二、使用样例 1.父组件代码 代码如下&#xff08;示例&#xff09;&#xff1a; <template>…...

rust gio-rs 挂载 samba 磁盘

linux 使用的 gio 管理工具 这个工具如下 这是 gio 的rust版本 https://crates.io/crates/gio 可以用 rust 语言实现下面所有操作 gio mout 挂载 samba 如下 //https://valadoc.org/gio-2.0/GLib.MountOperation.html pub async fn gio_mount(uri路径:&str, 用户名:Opti…...

幸存者游戏(类)

#include <iostream> #include <graphics.h> #include <stdio.h> #include <conio.h> #include <vector> #include <string> using namespace std; int idx_player_anim 0; const int player_anim_num 6;//这里要把动画帧数定位const i…...

SQL 中UPDATE 和 DELETE 语句的深入理解与应用

在 SQL 中&#xff0c;UPDATE和DELETE语句是用于操作表数据的重要工具&#xff0c;它们允许我们对已存在的数据进行修改和删除。 一、UPDATE 语句 &#xff08;一&#xff09;基本语法 UPDATE语句的基本语法如下&#xff1a; UPDATE table_name SET column1 value1, colum…...

在 Windows 上查找和结束占用特定端口占用程序,并杀死

在 Windows 上查找和结束占用特定端口&#xff08;如 9003&#xff09;的程序&#xff0c;你可以使用以下步骤&#xff1a; 步骤 1&#xff1a;找到占用端口的进程 ID (PID) 打开命令提示符&#xff08;按 Win R&#xff0c;输入 cmd&#xff0c;然后按回车&#xff09;。输…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...