使用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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442570.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9-贪心算法

PDF文档下载:LeetCode-贪心算法-java 参考:代码随想录 题目分类大纲如下: 贪心算法理论基础 什么是贪心? 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心的套路(什么时候用贪心&#xff…

C++ STL容器(五) —— priority_queue 底层剖析

这篇来讲下 priority_queue,其属于 STL 的容器适配器,容器适配器是在已有容器的基础上修改活泼限制某些数据接口以适应更特定的需求,比如 stack 栈使数据满足后进先出,queue 队列使数据满足先进先出,其都是在已有容器上…

转型AI产品经理需要掌握的硬知识、经理能力模型和常见AI概念梳理

近几年,从亚马逊, Facebook,到谷歌,微软,再到国内的BAT,全球最具影响力的技术公司都将目光转向了人工智能( AI )。2016年 AlphaGo 战胜李世石,把公众的目光也聚集到了人工…

哪些因素会影响PMC对生产质量问题的响应速度?

在制造业中,生产物料控制(PMC)扮演着至关重要的角色,它负责协调生产计划、物料采购、库存管理和生产进度等多个环节,确保生产活动能够顺利进行。然而,面对生产过程中可能出现的各种质量问题,PMC…

详解 PDF 转 JPG:简单操作,高效转换

如今,众多软件都已具备将PDF转换为JPG的功能,所以pdf怎么转换成jpg图片已经不难解决了吧。接下来,我想分享几款依然保存在我电脑中,且非常实用的PDF转JPG工具给大家。 1.福昕PDF转换大师 链接一下>>https://www.pdf365.cn…

C语言基础之结构体

今天我们来讲讲C语言基础的最后一个知识点了 —— 结构体。不知道大家对前面的C语言基础的知识点掌握的怎么样了呢?下面我们就开始讲解结构体的相关知识点吧! 什么是结构体呢?或者说结构体有什么作用呢?对于复杂对象来说&#xff…

盘点2024年4款打工人都在用的PDF软件。

PDF 软件在现代的办公或者是学习当中的应用非常广泛,已经成了很多人的必备工具。因为PDF 文件具有跨设备、跨系统的优势,所以在很多设备上都可以打开浏览。如果有了PDF 编辑软件,查看,编辑,分享也会变得更加方便简单&a…

四、Python基础语法(数据类型转换)

数据类型转换就是将一种类型的数据转换为另外一种类型的数据,数据类型转换不会改变原数据,是产生一个新的数据。 变量 要转换为的类型(原数据) -> num int(28) 一.int()将其他类型转换为整型 1.整数类型的字符串转换为整型 num1 28 print(type…

DAMA数据管理知识体系(第9章 文件和内容管理)

课本内容 9.1 引言 概要 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理[1]。它的重点在于保持文件和其他非结构化或半结构化信息的完整性,并使这些信息能够被访问。业务驱动因素 法规遵从性要求 法律法规要求组织保…

每日OJ题_牛客_平方数_数学_C++_Java

目录 牛客_平方数_数学 题目解析 C代码1暴力 C代码2数学 Java代码数学 牛客_平方数_数学 平方数 (nowcoder.com) 描述: 牛妹是一个喜欢完全平方数的女孩子。 牛妹每次看到一个数 x,都想求出离 x 最近的完全平方数 y。 每次手算太麻烦,…

LeetCode讲解篇之322. 零钱兑换

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以使用动态规划解决这道题,我们首先定义一个数组,数组中第i个元素表示组成金额 i 的最少硬币个数 我们遍历数组的1 ~ amount号位置,对coins进行遍历,查找选…

Chromium 搜索引擎功能浅析c++

地址栏输入:chrome://settings/searchEngines 可以看到 有百度等数据源,那么如何调整其顺序呢,此数据又存储在哪里呢? 1、浏览器初始化搜索引擎数据来源在 components\search_engines\prepopulated_engines.json // Copyright …

【C语言刷力扣】1678.设计Goal解析器

题目: 解题思路: 遍历分析每一个字符,对不同情况分别讨论。 若是字符 G ,则 res 中添加字符 G若是字符 ( ,则再分别讨论。 若下一个字符是 ), 则在 res 末尾添加字符 o若下一个字符…

【CSS in Depth 2 精译_045】7.1 CSS 响应式设计中的移动端优先设计原则(上)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

分布式锁--redission 最佳实践!

我们知道如果我们的项目服务不只是一个实例的时候,单体锁就不再适用,而我们自己去用redis实现分布式锁的话,会有比如锁误删、超时释放、锁的重入、失败重试、Redis主从一致性等等一系列的问题需要自己解决。 当然,上述问题并非无…

刷题 二叉树

二叉树的核心思想 - 递归 - 将问题分解为子问题 题型 递归遍历迭代遍历层序遍历 bfs:队列各种递归题目:将问题分解为子问题二叉搜索树 - 中序遍历是递增序列 TreeNode* &prev 指针树形dp 面试经典 150 题 - 二叉树 104. 二叉树的最大深度 广度优…

DDD简介

概述 传统的数据驱动开发模式,View、Service、Dao这种三层分层模式,会很自然的写出过程式代码,这种开发方式中的对象只是数据载体,而没有行为,是一种贫血对象模型。以数据为中心,以数据库ER图为设计驱动&a…

JavaSE - 基础语法

01 背景知识补充 ① Java统治了后台服务器的开发,比如京东,淘宝网站的后台服务器就是使用的Java进行开发的 ② Java之父:詹姆斯高斯林 ③ Java由sun公司研发,现在属于Oracle公司 02 注释 ① Java的注释有三种:单行…

快速启动工具 | Biniware Run v7.1.0.0 绿色中文版

Biniware Run是一款便携式的Windows生产力工具,旨在为用户提供快速访问其喜爱的网站地址、文件和文件夹的便捷方式。这款软件的特点在于其易用性和高度可定制性。用户可以通过简单的拖放操作,将网址、文件或文件夹添加到软件中,从而快速访问。…

网络层协议 --- IP

序言 在这篇文章中我们将介绍 IP协议,经过这篇文章的学习,我们就会了解运营商到底是如何为我们提供服务的以及平时我们所说的内网,公网到底又是什么,区别是什么? IP 地址的基本概念 1. IP 地址的定义 每一个设备接入…