Neuron及时读tag的设计问题

应用场景描述:
1、在Neuron中添加1个modbus tcp 的Node,创建1个Group,interval设置为:3600000(读取周期较长),但实际上设备数据一直在变化;
2、应用系统的用户,通过http api或mqtt api进行读tag操作。通过Neuron无法读取到设备实时值,仅读到上次interval的值。

期望结果:
1、主动上报数据时,可以按照interval的周期上报;
2、http api或mqtt api 读tag的时候,需要访问一次设备,获取到最新值;

目前的设计是 发读 api 会返回最近读到的值并不发新的读命令。

在很多对能耗比较敏感的设备上,有这种场景。例如:热力的住户热表,一般就是一天主动上报2次。但平台业务人员,可以随时手动下发指令,实时读取设备数据的。

Neuron有什么办法能解决这种场景问题吗?

什么协议?

CJ-T188-2004_户用计量仪表协议,但其实和什么协议没关系。。

有关系的,比如这个协议,主从模式neuron做为主站,设备不能主动上报。
驱动可以控制启停,所以操作员控制读写是可以实现的。
对于主动上报,你需要确认清楚角色再进行开发。

http api或mqtt api 请求过来的时候,由Neuron对设备发出指令。这个就是您刚刚说的:neuron做为主站的情况。。

如果neuron作为从站的时候,那就只能上报最近的历史数据了。

后续neuron作为主站的时候,接收到api请求,就去发起设备操作吗??

neuron 目前不支持做从站。
对于你的需求可以这样做:
可以在开源仓库基础上开发,用开发出来支持从站的插件接收设备主动上报的数据,做主站的插件平时关闭,需要读取的时候再启动。

主站,也不支持吧??

目前没支持这个协议

modbus tcp 主站也不支持吧?

neuron modbus 支持的就是主站啊,你是指支持什么?

neuron modbus 支持的就是主站,但不支持下面这个情况:

通过http api或mqtt api对neuron进行读tag操作,无法读取到设备实时值,仅读到上次interval的值。

最开始有回复这个问题,目前设计是这样,按固定频率读。

后面会对这种情况进行改进吗?

api 已经支持,
/api/v2/read 参数 “sync” 设置为 true
https://neugates.io/docs/zh/latest/api/rw.html

我刚刚做了测,modbus-tcp 插件,我用/api/v2/read 参数 “sync” 设置为 true 。

但返回键结果为:error: 3018,
查了文档:

  • 3018 插件不支持同步读

如何让modbus-tcp的这个node中的tag支持 同步读呢??

我看看新写个主题吧。