物联网平台前端如何分页展示设备实时值?

Blade 未结 2 162
six_six_2005
six_six_2005 2024-10-18 17:27

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

  1. 物联网设备有上万台,会间隔半小时属性上报液位,温度,开关状态多个参数,用户想在PC端和移动端分别查看这些实时数据,前端页面是要做分页的,那么本页的设备列表中,这些实时数据前端如何拿到?我们自己想的解决:

    方案1:用户每次搜索,分页后,前端先取消订阅上次,再实时订阅本次搜索结果中的设备,这样感觉会比较复杂。

    方案2: 像blade-broker里data的execute那样,由后端再新建一个固定mqtt主题用于跟前端交互?使用websocket将收到的数据全部推给前端,由前端再根据devicename自行过滤?感觉前端要处理的数据量太大。

    方案3:前端调后端webapi查时序库,得到的不算实时数据;

    方案4:前端调后端webapi,由后端发属性查询,再从时序库里查?



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

有一个合理的解决方案,让前端能看到实时数据。实际没有想到好办法。


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

物联网平台,windows


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

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

2条回答
  •  admin
    admin (楼主)
    2024-10-18 17:32

    不建议取真实的实时数据,这样服务器压力很大。

    建议这样做:

     1. 默认获取时序库内的最新数据,并且也可以查询历史数据并分页。具体的api可以参考:

    https://openapi.javablade.com/doc.html#/OpenApi%E6%A8%A1%E5%9D%97/%E8%AE%BE%E5%A4%87%E6%A8%A1%E5%9D%97/queryDevicePropertyLatest


    https://openapi.javablade.com/doc.html#/OpenApi%E6%A8%A1%E5%9D%97/%E8%AE%BE%E5%A4%87%E6%A8%A1%E5%9D%97/queryDevicePropertyHistory


     2. 如果一定要实时数据,可以在先查询了时序库内最新数据后,再通过调用broker的一个api,通过mqtt与设备端交互,等待设备监听mqtt后上报的最新数据。这样web页面是无需连接mqtt的,因为broker用mqtt与设备端交互后,设备会自己上报,上报后最新的数据自然就进入了时序库,此时只需要再次通过查询时序库api更新web端展示数据即可

    作者追问:2024-10-18 17:32

     如果一定要实时数据,可以在先查询了时序库内最新数据后,再通过调用broker的一个api,通过mqtt与设备端交互,

    --------------------------------------------

    1. broker的一个api,是哪个api,有没有接口链接?

    2. 当使用nodered读modbus,与前端交互时,因为无法像设备管理那样进行设备属性绑定,也只能是组态刷api接口查influxdb的形式?如果点位数在500,得在组态界面上人工配置500次?发mqtt的话前端如何订阅也不好实现,写500行代码进行订阅主题?或者在界面上人工配置500次?

    回答: 2024-10-18 17:32

     1. 在broker自己定义api,进行mqtt的属性下发或者命令下发

     2. 别说500个属性了,哪怕是5w个属性,你也得手动绑定,不然无法知道哪个属性设计在组态的哪个位置,哪个开关又绑定了哪个属性。

    作者追问:2024-10-18 17:32

    我的想法是通过调设备接口之类的,循环解析出设备名称再订阅对应的 mqtt主题,不至于都纯人工来做,或者有excel之类的能批量导入,因为工控类的点位比较多,界面操作不方便。

提交回复