- 博客(37)
- 收藏
- 关注
原创 IDEA :物联网ThingsBoard-gateway配置,运行Python版本,连接thingsboard,接入 MQTT 设备
准备阶段(教程只针对本地操作,未涉及虚拟机环境)
2025-04-10 14:41:48
3220
4
原创 UniApp基于xe-upload实现文件上传组件
背景:开发中经常会有上传附件的情况,但是找了一圈没有满意的组件,无意间看到xe-upload,满足我需要上传图片和视频的需求,直接使用示例项目开始二次开发my-file-upload。感觉好用的话,给xe-upload的作者一个好评。3.根据文件名称创建file文件内容。2.对video类型文件的处理。
2025-04-10 14:34:27
1298
4
原创 JS实现Table表格数据跑马灯效果
工作中会经常碰到数据可视化看板需求,表格是最常用的展示方式,数据量大时会用到超出高度自行滚动,跑马灯效果展示是最好的,一般实现跑马灯效果会使用插件,但是会用到许多样式不协调问题,文章主要是用少量代码实现表格数据跑马灯效果。
2024-12-28 10:11:57
553
原创 JeecgBoot自定义多选组件JCheckBtnGroup
Jeecgboot自定义dict多选组件,官方文档JDictSelectTag只支持单选,也有可用的复选框组件JCheckbox组件,不是很喜欢复选框的样式,就自定义一个组件。字典中配置颜色,并在componrntProps中设置useDicColor: true,选中后会显示对应的颜色。
2024-09-13 10:25:30
533
原创 [ant-design-vue: Table] column.slots is deprecated. Please use v-slot:headerCell v-slot:bodyCell
如上修改后,警告解决。在使用表格插槽时报错。
2024-07-01 15:23:27
1026
1
原创 关于printJs预览时样式失效问题
设置了分页,用法就是在需要分页的地方加一个<h1></h1>即可。printJs是无法将通过class="***"的样式进行渲染的,需要将其写在行内样式style="***"中才可以,另外还可以在,css中控制其样式,比如。
2024-07-01 15:16:46
994
原创 使用函数查找Excel两个表之间重复的项
在日常使用Excel中,经常会有单表中的查重,以及多表查重,单表查重可以使用筛选重复项功能。但是多表该怎么查重呢?这时我们看到在Sheet1表中的B列中使用函数后,与Sheet2表中B列重复的数据就被标识为重复。假设在表1中存在两个子表Sheet1和Sheet2;使用函数能很快的解决。
2024-06-25 14:02:21
1615
原创 解决@Autowired注入ApplicationContext后一直为null
applicationContext为null解决。当我添加@Component注解后仍然为null,实现ApplicationContextAware,重写setApplicationContext()方法,从而初始化applicationContext。代码中我没有在A类上加@Component注解。
2024-05-16 10:08:14
514
原创 Thingsboard使用script函数实现点位值数学运算
Thingsboard有现成的换算节点math function,但是在配置中感觉很不习惯。所以自己写一个javeScript函数进行换算。在存储节点save timeseries前,加两个节点originator fields和script。很多时候点位需要进行换算后,才能使用,可是在存储后再进行计算很麻烦,考虑在存储前进行计算。originator fields用来将设备id带入元数据,script写具体的换算逻辑。
2024-04-26 16:34:51
318
原创 文档全局检索功能,匹配结果高亮显示
自定义全局检索组件,实现查找文档标题,文档内容等内容;其中eventBus为自定义的事件总线,主要是从其他地方路由至此页面时,对应的调用事件,执行自定义方法,我是在其他页面调用后,跳转页面达到选中对应菜单操作;输入搜索条件后从搜索框中悬浮显示结果,其中一级菜单和子菜单使用了分组;匹配的文本进行高亮显示。刚开始的页面类似树结构,但是使用的是a-menu+a-menu-item。限定悬浮区域高度,超出高度显示滚动条。
2024-04-26 15:57:05
378
原创 Ant Design4.2.0 Tour漫游式引导组件使用
如果目标页面组件不便于直接暴露方法,或者需要在多个组件间共享调用逻辑,可以使用事件总线来实现跨组件通信。我的需求是在我的统一入口管理多个页面的引导流程,并根据路由页面调用页面中的handleOpen方法,使用。点击对应的操作后,路由至该页面,并打开对应的引导,且直接点击对应菜单页面不会调用此方法打开引导。如果希望打开页面就显示,直接在页面中调用handleOpen方法,传入参数true即可。钩子中监听一个特定事件,并在事件触发时调用。识别不到a-tour,在代码中引入。然后,在目标页面组件的。
2024-04-23 14:58:53
1278
原创 Thingsboard自定义设备不活动超时时间和状态监测间隔时间
虽然设置了是1分钟响应,但是在断开设备后,也不是完全在1分钟内,active的值就变为false,设备断开后,还会有一定活动时间,当不活动后1分钟才会修改active的值,实测在3-4分钟左右会自动更新状态。主要控制设备的服务端属性active;默认的十分钟监测离线,导致设备离线十分钟后页面才显示离线,active的值一直为true,我们可以自定义时间,比如修改为60秒。active = 当前时间 < (最后活动时间 + 不活动超时时间)
2023-08-01 10:47:46
979
原创 JeecgBoot多租户功能实现租户/机构/部门/角色权限控制
开启多租户需要修改MybatisPlusSaasConfig类,将OPEN_SYSTEM_TENANT_CONTROL值改为true,需要进行租户隔离的表通过add方法添加到List中。在租户管理下新增租户并选择套餐包,套餐包中的就是该租户拥有的所有权限,租户可以再给下面的用户分配这些权限中的一部分权限。用部门管理员账号登录,在我的部门里添加用户,添加部门角色,授权;这里的角色,我们新增了一个租户管理员的角色,给他授予一些必要的权限。在部门管理中新建部门,并为每个部门分配权限。在部门管理员下创建用户。
2023-06-20 11:09:43
4804
8
原创 org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: 发现了以元素 ‘{“http://www.hibernate.org/xsd/orm/hb
我用的是Jeecgboot,原因是建表时id字段不在第一行。
2023-06-16 19:02:04
522
原创 Thingsboard数据库表之租户/租户管理员/客户/用户解析
这里可以理解为,租户管理员其实是与用户同级别的存在,只是权限比较高,可能会比较难理解。租户管理员与用户存储在同一张表ts_user中,用customer_id做区分。而客户是高于租户管理员和客户的,客户直属于租户。当设备未分配给任何客户时,默认均属于系统默认客户,客户id。id对应租户管理员/客户/用户表中的tenant_id字段。下一层为租户管理员。
2023-06-09 14:06:59
1179
原创 Thingsboard数据库存储遥测时序数据存储结构详解
ts_kv_latest和ts_kv以entity_id和key_id作为复合查询条件,以不同的entity_id去区分相同的key_id属于哪个设备。Thingsboard存储遥测数据的表主要是分区表ts_kv,按月份分区存储,每一个月生成一个分区表,存储的是全部的每分每秒的数据。key为前端显示的遥测数据键名,key_id为Thingsboard为每一个遥测键名生成的自增的对应id。0和1在ts_kv_dictionary表中对应的key_id为54和55。数据对应0的值为30,1的值为31。
2023-06-08 14:38:58
1923
原创 PostgreSQL使用时间类型datetime报错type “datetime“ does not exist解决办法
PostgreSQL日期字段类型不支持datetime类型,可使用time/timestamp/timestamptz/timetz替代。
2023-06-06 09:08:38
2386
原创 JEECG-Boot使用(二)Thingsboard字段类型(UUID/JSONB)不匹配处理
在JEECG-Boot工程中,修改生成的实体类,将主键id@TableId(type = IdType.UUID),改为@TableId(type = IdType.INPUT),属性类型设置为java.util.UUID,数据库中其他属于uuid类型的字段也分别设置为java.util.UUID,属于jsonb的数据设置为java.lang.Object类型,并写deviceData的setDeviceData方法,将传入的Object类型数据通过JSON.parse()方法转为json格式。
2023-05-29 18:53:25
604
原创 JEECG-Boot使用(一)PostgreSQL替换Mysql数据库
最近考虑用vue3去重写Thingsboard项目前端,替换Angular技术,所以来研究这个JEECG-Boot低代码平台。在application-dev.yml文件将mysql配置注释,datasource下加入PostgreSQL配置。如果有需要将mysql表转为PostgreSQL表的,可以使用Navicat--工具--数据传输,选择表格传输。前期准备工作这边不讲了,官网有环境配置文档,主要讲一下如何替换mysql数据库,改为PostgreSQL。从官网下载前后端源码。
2023-05-27 14:15:14
1929
原创 Thingsboard编译 Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:yarn (yarn pkg
意思是系统繁忙,需要手动复制一个thingsboard-web-ui-win.exe文件到thingsboard\msa\web-ui\target\package\windows\bin\目录下,并重命名为tb-web-ui.exe。c盘用户下的.pkg-cache\v3.4文件夹下没有fetched-v16.15.0-linux-x64和fetched-v16.15.0-win-x64文件,可以在网盘链接中获取。一定不要没编译就在IDEA打开项目,在cmd窗口编译完再打开。如果不存在应该报这个。
2023-05-25 16:15:42
2010
5
原创 Thingsboard通过Tb-gateway网关+MQTT+Emqx下发数据至设备RPC请求实战
此处的${params}就是msg中的params。最终Thingsboard传到设备的也只有这个params(变更后的值),method是做判断操作。随后在抽象类AbstractRpcController的HandleDeviceRpcRequest方法中get此属性,加入msg中。因为我需要请求中携带Id,所以在Tb源码的ToDeviceRpcRequestBody中加入Id属性。在tb_gateway中mqtt.json配置中自己的serverSideRpc配置。最终输出结果即为我们想要的格式。
2023-05-22 14:03:34
2116
3
原创 PostgreSQL服务总是找不到问题
如果服务中有PostgreSQL,但是提示 服务找不到指定的文件。在使用PostgreSQL时,总是会碰到服务丢失,或者服务找不到情况。先把服务删掉,重新注册。然后右键服务,启动服务。改为你的服务安装路径。
2023-05-22 10:57:30
1669
1
原创 浏览器Js脚本获取Json键值方法
最近操作Thingsboard规则链Rpc功能时,需要写JS脚本,获取出Json中的key,和value,浏览器总是报错。使用Object.values()报错。然后使用.map()实现。
2023-05-22 08:59:13
374
1
原创 Navicat连接Mysql报错:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
忘记Mysql数据库密码,使用Navicat连接时总会报错,所以在这里记录一下。1.首先用管理员身份运行命令提示符,输入 net stop mysql 停止mysql服务。3.运行完不要关闭此窗口。2.cd 至mysql的bin目录下,输入如下命令,跳过密码进入mysql。4.进入mysql数据库,重新设置密码。输入密码处,直接回车。5.重新启动mysql。
2023-05-17 15:05:25
1550
2
原创 kibana启动时报错“No Living Connections”解决办法
运行elasticsearch后,启动kibana报错“No Living Connections”解决办法
2022-07-27 20:08:00
2999
空空如也
Thingsboard编译问题
2023-04-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人