物联网平台

Blade 未结 2 143
six_six_2005
six_six_2005 剑圣 2024-10-12 18:26

一、该问题的重现步骤是什么?

1. node red不论源码启动,还是docker均报错,无法连接mysql和mqtt,  已经按照官方文档指导修改了settings.js,也删除了user下的临时settings.js文件,也重新编译了。如果settings.js中的mysql的密码写错,会正确提示密码错误,并会附上IP地址,说明配置是生效;

2. 假如我定义了10个属性,设备只上报其中8个是不是可以,报警时上报其中3个。平台下发属性设置时每次只发一个属性,请问平台对属性数量没有严格校验吧,只校验属性名大小写?还是说每次必须要按配置的10个,一个都不能少?

3.


二、你期待的结果是什么?实际看到的又是什么?

期望node red能正常使用,不确认报错是否有影响


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

windows10, mac均做了测试

四、请提供详细的错误堆栈信息,这很重要。

image.png

image.png

image.png

image.png


五、若有更多详细信息,请在下面提供。

2条回答
  • 2024-10-12 22:46

     1. 数据库有默认的node-red配置,mysql和mqtt的配置都有,而默认配置不一定能在你的机器上连接成功,所以会报错。你可以先把edge表的数据删掉再启动看看,如果没再报错就说明是默认流程的配置连接问题了。你打开对应配置修改成你本地可连接的地址账号便可。

     2. 每次可以只上报1个或n个,可以不用每个都上报。只是比如10个字段,只上报1个的话,那一行记录对应的其他9个字段都是空了而已。平台对属性数量不会做校验,只会对属性本身的字符、类型进行校验。

    0 讨论(0)
  • 2024-10-14 14:12

    一。node red的mysql连接报错 已经解决

    二。属性上下限该定义在哪里?属性定义中的min,max,平台是否会做校验或触发报警?比如:每个设备有液位实时值这么一个属性,那液位报警的上下限,我是定义到物模型的另外2个新属性,还是放到实时值的min ,max里?我想让设备只上报实时值,通过属性查询和属性设置来获取或更改其当前的配置参数上下限,那么上下限是放到配置主题里,还是放到属性里处理?我想让时序数据库每条记录只保存当前值,不需要每条都保存上下限,也不希望时序数有这2个字段,但是值一直为空

    三、报警走的“事件上报”存入时序库,有没有报警历史记录的查询功能?设备上报了报警在页面哪里会有弹窗提醒用户有报警呢?
    四、如果我有30个modbus设备要查询,每个都是每秒查询一次,在nodered里有没有简单配置的办法?还是说要拖30个modbus getter setter出来? 每个对应一台设备配置,是支持高并发的吧?

    作者追问:2024-10-14 23:37

    最大最小值是配置的时候创建,连带属性一起,不需要单独再创建一个最大值属性和最小值属性。创建属性的时候配置好最大最小值,就可以从物模型获取到

    CleanShot20241014233019@2x.png


    这个物模型就是针对属性的描述,是给设备开发人员看的,正常逻辑就是在设备端进行控制,保证上传的值在这个区间内。而某些情况设备无法控制具体的值,但是你又设置了最大最小值,那么一般的情况是推荐两种方式:一、通过node-red或者其他边缘网关监听,然后配置最大最小值区间,在上报到服务器之前解析校验,通过后才上报到服务器 。二、自己写监听器,针对特定的设备统一判断最大最小值,如果超过区间就拒绝或者报警,逻辑可以自己操作:https://iot.bladex.cn/feature/link/mqtt.html 但是不推荐从服务器底层逻辑统一判断,你要考虑到每来一条数据就要去查一次库或者缓存,然后再进行判断,那这样对服务器并发带来太大压力了,服务器一般都是不做底层强校验的。时序库也主要是接收设备上传的真实数据而已。

    ====

    告警有专门的topic,你们如果需要走通知,可以拓展一下,调用api就能做推送。

    告警监听类:https://center.javablade.com/blade/BladeX-Links/src/branch/master/blade-service/blade-broker/src/main/java/org/springblade/mqtt/broker/data/function/event/EventEventPostFunction.java#L69

    消息推送:https://iot.bladex.cn/feature/push/intro.html

    推送api:https://iot.bladex.cn/feature/push/template.html#%E4%B8%89%E3%80%81api%E8%B0%83%E7%94%A8

    作者追问:2024-10-14 23:43

    如果你的modbus设备是每个地址都不同,那node-red就需要每个配置一下,建议每个设备创建一个流程。如果地址不同参数名一样,则可以创建好一个导出配置再导入到新流程,改改连接地址便可。

    node-red流程配置多个设备并发没问题的。当然重要场景,工业化重要设备,你单独配备一个几百块的边缘网关盒子给一个重要设备,一个盒子只负责一个大型设备是更推荐的,这样也不会有线上node-red服务器网络连接、延时的问题存在。

    回答: 2024-10-15 10:14

    因为同款设备的上下限是不一样的,物模型是产品统一的min max,是个固定值,但是实际设备的上下限需要能动态可配置,举例:同款设备,设备一的液位上限需要10cm,设备二的上限需要配置成12cm,需要能远程配置具体某个设备的报警上下限,如果不放到属性字段就无法实现吧?

    作者追问:2024-10-15 10:20

    如果需要动态可配,那这个min和max就是实打实的属性字段了,你需要单独创建这两个字段。然后通过配置字段,给设备获取。

    回答: 2024-10-15 10:31

    告警监听类:https://center.javablade.com/blade/BladeX-Links/src/branch/master/blade-service/blade-broker/src/main/java/org/springblade/mqtt/broker/data/function/event/EventEventPostFunction.java#L69

    --------------------
     在页面显示所有的报警信息,以及收到报警后页面有弹窗,平台是不是都没有实现,都要自己开发?要从时序数里写个查询接口,再在前端做弹窗和历史记录展示?

    作者追问:2024-10-15 10:46

    是的,目前还没有,需要自己拓展开发一下

    回答: 2024-10-16 12:22

    原计划直接在物联网平台 上直接写业务,经过测试,发现物联网平台没有redis,token也未缓存,不适合作业务,因此准备单独用blade-boot +saber来开发业务,业务与物联网的接口如何互相调用?总不能所有接口都放开吧,不安全;也不能固定一个帐户来调用接口吧?希望能提供一个示例,另外,这个也不算单点登录吧?

    回答: 2024-10-16 12:27

    业务上是一个商户绑定多台设备,每个登录帐户可以看到有权的多个商户,没有token , 无法获取当前用户信息,就不好实现根据用户判断他有什么权限,能看哪些设备。

    作者追问:2024-10-16 12:32

    月底会发物联网平台和bladex商业版的无缝集成方案。到时候物联网平台的blade-server服务就是bladex-boot本身。你可以直接在上面开发业务功能。

    回答: 2024-10-16 15:17

     那前端版本是否一致,迁移需要修改哪些?目前物联网平台前端缺少较多,缺少业务字典,机构管理缺少类型字段,用户管理缺少部门选择

    作者追问:2024-10-16 15:24

    会出方案前后端均迁移,新的问题请发新帖,每个贴只负责回一个问题

    0 讨论(2)
提交回复