一、该问题的重现步骤是什么?
物联网设备有上万台,会间隔半小时属性上报液位,温度,开关状态多个参数,用户想在PC端和移动端分别查看这些实时数据,前端页面是要做分页的,那么本页的设备列表中,这些实时数据前端如何拿到?我们自己想的解决:
方案1:用户每次搜索,分页后,前端先取消订阅上次,再实时订阅本次搜索结果中的设备,这样感觉会比较复杂。
方案2: 像blade-broker里data的execute那样,由后端再新建一个固定mqtt主题用于跟前端交互?使用websocket将收到的数据全部推给前端,由前端再根据devicename自行过滤?感觉前端要处理的数据量太大。
方案3:前端调后端webapi查时序库,得到的不算实时数据;
方案4:前端调后端webapi,由后端发属性查询,再从时序库里查?
二、你期待的结果是什么?实际看到的又是什么?
有一个合理的解决方案,让前端能看到实时数据。实际没有想到好办法。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
物联网平台,windows
四、请提供详细的错误堆栈信息,这很重要。
无
五、若有更多详细信息,请在下面提供。
不建议取真实的实时数据,这样服务器压力很大。
建议这样做:
1. 默认获取时序库内的最新数据,并且也可以查询历史数据并分页。具体的api可以参考:
2. 如果一定要实时数据,可以在先查询了时序库内最新数据后,再通过调用broker的一个api,通过mqtt与设备端交互,等待设备监听mqtt后上报的最新数据。这样web页面是无需连接mqtt的,因为broker用mqtt与设备端交互后,设备会自己上报,上报后最新的数据自然就进入了时序库,此时只需要再次通过查询时序库api更新web端展示数据即可。
如果一定要实时数据,可以在先查询了时序库内最新数据后,再通过调用broker的一个api,通过mqtt与设备端交互,
--------------------------------------------
1. broker的一个api,是哪个api,有没有接口链接?
2. 当使用nodered读modbus,与前端交互时,因为无法像设备管理那样进行设备属性绑定,也只能是组态刷api接口查influxdb的形式?如果点位数在500,得在组态界面上人工配置500次?发mqtt的话前端如何订阅也不好实现,写500行代码进行订阅主题?或者在界面上人工配置500次?
1. 在broker自己定义api,进行mqtt的属性下发或者命令下发
2. 别说500个属性了,哪怕是5w个属性,你也得手动绑定,不然无法知道哪个属性设计在组态的哪个位置,哪个开关又绑定了哪个属性。
我的想法是通过调设备接口之类的,循环解析出设备名称再订阅对应的 mqtt主题,不至于都纯人工来做,或者有excel之类的能批量导入,因为工控类的点位比较多,界面操作不方便。
扫一扫访问 Blade技术社区 移动端